在Amazon EC2上连接rabbitmq群集时出错

时间:2012-10-30 13:05:45

标签: amazon-ec2 rabbitmq

我在连接亚马逊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 telnet到server1。

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

当我在net_admin:ping另一个节点时,从erlang命令行开始我回来了。

但是,当我在任何节点上运行cluster_status时,他们看起来并不是彼此都知道的。做stop_app,reset,rabbitmqctl cluster rabbit @ server1我总是得到以下错误: 错误:{no_running_cluster_nodes ...

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

3 个答案:

答案 0 :(得分:1)

您是否打开了55700和55800之间的端口?

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

  

netstat -plten | grep beam

我会仔细检查一下这个饼干......

答案 1 :(得分: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

  4. 这对5个EC2实例起作用。

答案 2 :(得分:0)

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