【问题标题】:ELB timeout when source host is the same as the target host源主机与目标主机相同时ELB超时
【发布时间】:2018-07-03 15:50:15
【问题描述】:

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

我有一个带有两个 EC2 实例的 ECS 集群(通过 ECS 向导启动)。我目前正在运行两项服务:一个 RabbitMQ 队列和两个 Celery 工作人员。我在 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):

【问题讨论】:

  • 我认为网络负载均衡器不支持这种配置。

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


【解决方案1】:

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

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

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

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

【讨论】:

猜你喜欢
  • 2012-11-30
  • 2021-07-20
  • 2021-11-22
  • 1970-01-01
  • 1970-01-01
  • 2016-08-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多