【发布时间】:2020-02-12 17:59:47
【问题描述】:
我希望自动扩展组中的我的 EC2 实例能够连接到背后有 RabbitMQ 服务器的经典负载均衡器。
这是我的配置:
EC2 的安全组:
my-private-sg (sg-00xxxxxxxxxxxxxxx)
经典负载均衡器的安全组:
rabbitmq-elb-sg (sg-11xxxxxxxxxxxxxxx)
rabbitmq-elb-sg 安全组包含以下入站规则
在此配置下,EC2 内的 RabbitMQ 客户端无法连接到负载均衡器。
但是,在我将源设置为AnyWhere 后,它可以连接到负载均衡器。
为什么会这样?
这个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.217 和 172.31.0.79 是负载均衡器后面的 RabbitMQ 服务器的私有 IP。
【问题讨论】:
-
所有描述的基础设施是否都在同一个 VPC 中? EC2 实例如何引用 Classic Load Balancer - 是通过域名还是 IP 地址?听起来他们正在尝试通过负载均衡器的公共 IP 地址而不是其私有 IP 地址进行连接。另外,您使用 Classic 负载均衡器是否有原因(现在它已经很老了)?
-
您是否能够检查访问您的 RabitMQ 服务器的 IP 是否实际上是您的(客户端)EC2 实例的?
标签: amazon-web-services amazon-ec2 rabbitmq aws-security-group