我具有以下AWS设置:
现在为以下情况成像:
服务1希望与在另一个AZ中的另一个EC2实例上运行的服务2进行通信。作为服务2的URL,我使用端口为internal-load-balancer:8082/path
的负载均衡器的DNS名称。这是必要的,因为我正在使用滚动部署,因此每次部署后微服务都会在两个EC2实例之间移动。
现在,如果我执行host internal-load-balancer
,我将获得2个IP地址,其中一个IP地址用于在子网1中运行的负载均衡器,另一个IP地址在子网2中运行。
如果我现在在服务1上执行以下curl命令:
curl 10.0.0.11:8082/
我收到了网关超时curl 10.0.32.11:8082/
可以正常工作,我得到200欧元curl 10.0.32.10:8082/
也有效那么,如果我在同一个子网而不是另一个子网中使用负载均衡器,为什么在地狱中也能正常工作呢?如果我直接联系另一个可用区中的EC2实例,它也可以工作。问题是DNS记录解析为两个IP地址,而微服务只是随机使用其中一个,因此我的请求中有一半工作,另一半超时。
那么我在这里做错了什么??? 在此先感谢您的支持:)
答案 0 :(得分:0)
所以看来我找到了解决此问题的方法here。 基本上,我为解决此问题所做的工作是将应用程序负载平衡器移至连接了Internet网关的公共子网,现在这两个负载平衡器都正常工作了……我不知道为什么它只能以这种方式工作,但是我很高兴我找到了解决这个问题的方法:)
这里有谁可以向我解释为什么ALB必须位于公共子网中?