兔子不会集中在ec2上

时间:2012-11-03 04:04:29

标签: rabbitmq

我遇到服务器问题,让兔子群集。

我在ec2上启动了两个节点。

在第一个启动的节点上,我这样做。

rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl start_app

I boot another node.
sudo service rabbitmq-server stop
#Copy cookie from the first server booted
sudo su - -c 'echo -n "cookie" > /var/lib/rabbitmq/.erlang.cookie'
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl cluster rabbit@server1

1)sever1正在运行 2)需要打开哪些端口?我有22,4369,5672

sudo rabbitmqctl cluster rabbit@aws-rabbit-server-east-development-20121102162143
Clustering node 'rabbit@aws-rabbit-server-east-development-20121103033005' with ['rabbit@aws-rabbit-server-east-development-20121102162143'] ...
Error: {no_running_cluster_nodes,['rabbit@aws-rabbit-server-east-development-20121102162143'],
                                 ['rabbit@aws-rabbit-server-east-development-20121102162143']}

文档中可能缺少哪些内容或者我缺少什么?

1 个答案:

答案 0 :(得分:6)

我在使用两台Windows机器的EC2上遇到了类似的问题。我最终得到了它的工作,但我不确定我是否以正确的方式做到了,所以可能有更好的解决方案。

我发现的问题是两个节点在尝试群集时无法看到对方。每次启动Rabbit节点时,似乎都会动态分配一个端口号。

这显然很难知道在安全组中打开哪个端口以便解决这个问题,我限制了Rabbit在分配端口时选择的端口范围。我将此限制在每个节点上的1个端口范围内,因此我始终知道正在分配哪个端口。

我发现这样做的最简单方法是编辑sbin \ rabbitmq-service.bat文件。

找到 -kernel inet_default_connect_options“行[{nodelay,true}]”^

将以下两行添加到下面的文件中:

-kernel inet_dist_listen_min ##### ^ -kernel inet_dist_listen_max ##### ^

用您选择的端口号替换#####。

所以你现在应该打开以下端口:

5672 - RabbitMQ的监听端口

4369 - Erlang Port Mapper Daemon

##### - Erlang节点通过

进行通信的所选端口号

由于Erlang无法识别FQDN,因此您可能需要修改所有服务器上的hosts文件,以确保它们都能够将所有Erlang节点名称解析为IP地址,例如

123.123.123.111 NODE1

123.123.123.222 NODE2

一旦完成,您应该能够看到另一个节点。你可以通过在命令行中调用以下命令来实现这一点(用你想要看到的节点替换rabbit @ NODE2)

rabbitmqctl status -n rabbit @ NODE2

希望这会给你一些帮助,我不是专家,但发现这对我有用了!