如何配置CloudFront使用两个不同区域的ALB(主区域与灾备区域)
CloudFront搭配双区域ALB实现主备切换的解决方案
核心实现思路
CloudFront自带的**源组(Origin Group)**功能可直接实现主备源的故障切换,配合健康检查规则,就能在主ALB返回5xx错误时自动切换至灾备ALB。结合你已有的R53健康检查配置,可搭建双层兜底的高可用架构。
具体配置步骤
创建CloudFront自定义源
分别添加两个自定义源,源域名填写主区域、灾备区域ALB的公网域名;若为私有ALB,需额外配置Origin Access Control(OAC)授权CloudFront访问。配置源组及健康检查
- 新建源组,将主ALB设为主源,灾备ALB设为备用源。
- 开启源组健康检查:
- 检查路径:填写ALB上能稳定返回200的健康端点(比如
/health,需确保后端服务已配置该接口)。 - HTTP方法:选择
GET。 - 预期响应码:设置为
200。 - 调整检查间隔、超时时间(如间隔30秒、超时5秒),确保及时检测主源的5xx故障。
- 检查路径:填写ALB上能稳定返回200的健康端点(比如
关联源组到CloudFront分发
在CloudFront分发的默认行为(或对应路径行为)中,将源设置为刚创建的源组。- 关键配置:在行为的错误缓存设置中,把
Error Caching Minimum TTL设为0,避免5xx错误响应被缓存导致切换延迟。
- 关键配置:在行为的错误缓存设置中,把
(可选)结合R53故障转移优化
若需应对主区域完全不可用的极端场景,可保留原有R53配置:- 将主ALB域名设为R53故障转移记录的主记录,灾备ALB为备用记录,开启R53健康检查。
- CloudFront自定义源直接指向R53域名,让R53做第一层故障转移,CloudFront源组作为第二层兜底。
关键注意事项
- 确保ALB安全组允许CloudFront边缘节点访问:可通过AWS提供的CloudFront前缀列表(
com.amazonaws.global.cloudfront.origin-facing)配置安全组入站规则。 - 测试切换逻辑:手动让主ALB返回5xx(比如停止后端服务),验证CloudFront是否自动切换至灾备ALB;恢复主源后,确认是否自动切回。
- 避免缓存干扰:若业务有静态资源缓存,给
/health路径单独配置不缓存的行为,防止健康检查响应被缓存。
内容的提问来源于stack exchange,提问作者Raj
相关产品推荐
相关产品推荐

