如何配置Route 53实现EC2主备实例故障自动切换?
主备EC2实例故障转移的Route 53配置方案
核心思路
你已经将两个EC2实例加入ALB后端池,但要实现主实例正常时流量全走主实例,主实例故障时自动切换到备用实例,需要结合Route 53的故障转移路由策略+健康检查来实现,同时要调整ALB目标组的权重避免流量分发冲突。
具体操作步骤
1. 创建Route 53故障转移记录
- 在Route 53托管区中,创建两条对应EC2实例的A/AAAA记录(使用公网IP还是私有IP,根据你的网络架构选择)。
- 路由策略选择故障转移:将主实例的记录设置为「主记录(Primary)」,备用实例的记录设置为「备用记录(Secondary)」。
2. 配置主实例的健康检查
- 为主实例添加自定义健康检查:
- 类型选择HTTP/HTTPS(对应你服务的端口,如80/443),指定健康检测路径(比如
/health,需确保实例正常运行时返回200状态码);如果是无HTTP服务的场景,选择TCP类型检测端口连通性。 - 调整判定阈值:例如连续3次检测失败标记为故障,连续2次成功恢复正常状态。
- 将该健康检查绑定到主实例的Route 53记录上。
- 类型选择HTTP/HTTPS(对应你服务的端口,如80/443),指定健康检测路径(比如
3. 调整ALB目标组权重
- 默认ALB会轮询分发流量到后端实例,这与主备逻辑矛盾,因此需要修改目标组的实例权重:
- 将主实例的权重设为100,备用实例的权重设为0。这样主实例正常时,ALB只会将流量转发给主实例;当Route 53检测到主实例故障后,可直接切换Route 53记录指向备用实例,或通过自动化工具调整备用实例的权重为100。
4. 自动化切换(可选进阶)
- 若要实现完全自动化切换,无需手动调整权重,可以搭建CloudWatch告警+Lambda函数的组合:
- 当Route 53健康检查触发主实例故障告警时,Lambda函数自动将ALB目标组中主实例的权重设为0,备用实例的权重设为100。
- 当主实例恢复健康后,告警触发Lambda函数将权重恢复至初始状态。
关键注意事项
- 健康检查的路径必须是实例上真实有效的检测端点,避免因无效路径导致故障误判。
- 如果使用私有IP,需确保Route 53的私有DNS与你的VPC关联,且健康检查能在VPC内部访问到实例。
- 务必进行故障测试:手动停止主实例,观察流量是否自动切换到备用实例,验证服务可用性。
内容的提问来源于stack exchange,提问作者vvv
相关产品推荐
相关产品推荐

