相关记录链接地址 :
- 第一篇 CentOS7 安装配置RabbitMQ3.8.x [yum方式]
- 第二篇-CentOS7 配置RabbitMQ3.8.x集群 [mirroring queue]
主机名称 | ip地址 | 操作系统 | 角色 | 软件版本 | 备注 |
---|---|---|---|---|---|
tjdatarabbitmq-shqstst-10 | 10.122.151.8 | CentOS 7 | erlang, rabbitmq | erlang22.3 rabbitmq v3.8.7 | |
tjdatarabbitmq-shqstst-11 | 10.122.151.9 | CentOS 7 | erlang, rabbitmq | erlang22.3 rabbitmq v3.8.7 | |
tjdatarabbitmq-shqstst-12 | 10.122.151.10 | CentOS 7 | erlang, rabbitmq | erlang22.3 rabbitmq v3.8.7 |
rabbitmq-server v3.8.x 除了支持默认集群模式
以及经典的mirrors queue
集群模式外,还支持 Quorum queues
根据 CentOS7 安装配置RabbitMQ3.8.x [yum方式] 配置3台服务器的erlang以及rabbitmq-server组件。
yum方式安装会自动创建一个启动rabbitmq的账户 rabbitmq
cat /etc/password
rabbitmq:x:598:499:RabbitMQ messaging server:/var/lib/rabbitmq:/sbin/nologin
也就是说 .erlang.cookie
文件在/var/lib/rabbitmq 目录下[该文件如果不存在在rabbitmq启动后自动创建],构建mirroring queue就是保住集群内各节点的.erlang.cookie内容一致
备注:如果.erlang.cookie
文件不存在,启动rabbitmq去自动生成
vi /etc/hosts
...
10.122.151.8 tjdatarabbitmq-shqstst-10
10.122.151.9 tjdatarabbitmq-shqstst-11
10.122.151.10 tjdatarabbitmq-shqstst-12
systemctl start rabbitmq-server.service
ls -la /var/lib/rabbitmq/
total 8
drwxr-xr-x 3 rabbitmq rabbitmq 42 Sep 1 16:57 .
drwxr-xr-x. 29 root root 4096 Sep 1 16:44 ..
-r-------- 1 rabbitmq rabbitmq 20 Sep 1 00:00 .erlang.cookie
drwxr-x--- 4 rabbitmq rabbitmq 199 Sep 1 17:03 mnesia
.erlang.cookie
文件,保证各节点一致scp /var/lib/rabbitmq/.erlang.cookie tjdatarabbitmq-shqstst-11:/var/lib/rabbitmq/.erlang.cookie
scp /var/lib/rabbitmq/.erlang.cookie tjdatarabbitmq-shqstst-12:/var/lib/rabbitmq/.erlang.cookie
chown rabbitmq:rabbitmq /var/lib/rabbitmq/.erlang.cookie
chmod 400 /var/lib/rabbitmq/.erlang.cookie
systemctl start rabbitmq-server.service
systemctl enable rabbitmq-server.service
systemctl status rabbitmq-server.service
可以看到各节点还是各自为战,需要加入集群
rabbitmqctl cluster_status
这里将之后的节点统一加入到第一个节点
# 第二个节点 tjdatarabbitmq-shqstst-11
rabbitmqctl stop_app
rabbitmqctl join_cluster rabbit@tjdatarabbitmq-shqstst-10
# 如果设置为内存节点可以加参数 rabbitmqctl join_cluster --ram rabbit@tjdatarabbitmq-shqstst-10
rabbitmqctl start_app
rabbitmqctl cluster_status
# 第三个节点 tjdatarabbitmq-shqstst-12
rabbitmqctl stop_app
rabbitmqctl join_cluster rabbit@tjdatarabbitmq-shqstst-10
rabbitmqctl start_app
rabbitmqctl cluster_status
以上就完成了默认集群模式的配置
镜像模式集群基于默认模式集群(也就是到这里前面的配置一模一样),这里配置所有队列都镜像[可以根据需要配置指定匹配的队列进行镜像]。
rabbitmqctl set_policy ha-all "^" '{"ha-mode":"all"}'
Setting policy "ha-all" for pattern "^" to "{"ha-mode":"all"}" with priority "0" for vhost "/" ...
rabbitmqctl list_policies
Listing policies for vhost "/" ...
vhost name pattern apply-to definition priority
/ ha-all ^ all {
"ha-mode":"all"} 0
在任意节点执行 rabbitmqctl cluster_status
Cluster status of node rabbit@tjdatarabbitmq-shqstst-10 ...
Basics
Cluster name: rabbit@tjdatarabbitmq-shqstst-10
Disk Nodes
rabbit@tjdatarabbitmq-shqstst-10
rabbit@tjdatarabbitmq-shqstst-11
rabbit@tjdatarabbitmq-shqstst-12
Running Nodes
rabbit@tjdatarabbitmq-shqstst-10
rabbit@tjdatarabbitmq-shqstst-11
rabbit@tjdatarabbitmq-shqstst-12
Versions
rabbit@tjdatarabbitmq-shqstst-10: RabbitMQ 3.8.7 on Erlang 22.3.4.10
rabbit@tjdatarabbitmq-shqstst-11: RabbitMQ 3.8.7 on Erlang 22.3.4.10
rabbit@tjdatarabbitmq-shqstst-12: RabbitMQ 3.8.7 on Erlang 22.3.4.10
以上所有节点都是磁盘节点(disk type),可以只保留一个磁盘节点,其他修改为内存节点
# 第二节点举例
rabbitmqctl stop_app
rabbitmqctl change_cluster_node_type ram
rabbitmqctl start_app
# 查看下可以看到,第二个节点已经配置为ram节点
rabbitmqctl cluster_status
Cluster status of node rabbit@tjdatarabbitmq-shqstst-10 ...
Basics
Cluster name: rabbit@tjdatarabbitmq-shqstst-10
Disk Nodes
rabbit@tjdatarabbitmq-shqstst-10
rabbit@tjdatarabbitmq-shqstst-12
RAM Nodes
rabbit@tjdatarabbitmq-shqstst-11
到这里mirroring queue模式的镜像集群配置完成可以使用了。