无法从EC2实例连接到负载均衡器

时间:2019-10-16 02:56:20

标签: amazon-web-services amazon-ec2 rabbitmq aws-security-group

我希望自动伸缩组中的EC2实例能够连接到具有RabbitMQ服务器的经典负载均衡器。

这是我的配置:

EC2的安全组:

my-private-sgsg-00xxxxxxxxxxxxxxx

经典负载均衡器的安全组:

rabbitmq-elb-sgsg-11xxxxxxxxxxxxxxx

rabbitmq-elb-sg安全组包含以下入站规则

enter image description here

在此配置下,EC2内部的RabbitMQ客户端无法连接到负载均衡器。

但是,在将源设置为AnyWhere之后,它可以连接到负载均衡器。

enter image description here

为什么会这样?

document

Another security group. This allows instances associated with the specified security group to access instances associated with this security group. 

EC2,负载均衡器和负载均衡器后面的EC2位于同一VPC中。

我使用经典的负载平衡器,因为我使用此terraform script来构建RabbitMQ服务。

我刚刚检查了经典负载均衡器中的日志,然后看到类似以下的内容:

2019-10-16T03:45:09.124234Z rabbitmq-elb 54.178.178.85:45990 172.31.39.217:5672 0.000274 0.000008 0.000015 - - 516 604 "- - - " "-" - -
2019-10-16T03:45:10.340119Z rabbitmq-elb 54.178.178.85:46006 172.31.0.79:5672 0.001159 0.000008 0.000015 - - 516 604 "- - - " "-" - -

54.178.178.85是我的EC2实例的公共IP。

172.31.39.217172.31.0.79是负载均衡器后面的RabbitMQ服务器的专用IP。

1 个答案:

答案 0 :(得分:1)

我的经典负载均衡器是internet-facing负载均衡器。将其更改为internal后,安全组rabbitmq-elb-sg (sg-11xxxxxxxxxxxxxxx)可以正常工作。

我不必再在AnyWhere字段中写Source

EC2实例尝试通过专用网络连接到负载均衡器。将EC2的安全组(sg-00xxxxxxxxxxxxxxx)添加到Rabbitmq-elb-sg(sg-11xxxxxxxxxxxxxxx)的源字段中仅在专用网络下有效。

但是,我仍然不确定为什么在我的情况下不能使用面向Internet的负载均衡器。

AWS Documentation的哪里可以找到这种现象的解释?