我遇到服务器问题,让兔子群集。
我在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']}
文档中可能缺少哪些内容或者我缺少什么?
答案 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
希望这会给你一些帮助,我不是专家,但发现这对我有用了!