amazon-web-services - 无法从 EC2 实例连接到负载均衡器
问题描述
我希望自动扩展组中的 EC2 实例能够连接到背后有 RabbitMQ 服务器的经典负载均衡器。
这是我的配置:
EC2s的安全组:
my-private-sg
( sg-00xxxxxxxxxxxxxxx
)
经典负载均衡器的安全组:
rabbitmq-elb-sg
( sg-11xxxxxxxxxxxxxxx
)
rabbitmq-elb-sg
安全组包含以下入站规则
在此配置下,EC2 内的 RabbitMQ 客户端无法连接到负载均衡器。
但是,在我将源设置为AnyWhere
.
为什么会这样?
这份文件说
Another security group. This allows instances associated with the specified security group to access instances associated with this security group.
EC2、负载均衡器和负载均衡器后面的 EC2 在同一个 VPC 中。
我使用经典的负载均衡器,因为我使用这个terraform 脚本来构建 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。
解决方案
我的经典负载均衡器是internet-facing
负载均衡器。将其更改为 后internal
,安全组rabbitmq-elb-sg (sg-11xxxxxxxxxxxxxxx)
可以正常工作。
我不必再AnyWhere
在Source
外地写字了。
EC2 实例尝试通过专用网络连接到负载均衡器。将 EC2 的安全组 (sg-00xxxxxxxxxxxxxxx) 添加到 rabbitmq-elb-sg (sg-11xxxxxxxxxxxxxxx) 的源字段仅适用于私有网络。
但是,我仍然不确定为什么在我的情况下使用面向 Internet 的负载均衡器不起作用。
在AWS 文档中哪里可以找到对这种现象的解释?
推荐阅读
- mongodb - 隐藏密码和登录
- react-native - uri到react-native中的真实路径
- azure-active-directory - 错误请求:尝试使用 SAML 断言从 Azure 访问令牌时出现 400
- android - Android MiniPaint App 添加清除选项以清除画布
- google-chrome - Firefox 和 Chrome 的可访问性树的区别
- bash - 有没有办法从反汇编程序输出中只过滤掉汇编代码?
- python - 新的、干净的 venv 项目(Python 3 /IntelliJ IDEA)中的包要求 - 为什么有?
- reactjs - 如何在拖动标签中使用 onChange 属性?
- c# - c# webapi中如何处理和excel从前端(网站)发送的文件?
- asp.net-core - .net核心中间件自动设置内容类型为application/json;字符集=utf-8