RabbitMQ 镜像集群部署
本文描述RabbitMQ三节点镜像集群的搭建流程,本文使用的三个节点的信息如下:
IP | 主机名 | 类型 |
---|---|---|
172.43.16.70 | node1 | cluster |
172.43.16.71 | node2 | slave |
172.43.16.72 | node3 | slave |
本文使用的程序包:
- erlang-21.3.8.8-1.e17.x86_64.rpm
- rabbitmq-server-3.8.0-1.e17.noarch.rpm
- socat-1.7.3.2-2.e17.x86_64.rpm
一、修改主机名
三台主机都需要做如下的主机名相关配置。
-
修改
/etc/hosts
文件,添加以下主机 IP 配置192.168.10.1 node1 192.168.10.2 node2 192.168.10.3 node3
-
修改主机名:以
node1
的修改为例sudo hostnamectl set-hostname node1
临时修改,重启后失效,需要重新修改。
sudo hostname node1
修改主机名对当前 session
不会生效,需要断开重新连接。
二、安装RabbitMQ
执行如下安装命令:
sudo rpm -i erlang-21.3.8.8-1.e17.x86_64.rpm
sudo rpm -i socat-1.7.3.2-2.e17.x86_64.rpm
sudo rpm -i rabbitmq-server-3.8.0-1.e17.noarch.rpm
安装完成后可使用如下命令启动或关闭RabbitMQ服务:
# 启动服务
sudo service rabbitmq-server start
# 关闭服务
sudo service rabbitmq-server stop
# 查看服务状态
sudo service rabbitmq-server status
# 查看RabbitMQ状态
sudo rabbitmqctl status
启动 RabbitMQ
服务后查看 RabbitMQ
状态,节点名称必须为 rabbit@主机名
,否则集群会出现问题,如下是 node1
的节点状态所示。
三、集群配置
-
复制
.erlang.cookie
在
cluster
节点/var/lib/rabbitmq
目录下存在.erlang.cookie
文件,如果不存在需要先启动一下RabbitMQ
服务,即可生成文件。需要将
cluster
节点的.erlang.cookie
复制到slave
节点覆盖原有文件,保持三个节点文件内容一致。并保持所有用户和组为rabbitmq
,仅所有者只读。相关命令:
# 复制 sudo scp root@172.16.43.70:/var/lib/rabbitmq/.erlang.cookie /var/lib/rabbitmq/ # 修改用户组 sudo chown rabbitmq:rabbitmq /var/lib/rabbitmq/.erlang.cookie # 仅只有所有者可读 sudo chmod 400 /var/lib/rabbitmq/.erlang.cookie
-
启动三个节点的
RabbitMQ
服务。sudo service rabbitmq-server start
-
slave
设置cluster
节点:在两个
slave
分别输入如下命令:sudo rabbitmqctl stop_app sudo rabbitmqctl join_cluster rabbit@node1 sudo rabbitmqctl start_app
-
查看集群状态
输入如下命令查看集群状态,可以看到三个节点信息。
sudo rabbitmqctl cluster_status
-
添加集群同步策略
-
ha-mode: all,在集群中所有的节点上进行镜像
-
ha-sync-mode: automatic,在集群节点宕机重新连接后自动同步
-
在任意一台服务器执行如下命令添加集群同步策略。
# 添加策略
sudo rabbitmqctl set_policy ha-all "^" '{"ha-mode":"all","ha-sync-mode":"automatic"}'
# 查看策略
sudo rabbitmqctl list_policies
四、其他配置
-
账号配置
# 添加username账号 sudo rabbitmqctl add_user username password # username账号设置角色为administrator sudo rabbitmqctl set_user_tags username administrator # 查看角色列表 sudo rabbitmqctl list_users # 角色添加权限 sudo rabbitmqctl set_permissions -p "/" username ".*" ".*" ".*" # 权限列表 sudo rabbitmqctl list_permissions
-
打开可视化管理界面
rabbitmq-plugins enable rabbitmq_management
通过:http://127.0.0.1:15672 访问可视化界面。