4

我在连接亚马逊 EC2 上的两个 RabbitMQ 节点时遇到了一些困难。这两个节点是使用 puppet 控制的,这是我的 rabbit.config 文件:

[
  {mnesia, [{dump_log_write_threshold, 1000}]},
  {rabbit, [
        {tcp_listeners, [5672]},
            {kernel, [{inet_dist_listen_min, 55700},{inet_dist_listen_max, 55800}]} ,
        {cluster_nodes, ['rabbit@server1', 'rabbit@server2']}
        ]
    }
].

我相信集群连接的权限端口是开放的。我能够在 5672 和 4369 上从 server2 远程登录到 server1。

我在两台服务器上都有相同的 /var/lib/rabbitmq/.erlang.cookie。

当我 net_admin:ping 另一个节点时,从 erlang 命令行我得到了回击。

但是,当我在任何节点上运行 cluster_status 时,它们看起来并不像彼此了解。执行 stop_app, reset,rabbitmqctl cluster rabbit@server1 我总是收到以下错误:错误:{no_running_cluster_nodes...

有没有人解决过类似的问题,或者知道如何解决?

4

3 回答 3

1

就像 Ivan 建议的那样,您可以先检查服务器正在侦听的端口,然后将这些 TCP 规则添加到服务器的安全组中。这是很好的第一步。

netstat -plten | grep beam

返回以下内容(如果服务器仍在运行而不是 stop_app)

tcp        0      0 0.0.0.0:37419               0.0.0.0:*                   LISTEN      498        118739     15519/beam          
tcp        0      0 0.0.0.0:15672               0.0.0.0:*                   LISTEN      498        119032     15519/beam          
tcp        0      0 0.0.0.0:55672               0.0.0.0:*                   LISTEN      498        119029     15519/beam          
tcp        0      0 :::5672                     :::*                        LISTEN      498        119018     15519/beam

注意 amqp 和 web 服务器的公共端口5672 15672 55672,另一个端口是集群正在侦听的端口。检查您的其他实例并确保您的范围包括它们,然后重试它会起作用。

安全组 > 入站 > TCP 规则: 30000-65535安全组允许sg-XXXXXX并重复往复安全组,不要忘记“应用规则”。

  1. 接下来确保您共享 /var/lib/rabbitmq/.erlang.cookie (只需从一台服务器复制到所有其他服务器并重新启动实例)

  2. 然后在你的命令行上:

    [root@ip-172-31-27-150 ~]# rabbitmqctl stop_app Stopping node 'rabbit@ip-172-31-27-150' ... ...done.

    [root@ip-172-31-27-150 ~]# rabbitmqctl reset Resetting node 'rabbit@ip-172-31-27-150' ... ...done.

    [root@ip-172-31-27-150 ~]# rabbitmqctl join_cluster rabbit@ip-172-31-28-79 Clustering node 'rabbit@ip-172-31-27-150' with 'rabbit@ip-172-31-28-79' ... ...done.

  3. 最后,不要忘记重新启动您的实例rabbitmqctl start_app

这在 5 个 EC2 实例上对我有用。

于 2013-07-18T05:34:53.067 回答
1

55700和55800之间的端口你打开了吗?

尝试检查以了解 RabbitMQ 侦听的其他端口:

netstat -plten | grep 梁

我会仔细检查cookie...

于 2012-10-31T23:36:35.143 回答
0

感谢您的回答,我所做的是删除此目录的内容,除了 .erlang.cookie ( rm -R /var/lib/rabbitmq/ )。并且集群连接成功。干杯!

于 2012-11-07T08:56:03.173 回答