背景与架构基础

AWS 于 2024 年 11 月发布 CloudFront VPC 源(VPC origins)能力,允许 CloudFront 直接连接私有子网内的资源,源站无需公网 IP 与入站公网路径。结合多项 CloudFront 能力,可在边缘层实现多区域双活与高级路由:

  • CloudFront VPC origins:私有连接至 VPC 内资源。
  • Origin Groups:为每个区域定义主、备源,对 GET/HEAD/OPTIONS 在指定错误码、连接异常或超时下自动重试备源。
  • CloudFront Functions:在边缘执行自定义路由逻辑。
  • KeyValueStore(KVS):将流量权重、特性开关等路由配置外置,支持实时调整而无需重新部署函数。

三种路由策略

地理就近路由

针对缓存未命中时的跨区延迟问题,通过 Viewer Request 函数读取 CloudFront-Viewer-Country-Region 头,将源请求导向最近后端区域,降低跨区 RTT。

加权路由

在 KVS 中配置区域流量权重,Viewer Request 函数按权重随机选region,适用于灰度迁移、A/B 测试与按容量分流,权重可实时变更。

会话亲和路由

首请求由函数选 region 并写入自定义头与亲和 Cookie;后续请求依据 Cookie 固定到原 region,避免多区域间状态未同步导致的脏读。优先级为:会话亲和 > 加权(若启用) > 地理(默认)。

与故障转移的关系

函数按路由策略选定 Origin Group,其主源为选定区域,备源位于其他区域。需注意自动故障转移仅覆盖 GET/HEAD/OPTIONS,POST/PUT/DELETE 不重试;高延迟但未报错不会触发转移,可通过调整连接与响应超时阈值将慢源视为失败。

会话 Cookie TTL 权衡

较短 TTL(如 1 小时)利于配置变更后快速重均衡,但可能增加状态会话切换;较长 TTL(如 7 天)一致性强但重均衡慢;不设置 Max-Age 则随浏览器关闭自然重置。Cookie 方案不跨设备、不清 Cookie 失效。

对读者的意义 / 技术解读

对于运维与 SRE,该方案将公网暴露面收敛到零,源站完全私有,符合安全基线;边缘层路由与 KVS 解耦使流量调度具备实时性,适合跨境链路优化与多活容灾。但需明确:CloudFront 原组故障转移对非幂等写请求无效,规划设计时应将写流量限定单区或借助应用层同步,避免依赖边缘重试。会话亲和 Cookie 的局限也提示在移动/多端场景下应补充统一会话标识机制。