【发布时间】:2021-08-13 21:35:12
【问题描述】:
我一直在尝试设置 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 以使某些实例位于不同的可用区时,我的结果好坏参半。有时我能够让应用程序加载到我的浏览器中,而其他时候它只是超时。我尝试了启用/禁用跨区域负载平衡的各种组合,无论哪种方式我都得到相同的结果。
当我查看负载均衡器时,所有实例都显示“In Service”,并且 Elastic Beanstalk 报告“OK”状态。当我运行 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 来在我的浏览器中加载此应用程序。两种情况下的行为是相同的。
我做错了什么?
【问题讨论】:
-
我有几个问题。它是哪个负载均衡器?应用程序还是网络?我过去曾遇到过这样的问题,但我的应用程序负载均衡器位于私有子网中。我将它部署在一个公共子网中,目标组具有私有子网的实例。一旦 tg 健康检查通过,我的请求就开始通过了。另外,您是否检查了请求是否进入服务器?
-
这是一个经典的负载均衡器,我找到了解决方案。我创建了另外两个公共子网 - 一个在 us-east-1b 中,一个在 us-east-1d 中。现在我在每个可用区都有一个公共子网。我将负载均衡器部署到所有这些公共子网,然后一切都开始工作了。因此,为了让负载均衡器与私有子网中的实例进行通信,似乎需要将其部署到同一可用区中的公有子网中。
标签: amazon-web-services amazon-elastic-beanstalk aws-load-balancer