源主机与目标主机

时间:2018-01-24 14:46:18

标签: amazon-web-services amazon-ec2 amazon-ecs elastic-load-balancer

我遇到一个问题,即当连接到同一EC2实例上的服务时,ELB会给我一个超时。

我有一个带有两个EC2实例的ECS集群(通过ECS向导启动)。我目前正在运行两个服务:RabbitMQ队列和两个Celery工作者。我在RabbitMQ容器前面放了一个内部ELB网络负载均衡器。

AWS Diagram

另一个EC2实例上的芹菜工作者可以毫无问题地连接,但与RabbitMQ容器位于同一主机上的工作人员无法连接:

[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):

VPC Flow logs

1 个答案:

答案 0 :(得分:1)

网络负载均衡器提供与服务器的连接,就好像它来自客户端计算机的IP地址。通过网络基础设施将回复神奇地修复回正确的地址/端口对。

但是当服务器尝试回复时,它会回复该源地址...并且在您的配置中,该源地址是同一台机器...它没有尝试到连接到它自己,它试图连接到另一台机器...所以正向路径和返回路径源和目标地址/端口对没有正确关联,连接超时。

这似乎是网络负载均衡器的限制。任何类似设计的第3层平衡器都有相同的限制。

另见https://forums.aws.amazon.com/thread.jspa?messageID=805583&#805583

相关问题