开启Cross-zone load balancing后,经典负载均衡器仍报实例AZ未配置路由错误?
经典负载均衡跨区流量分发报错分析与解决
核心误区澄清
你对Cross-zone load balancing的理解存在偏差:这个功能并非让负载均衡自动覆盖所有可用区的实例,它的作用是:当负载均衡已经配置关联了多个可用区时,让每个AZ内的负载均衡节点可以将流量分发到其他AZ的已注册实例,最终实现流量在所有关联实例间均匀分配。
报错原因
你遇到的报错Instance is in the EC2 Availability Zone for which the load balancer is not configured to route traffic to.,核心原因是:
- 新创建的经典负载均衡未将us-east-1c纳入允许路由流量的可用区配置。CLB默认只会在创建时指定的AZ部署节点,且仅向这些AZ内的已注册实例分发流量。哪怕开启了跨区负载均衡,也无法向未被CLB配置覆盖的AZ中的实例转发流量。
解决步骤
- 登录AWS控制台,进入EC2服务,找到目标经典负载均衡
- 切换到「描述」标签页,点击「编辑可用区」按钮
- 在弹出的配置窗口中,勾选
us-east-1c可用区,保存更改 - 确认us-east-1c内的EC2实例已注册到该负载均衡上
补充说明
- 配置完成后,CLB会在us-east-1c自动部署负载均衡节点,此时跨区负载均衡功能会生效,所有AZ的节点会将流量均匀分发到所有已注册的实例(无论实例处于哪个已配置的AZ)
- 若不想在us-east-1c部署CLB节点,可选方案是:将us-east-1c的EC2实例迁移到CLB已配置的AZ中,或者重新创建CLB时包含us-east-1c可用区
内容的提问来源于stack exchange,提问作者Agrudge Amicus
相关产品推荐
相关产品推荐

