环境规划

  1. # 例 vm01 为主机名
  2. # server1 vm01 192.168.1.10
  3. # server2 vm02 192.168.1.11

两台机器分别添加hots

  1. # vim /etc/hosts
  2. 192.168.1.10 vm01
  3. 192.168.1.11 vm02

相互通信,cookie 必须保持一致,同步 RabbitMQ 的 cookie 文件:跨服务器拷贝 .erlang.cookie(隐藏文件,使用 ls -all 显示)

  1. # 这里从192.168.1.10 拷贝至192.168.1.11
  2. scp /var/lib/rabbitmq/.erlang.cookie 192.168.1.11:/var/lib/rabbitmq/
  3. # 重启两台rabbitmq-server
  4. systemctl restart rabbitmq-server

任选一台rabbitmq-server 加入另一台

  1. # 这里在192.168.1.11 上加入192.168.1.10(vm02上操作)
  2. # 1. 停止服务
  3. rabbitmqctl stop_app
  4. # 2. 加入集群
  5. rabbitmqctl join_cluster rabbit@vm01
  6. # 3. 启动服务
  7. rabbitmqctl start_app
  8. # 4. 查看节点状态
  9. rabbitmqctl cluster_status
  10. # 显示如下 为加入集群成功
  11. Cluster status of node rabbit@vm02 ...
  12. [{nodes,[{disc,[rabbit@vm01,rabbit@vm02]}]},
  13. {running_nodes,[rabbit@vm01,rabbit@vm02]},
  14. {cluster_name,<<"rabbit@vm01">>},
  15. {partitions,[]}]
  16. ...done.
  17. # 此时,RabbitMQ 的集群搭建完毕,但是默认采用的模式为“普通模式”,可靠性不高。
  18. # 需要 调整为镜像模式

镜像模式

将所有队列设置为镜像队列,即队列会被复制到各个节点,各个节点状态一致。

  1. # 192.168.1.10(vm01)上操作
  2. rabbitmqctl set_policy policy_renda "^" '{"ha-mode":"all"}'

设置好镜像模式后,在节点 A 增加了队列后,节点 B 也可以看到新增的队列。

  1. # 简单验证
  2. # 在192.168.1.10 创建一个vhost ,在192.168.1.11 上查看
  3. [root@vm01 ~]# rabbitmqctl add_vhost test
  4. Creating vhost "test" ...
  5. ...done.
  6. [root@vm02 ~]# rabbitmqctl list_vhosts
  7. Listing vhosts ...
  8. /
  9. test
  10. ...done.