需求
因项目要升级rabbitmq集群,需在测试环境搭建。
环境
系统 |
IP |
软件版本 |
主机名 |
centos7.6 |
10.208.50.27 |
3.8.9 |
mq1 |
centos7.6 |
10.208.50.28 |
3.8.9 |
mq2 |
centos7.6 |
10.208.50.35 |
3.8.9 |
mq3 |
三台机器分别修改主机名和hosts
hostnamectl set-hostname mq1
hostnamectl set-hostname mq2
hostnamectl set-hostname mq3
cat <<EOF>> /etc/hosts
10.208.50.27 mq1
10.208.50.28 mq2
10.208.50.35 mq3
EOF
安装程序
#以下步骤三台都要操作
yum install wget -y
wget http://10.208.39.147/dl/rabbitmq/erlang-23.1.3-1.el7.x86_64.rpm
wget http://10.208.39.147/dl/rabbitmq/rabbitmq-server-3.8.9-1.el7.noarch.rpm
yum localinstall erlang-23.1.3-1.el7.x86_64.rpm rabbitmq-server-3.8.9-1.el7.noarch.rpm -y
配置
# 我这里需要修改 RabbitMQ 的默认数据
mkdir -p /data/rabbitmq/{mnesia,log}chown -R rabbitmq.rabbitmq /data/rabbitmq/
cat <<EOF> /etc/rabbitmq/rabbitmq-env.conf
RABBITMQ_MNESIA_BASE=/data/rabbitmq/mnesia
RABBITMQ_LOG_BASE=/data/rabbitmq/log
EOF
chown -R rabbitmq.rabbitmq /etc/rabbitmq/
systemctl start rabbitmq-server
systemctl status rabbitmq-server
rabbitmq-plugins enable rabbitmq_management
搭建集群
#在mq1操作
scp /var/lib/rabbitmq/.erlang.cookie mq2:/var/lib/rabbitmq
scp /var/lib/rabbitmq/.erlang.cookie mq3:/var/lib/rabbitmq
# mq2、mq3 操作
chmod 400 /var/lib/rabbitmq/.erlang.cookie
#复制cookie后要重启一下服务,不然会报错(看网上其他帖子没重启服务,可能只有我遇到了吧)
systemctl restart rabbitmq-server
rabbitmqctl stop_app
rabbitmqctl reset
# 设置为内存节点
rabbitmqctl join_cluster --ram rabbit@mq1
rabbitmqctl start_app
rabbitmqctl cluster_status
#启动web管理插件,mq1操作
rabbitmq-plugins enable rabbitmq_management
rabbitmqctl add_user admin admin123
rabbitmqctl set_user_tags admin administrator --设置admin为administrator权限
镜像集群
镜像队列机制就是将队列在 N 个节点之间设置主从关系,消息会在 N 个节点之间进行自动同步,且如果其中一个节点不可用,并不会导致消息丢失或服务不可用的情况,提升 MQ 集群的整体高可用性。
rabbitmqctl set_policy ha-all "^" '{"ha-mode":"all"}'