提问人:Joe 提问时间:5/25/2021 更新时间:5/31/2021 访问量:352
使用 Elastic Beanstalk 和 NAT 进行多区域负载均衡
Multi-Zone Load Balancing with Elastic Beanstalk and NAT
问:
我一直在尝试设置 Elastic Beanstalk,以便跨多个可用区的所有实例在外部显示为具有相同的静态 IP 地址。为此,我按照以下说明进行操作:
https://aws.amazon.com/premiumsupport/knowledge-center/elastic-beanstalk-static-IP-address/
我还遵循了以下先决条件:
https://aws.amazon.com/premiumsupport/knowledge-center/nat-gateway-vpc-private-subnet/
我创建了一个演示环境 (PHP) 并安装了示例应用程序 - 只是为了概念验证。只要我只使用一个可用区(负载均衡器位于公有子网中,每个实例还有另外两个私有子网 - 但所有子网都位于同一可用区中),一切正常。当我尝试修改 Elastic Beanstalk 以使某些实例位于不同的可用区时,我得到了好坏参半的结果。有时我能够让应用程序加载到我的浏览器中,而其他时候它只是超时。我尝试了启用/禁用跨区域负载平衡的各种组合,无论哪种方式,我都得到了相同的结果。
当我查看负载均衡器时,所有实例都显示“服务中”,并且 Elastic Beanstalk 报告状态为“正常”。当我运行 VPC 可访问性分析器时,它显示每个实例都可以从 Internet 网关访问。
这是我设置的配置:
可用区 us-east-1c
- 子网 1(公共):此子网将流量路由到 Internet 网关。这是负载均衡器所在的子网。
- 子网 2(专用):此子网不会将任何内容路由到 Internet 网关。相反,它会将所有出站流量路由到 NAT(也驻留在公有子网中)。
- 子网 3(私有):此子网与子网 2 相同(使用相同的路由表)。
可用区 us-east-1b
- 子网 4(私有):此子网与子网 2 相同(使用相同的路由表)。
可用区 us-east-1d
- 子网 5(私有):此子网与子网 2 相同。
因此,我看到的是,只要我只将实例部署到子网 2 和 3,一切正常。一旦我尝试在子网 4 或 5 中添加实例,应用程序就会开始变得间歇性。有时有效,有时无效。
我还应该指出,我正在尝试通过引用负载均衡器的 URL 以及环境自动生成的 Elastic Beanstalk URL 在浏览器中加载此应用程序。在这两种情况下,行为是相同的。
我做错了什么?
答:
我能够通过在每个可用区中创建一个公有子网并将负载均衡器部署到每个公有子网来解决此问题。在那之后,一切都奏效了。
评论