如何让单个AMI适配3个可用区 实现Auto Scaling Group跨AZ正常运行
问题排查与解决方案
AMI是AWS区域级资源,和创建它的源实例所在可用区没有绑定关系,你遇到的问题本质是跨AZ子网或网络配置错误,而非AMI本身不支持跨AZ使用,按以下步骤排查即可解决:
1. 排查非eu-west-1a的子网配置
- 检查另外两个AZ对应子网的路由表:确认路由表存在指向互联网网关(IGW)的
0.0.0.0/0路由,无公网路由的实例即使分配公网IP也无法对外通信,自然无法SSH和访问网页 - 检查子网自动分配公网IP属性:如果你的ASG没有手动配置实例分配公网IP,需要确认另外两个AZ的子网都开启了「自动分配公网IPv4」功能,否则实例只有私网IP,无法通过公网访问
2. 排查子网级网络访问控制配置
- 安全组是实例级资源,不会随AZ变化失效,首先确认实例关联的安全组入站规则已放通
22(SSH)、80(HTTP)端口的访问源 - 重点排查另外两个AZ子网关联的网络ACL:网络ACL是子网级资源,默认允许所有出入站流量,如果你曾手动修改过规则,需要确认:
- 入站规则放通了
22、80端口的访问流量 - 出站规则放通了1024-65535临时端口的回包流量
- 入站规则放通了
3. 排查Auto Scaling与负载均衡配置
- 确认ASG的关联子网列表已添加全部三个AZ的子网,没有遗漏非eu-west-1a的子网
- 确认负载均衡的目标组健康检查配置正常:检查健康检查路径、端口、阈值设置是否合理,排除非1a AZ的实例因健康检查不通过被标记为异常、无法接收流量的情况
4. 验证AMI可用性(可选)
如果仍怀疑AMI存在问题,可手动在非eu-west-1a的子网中使用该AMI启动一台调试实例,配置好公网IP和正确的安全组后,直接通过公网IP测试SSH和网页访问,若能正常访问即可完全排除AMI的问题。
内容的提问来源于stack exchange,提问作者HmNoon
相关产品推荐
相关产品推荐

