Amazon ec2 如何连接EC2上的两个rabbitmq节点-
我在EC2中有两个Ubuntu实例,我想对它们进行集群 一个ip将被称为-X(配置显示的“净地址”ip),其公共ip将被称为PX。Amazon ec2 如何连接EC2上的两个rabbitmq节点-,amazon-ec2,rabbitmq,cluster-computing,Amazon Ec2,Rabbitmq,Cluster Computing,我在EC2中有两个Ubuntu实例,我想对它们进行集群 一个ip将被称为-X(配置显示的“净地址”ip),其公共ip将被称为PX。 另一个ip是Y,它的公共ip是Y 所以现在我在两台机器上都做了以下操作 已安装最新的rabbbitmq 安装了管理插件 为5672(兔子)和15672(管理插件)打开端口 已通过我的测试应用程序连接到兔子 已连接到ui 现在来看集群。 我执行了以下命令 在X上 rabbitmqctl cluster_status 获取的节点名为'rabbit@ip-X'(其中X是
另一个ip是Y,它的公共ip是Y 所以现在我在两台机器上都做了以下操作
rabbitmqctl cluster_status
获取的节点名为'rabbit@ip-X'(其中X是内部IP)
在Y上
rabbitmqctl stop_app
rabbitmqctl join_cluster --ram rabbit@ip-X
我得到
"The nodes provided are either offline or not running"
显然,这是私有ip,因此其他实例无法连接。
我如何告诉第二个实例第一个位于何处
编辑防火墙完全关闭,我有一个从一个远程到另一个远程的telnet连接
(至端口5672(rmq)、15672(ui)、4369(群集端口))。 两台服务器上的cookie(日志中cookie的哈希相同) 在运行join cluster命令时录制tcp,并在wireshark中监视。我看到了以下内容(没有确认) 所以我用电脑关闭了防火墙 sudoufw禁用 (只是为了考试)我重新打字了 sudo rabbitmqctl加入集群--ramrabbit@ip-XX 连接已创建,但被远程兔子终止 在这里: 消息仍然是
“提供的节点脱机或未运行”
(远程兔子应用程序肯定正在运行)您需要确保节点可以相互访问。RabbitMQ使用分布式Erlang原语跨节点通信,因此您还必须在防火墙中打开几个端口。见: 详情请参阅 您还应该为集群中的节点使用相同的数据中心,因为RabbitMQ在网络分区上可能会变得非常sad。如果您的节点位于不同的数据中心,您应该使用Solve或federation插件,而不是群集来复制数据
编辑:不要忘记在所有节点上使用相同的Erlang cookie,有关详细信息,请参阅。问题可能是应该打开的TCP端口。 您应该执行以下操作: 1) 为兔子服务器创建一个安全组(双方都将使用它) 我们称之为:兔子sg 2) 在安全组中,定义以下端口:
All TCP TCP 0 - 65535 sg-xxxx (rabbit-sg)
SSH TCP 22 0.0.0.0/0
Custom TCP Rule TCP 4369 0.0.0.0/0
Custom TCP Rule TCP 5672 0.0.0.0/0
Custom TCP Rule TCP 15672 0.0.0.0/0
Custom TCP Rule TCP 25672 0.0.0.0/0
Custom TCP Rule TCP 35197 0.0.0.0/0
Custom TCP Rule TCP 55672 0.0.0.0/0
3) 确保两个EC2都使用此安全组,
注意,我们打开了EC2之间的所有TCP
4) 确保兔子cookie是相同的,并且您重新启动了EC2
在从属EC2中更改后谢谢。防火墙完全关闭,我有一个从一个远程到另一个远程的telnet连接(到端口5672(rmq)、15672(ui)、4399(群集端口)),cookie(日志中cookie的哈希相同)。更新应答。另一件事是默认的初始化脚本将使用
-sname
选项启动erlang,因此FQDNs或IP地址不能用于引用节点。您能否将另一个节点的短主机名放入每个节点上的/etc/hosts中,并尝试使用短主机名创建集群?如果我在Wireshark中看到连接已创建并随后终止,这是否仍然相关?屏幕截图显示epmd正在响应-似乎无法根据您的IP找到您的节点。如上所述,尝试使用hosts文件的技巧。