首页 > 解决方案 > 带有 ECS 的 AWS 应用程序负载均衡器

问题描述

我有以下 AWS 设置:

AWS 设置

现在想象以下场景:服务 1 想要与在另一个 AZ 中的另一个 EC2 实例上运行的服务 2 通信。作为服务 2 的 URL,我使用负载均衡器的 DNS 名称和端口:internal-load-balancer:8082/path。这是必要的,因为我正在使用滚动部署,因此每次部署后微服务在两个 EC2 实例之间移动。

现在,如果我执行host internal-load-balancer,我会返回 2 个 IP 地址,一个用于运行在子网 1 中的负载均衡器,一个用于运行在子网 2 中:

如果我现在在服务 1 上执行以下 curl 命令:

那么,如果我在同一个子网中使用负载均衡器而不是在另一个子网中,那么为什么这会起作用呢?如果我直接联系其他 AZ 中的 EC2 实例,它也可以工作。问题是 DNS 记录解析为两个 IP 地址,而微服务只是随机使用其中一个,所以我的一半请求在另一半超时。

那么我在这里做错了什么???在此先感谢您的支持:)

标签: amazon-web-servicesamazon-ec2amazon-ecsaws-application-load-balancer

解决方案


所以好像我在这里找到了解决这个问题的方法。基本上我为解决这个问题所做的是将应用程序负载均衡器移动到连接了互联网网关的公共子网,现在两个负载均衡器都可以正常工作......我不知道为什么它只能这样工作,但我很高兴我找到了解决这个问题的方法:)

谁能向我解释为什么 ALB 需要位于公共子网中?


推荐阅读