源主机与目标主机相同时ELB超时
ELB timeout when source host is the same as the target host
我遇到一个问题,ELB 在连接到同一 EC2 实例上的服务时给我超时。
我有一个带有两个 EC2 实例的 ECS 集群(通过 ECS 向导启动)。我目前 运行 两项服务:一个 RabbitMQ 队列和两个 Celery worker。我在 RabbitMQ 容器前面放了一个内部 ELB 网络负载均衡器。
另一个 EC2 实例上的 celery worker 可以毫无问题地连接,但与 RabbitMQ 容器位于同一主机上的 worker 无法连接:
[2018-01-24 12:00:55,128: ERROR/MainProcess] consumer: Cannot connect to amqp://user:**@rabbitmq-abcdefghijklmnop.elb.eu-central-1.amazonaws.com:5672//: timed out.
我检查了 VPC 的流日志,所有包都被接受(.157 是 EC2 实例,.136 是 ELB):
网络负载平衡器呈现与服务器的连接,就好像它来自客户端计算机的 IP 地址一样。网络基础设施神奇地将回复恢复为正确的 address/port 对。
但是当服务器尝试回复时,它会回复那个源地址……在你的配置中,那个源地址是同一台机器……try 连接到自身,它试图连接到另一台机器...因此转发路径和 return 路径源和目标 address/port 对没有正确关联并且连接超时。
这似乎是网络负载均衡器的一个限制。任何类似设计的第 3 层平衡器都会有相同的限制。
另见 https://forums.aws.amazon.com/thread.jspa?messageID=805583󄫏
我遇到一个问题,ELB 在连接到同一 EC2 实例上的服务时给我超时。
我有一个带有两个 EC2 实例的 ECS 集群(通过 ECS 向导启动)。我目前 运行 两项服务:一个 RabbitMQ 队列和两个 Celery worker。我在 RabbitMQ 容器前面放了一个内部 ELB 网络负载均衡器。
另一个 EC2 实例上的 celery worker 可以毫无问题地连接,但与 RabbitMQ 容器位于同一主机上的 worker 无法连接:
[2018-01-24 12:00:55,128: ERROR/MainProcess] consumer: Cannot connect to amqp://user:**@rabbitmq-abcdefghijklmnop.elb.eu-central-1.amazonaws.com:5672//: timed out.
我检查了 VPC 的流日志,所有包都被接受(.157 是 EC2 实例,.136 是 ELB):
网络负载平衡器呈现与服务器的连接,就好像它来自客户端计算机的 IP 地址一样。网络基础设施神奇地将回复恢复为正确的 address/port 对。
但是当服务器尝试回复时,它会回复那个源地址……在你的配置中,那个源地址是同一台机器……try 连接到自身,它试图连接到另一台机器...因此转发路径和 return 路径源和目标 address/port 对没有正确关联并且连接超时。
这似乎是网络负载均衡器的一个限制。任何类似设计的第 3 层平衡器都会有相同的限制。
另见 https://forums.aws.amazon.com/thread.jspa?messageID=805583󄫏