1.准备机器,我这边准备的是三台ubuntu14.04
机器主机名不能相同,不然节点冲突
2.安装rabbitmq
3.修改hosts文件
root@abc-web-04:~# vim /etc/hosts
192.168.1.100 abc-web-04
192.168.1.101 abc-web-05
192.168.1.102 abc-web-06
4.安装 erlang
sudo apt-get install erlang
5.修改 .erlang.cookie 文件 ,确保每一台机器的.erlang.cookie 内容(一个字符串)一样 ;如果是通过源安装RabbitMQ的话,Erlang Cookie 文件在/var/lib/rabbitmq/.erlang.cookie。如果是通过源码安装的RabbitMQ,Erlang Cookie文件$HOME/.erlang.cookie,我是通过源安装的所以直接修改 /var/lib/rabbitmq/.erlang.cookie,
由于未知各个机器的root账户密码,复制文件无法实现,因此记录第一台机器的.erlang.cookie内容,再每一台机器上修改 /var/lib/rabbitmq/.erlang.cookie文件把值设置为同一个字符串
vim /var/lib/rabbitmq/.erlang.cookie
6.使用detached参数,在后台启动rabbit node,要先停止现有的Rabbitmq-server,再重新在后台支行, 遇到关闭错误请确认.erlang.cookie的权限,或用命令 ps aux|grep epmd 和 ps aux|grep erl 找出相关进程 kill 掉他们,启动成功后通过命令 rabbitmqctl cluster_status查看各个节点的状态
root@abc-web-04:~# rabbitmqctl stop Stopping and halting node 'rabbit@abc-web-04' ... ...done. root@abc-web-04:~# rabbitmq-server -detached Warning: PID file not written; -detached was passed. root@abc-web-04:~# rabbitmqctl cluster_status Cluster status of node 'rabbit@abc-web-04' ... [{nodes,[{disc,['rabbit@abc-web-04']}]}, {running_nodes,['rabbit@abc-web-04']}, {partitions,[]}] ...done.
7. 将各个机器节点 组成集群,其他机器只要和其中一台机器组成集群,那么其他机器之间也间接组成了集群连接
经测试,磁盘节点达到3台时就不能继续添加节点了,会分成两个2*2的集群, 需要把磁盘节点变成内存节点后可以继续添加
root@abc-web-05:~# rabbitmqctl stop_app Stopping node 'rabbit@abc-web-05' ... ...done. root@abc-web-05:~# rabbitmqctl join_cluster rabbit@abc-web-04 Clustering node 'rabbit@abc-web-05' with 'rabbit@abc-web-04' ... ...done.
8.查看各个节点集群状态
root@abc-web-05:~# rabbitmqctl cluster_status Cluster status of node 'rabbit@abc-web-05' ... [{nodes,[{disc,['rabbit@abc-web-04','rabbit@abc-web-05',
'rabbit@abc-web-06']}]},
{running_nodes,['rabbit@abc-web-04','rabbit@abc-web-06','rabbit@abc-web-05']},
{partitions,[]}] ...done.
集群配置好后,可以在 RabbitMQ 任意节点上执行 rabbitmqctl cluster_status 来查看是否集群配置成功。
9.变更节点类型 disc / ram 这里设置的是两台ram 一台disc
rabbitmqctl change_cluster_node_type disc
10.添加虚拟主机 vhost
rabbitmqctl add_vhost hrsystem
11.为虚拟主机设置策略
rabbitmqctl set_policy -p hrsystem ha-allqueue "^" '{"ha-mode":"all"}'
rabbitmqctl set_policy -p / ha-allqueue "^" '{"ha-mode":"all"}' //默认配置
这行命令在vhost名称为hrsystem创建了一个策略,策略名称为ha-allqueue,策略模式为 all 即复制到所有节点,包含新增节点,策略正则表达式为 “^” 表示所有匹配所有队列名称
12.设置集群名称 (经测试,set_cluster_name 命令不存在 原因未知 )
rabbitmqctl set_cluster_name abccluster
13. 安装 haproxy
sudo apt-cache showpkg haproxy
14.配置 https://www.cnblogs.com/lion.net/p/5725474.html
资料源自网络