说明:
普通集群:消息只存在一个节点上,当客户端访问时,集群内部会从这一个节点上取。客户端要和每个节点建立连接,否则会产生性能问题。
镜像集群:在普通集群基础上,将节点做成镜像队列,消息会主动在镜像节点间同步,比较耗性能,只适用于对可靠性要求高的场合。
系统:centos7
一、搭建普通集群:
1.创建2个虚拟机(或真机器),系统为centos7,分别命名为RabbitMQ01和RabbitMQ02:
(1)RabbitMQ01节点配置IP和主机名:
IP:
192.168.233.130
修改主机名为RabbitMQ01:
[root@loclhost ~]# vi /etc/hostname
内容如下,保存退出:
RabbitMQ01
配置hosts,映射IP与主机名:
[root@RabbitMQ01 ~]# vi /etc/hosts
在最后追加如下内容,保存退出:
192.168.233.130 RabbitMQ01
192.168.233.131 RabbitMQ02
(2)RabbitMQ02节点配置IP和主机名:
IP:
192.168.233.131
修改主机名为RabbitMQ02:
[root@loclhost ~]#vi /etc/hostname
内容如下,保存退出:
RabbitMQ01
配置hosts,映射IP与主机名:
[root@RabbitMQ02 ~]# vi /etc/hosts
在最后追加如下内容,保存退出:
192.168.233.130 RabbitMQ01
192.168.233.131 RabbitMQ02
2.在2个虚拟机(或真机器)Centos7上安装RabbitMQ服务器:
(1)安装,参考以下地址"一、RabbitMQ服务器安装/启动-2.Centos7下安装RabbitMQ服务器":
https://blog.csdn.net/a526001650a/article/details/107341303
(2)浏览器访问web管理页:
http://192.168.233.130:15672/
http://192.168.233.131:15672/
3.将2个主机的erlang.cookie配置成一致(分布式token文件,集群内靠相同的erlang.cookie通信):
(1)将RabbitMQ01主机的erlang.cookie文件拷贝并替换掉RabbitMQ02主机的erlang.cookie:
[root@RabbitMQ01 ~]# scp /var/lib/rabbitmq/.erlang.cookie root@RabbitMQ02:/var/lib/rabbitmq
在以下提示中按需输入:
Are you sure you want to continue connecting (yes/no)? yes
root@rabbitmq02's password: root
4.将两个主机上的RabbitMQ服务停止,并重新启动:
(1)停止:
[root@RabbitMQ01 ~]# rabbitmqctl stop
[root@RabbitMQ02 ~]# rabbitmqctl stop
查看是否停了:
[root@RabbitMQ01 ~]# ps -ef|grep rabbitmq
[root@RabbitMQ02 ~]# ps -ef|grep rabbitmq
杀进程:
[root@RabbitMQ01 ~]# kill -9 进程号
[root@RabbitMQ02 ~]# kill -9 进程号
(2)启动:
[root@RabbitMQ01 ~]# rabbitmq-server -detached
[root@RabbitMQ02 ~]# rabbitmq-server -detached
5.将RabbitMQ02节点加入到RabbitMQ01集群中(2个节点建立集群关联):
[root@RabbitMQ02 ~]# rabbitmqctl stop_app
[root@RabbitMQ02 ~]# rabbitmqctl join_cluster rabbit@RabbitMQ01
[root@RabbitMQ02 ~]# rabbitmqctl start_app
6.查看集群状态,如图所示:
[root@RabbitMQ01 ~]# rabbitmqctl cluster_status
[root@RabbitMQ02 ~]# rabbitmqctl cluster_status
二、配置镜像集群:
1.说明:
rabbitmqctl set_policy:用来设置策略
ha-all:设置策略为所有节点可用,会同步所有节点
ha-two:设置策略为所有2个节点可用,会同步2个节点
"^":设置正则表达式匹配队列名,^表示匹配所有队列名称
{"ha-mode":"all"}':设为高可用模式,匹配所有消息同步
2.配置镜像集群(可以在任意节点执行,此处在RabbitMQ01执行):
[root@RabbitMQ01 ~]# rabbitmqctl set_policy ha-all "^" '{"ha-mode":"all"}'
3.查看镜像集群效果,管理页 -> Queues -> 新增一个queue,Features中为ha-all,如图: