CentOS7 配置RabbitMQ3.8.x集群[mirroring queue]

相关记录链接地址 :

  • 第一篇 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组件。

二、集群配置[mirroring queue模式]

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去自动生成

2.1 配置各节点hosts文件

vi /etc/hosts
...
10.122.151.8  tjdatarabbitmq-shqstst-10
10.122.151.9  tjdatarabbitmq-shqstst-11
10.122.151.10  tjdatarabbitmq-shqstst-12

2.2 启动其中1台rabbitmq节点,自动生成.erlang.cookie

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

2.3 拷贝.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

2.4 启动所有节点

systemctl start rabbitmq-server.service
systemctl enable rabbitmq-server.service
systemctl status rabbitmq-server.service


可以看到各节点还是各自为战,需要加入集群
rabbitmqctl cluster_status

2.5 节点加入组成默认模式集群

这里将之后的节点统一加入到第一个节点

# 第二个节点 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

以上就完成了默认集群模式的配置

2.6 配置镜像模式集群

镜像模式集群基于默认模式集群(也就是到这里前面的配置一模一样),这里配置所有队列都镜像[可以根据需要配置指定匹配的队列进行镜像]。

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

浏览器登录UI,查看
CentOS7 配置RabbitMQ3.8.x集群[mirroring queue]_第1张图片
CentOS7 配置RabbitMQ3.8.x集群[mirroring queue]_第2张图片

到这里mirroring queue模式的镜像集群配置完成可以使用了。

你可能感兴趣的:(Linux,rabbitmq,rabbitmq集群)