参考:http://blog.csdn.net/woogeyu/article/details/51119101
参考:http://88250.b3log.org/rabbitmq-clustering-ha
1、集群节点间需能互相访问,故每个集群节点的hosts文件应包含集群内所有节点的信息以保证互相解析
vim /etc/hosts
192.168.153.129 rabbit_1
192.168.153.130 rabbit_2
配置完后,最好ping一下,看主机名是否正常映射到ip
ping rabbit_1
强烈注意:
这里有个地方必须注意,配置/etc/hosts时,ip对应的名称必须用主机名,如果主机名没修改过的情况下(即localhost),这里主机名可以随便起。
如果
192.168.153.129、192.168.153.130的主机名都是localhost,配置/etc/hosts时,可以随便起一个名字
如果
192.168.153.129、192.168.153.130有修改过名字,则必须配置主机的真实名字,因为rabbitmq是根据“rabbit+@+主机名”来指定节点的
不然加载到集群的时候,会一直提示错误找不到rabbit的节点,我也被这个地方坑了很久,必须配置真实的主机名
192.168.153.129 iZwz9ex8d3yw1jbalz1ke3Z
192.168.153.130 iZwz9htw4t0ld5s5s4axodZ
2、把主服务器的.erlang.cookie文件发到各节点主机
.erlang.cookie文件本人是在/root/.erlang,有些是在/var/lib/rabbitmq/.erlang.cookie
scp /root/.erlang.cookie root@192.168.153.130:/root/
配置完后,rabbitmq要重新运行
3、启动rabbit_1的rabbitmq和rabbit_2的rabbitmq服务
./rabbitmq-server -detached
关闭192.168.153.130上的node节点运行,再加入集群,再启动节点
[root@iZwz9htw4t0ld5s5s4axodZ]#rabbitmqctl stop_app
[root@iZwz9htw4t0ld5s5s4axodZ]#rabbitmqctl join_cluster rabbit@iZwz9ex8d3yw1jbalz1ke3Z
[root@iZwz9htw4t0ld5s5s4axodZ]#rabbitmqctl start_app
执行添加到集群语句时候报错rabbitmqctl join_cluster rabbit@iZwz9ex8d3yw1jbalz1ke3Z
DIAGNOSTICS
===========
attempted to contact: [rabbit@iZwz9ex8d3yw1jbalz1ke3Z]
rabbit@iZwz9ex8d3yw1jbalz1ke3Z:
* unable to connect to epmd (port 4369) on iZwz9ex8d3yw1jbalz1ke3Z: address (cannot connect to host/port)
current node details:
- node name: 'rabbitmq-cli-17@iZwz9htw4t0ld5s5s4axodZ'
- home dir: /root
- cookie hash: FrHMpK2m1Qg/vnHo6wkAAg==
提示上面错误,则去129打开4369端口
DIAGNOSTICS
===========
attempted to contact: [rabbit@iZwz9ex8d3yw1jbalz1ke3Z]
rabbit@iZwz9ex8d3yw1jbalz1ke3Z:
* connected to epmd (port 4369) on iZwz9ex8d3yw1jbalz1ke3Z
* epmd reports node 'rabbit' running on port 25672
* can't establish TCP connection, reason: ehostunreach (host is unreachable)
* suggestion: blocked by firewall?
current node details:
- node name: 'rabbitmq-cli-87@iZwz9htw4t0ld5s5s4axodZ'
- home dir: /root
- cookie hash: FrHMpK2m1Qg/vnHo6wkAAg==
提示上面错误,则去129打开25672端口
再尝试添加到集群
[root@iZwz9htw4t0ld5s5s4axodZ sbin]# rabbitmqctl join_cluster rabbit@iZwz9ex8d3yw1jbalz1ke3Z
Clustering node rabbit@iZwz9htw4t0ld5s5s4axodZ with rabbit@iZwz9ex8d3yw1jbalz1ke3Z
添加成功,启动本节点
[root@iZwz9htw4t0ld5s5s4axodZ]#rabbitmqctl start_app
[root@iZwz9ex8d3yw1jbalz1ke3Z sbin]# ./rabbitmqctl cluster_status
Cluster status of node rabbit@iZwz9ex8d3yw1jbalz1ke3Z
[{nodes,[{disc,[rabbit@iZwz9ex8d3yw1jbalz1ke3Z,
rabbit@iZwz9htw4t0ld5s5s4axodZ]}]},
{running_nodes,[rabbit@iZwz9htw4t0ld5s5s4axodZ,
rabbit@iZwz9ex8d3yw1jbalz1ke3Z]},
{cluster_name,<<"rabbit@iZwz9ex8d3yw1jbalz1ke3Z">>},
{partitions,[]},
{alarms,[{rabbit@iZwz9htw4t0ld5s5s4axodZ,[nodedown]},
{rabbit@iZwz9ex8d3yw1jbalz1ke3Z,[]}]}]
4、设置镜像队列策略
在任意一个节点上执行:
# rabbitmqctl set_policy ha-all "^" '{"ha-mode":"all"}'
将所有队列设置为镜像队列,即队列会被复制到各个节点,各个节点状态保持一直
5、设置均衡,这个本人暂时没设置,但是已经可以集群使用rabbitmq,如果想设置集群,可以参考上面的网址