代码之家  ›  专栏  ›  技术社区  ›  Ernst

源主机与目标主机相同时ELB超时

  •  0
  • Ernst  · 技术社区  · 7 年前

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

    我有一个ECS集群,有两个EC2实例(通过ECS向导启动)。我目前正在运行两个服务:一个RabbitMQ队列和两个芹菜工人。我在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 回复  |  直到 7 年前
        1
  •  3
  •   Michael - sqlbot    7 年前

    网络负载平衡器显示与服务器的连接,就像它来自客户端计算机的IP地址一样。网络基础设施会神奇地将回复更改回正确的地址/端口对。

    但当服务器尝试答复时,它会答复该源地址。。。在您的配置中,源地址是同一台机器。。。但事实并非如此 尝试 为了连接到自身,它试图连接到另一台机器。。。因此,转发路径和返回路径源地址/端口对和目标地址/端口对没有正确关联,连接超时。

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

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