RabbitMQ集群部署指南
RabbitMQ的运行依赖于Erlang环境,版本需严格对应。需先安装Erlang再部署RabbitMQ。
版本兼容性参考:https://www.rabbitmq.com/docs/which-erlang
Erlang包:erlang_package.rpm
RabbitMQ包:rabbitmq_package.rpm
一、环境准备
所有节点执行以下操作
rpm -ivh erlang_package.rpm
二、软件安装
所有节点执行
# 配置主机映射,根据实际环境调整
vi /etc/hosts
192.168.193.18 node1
192.168.193.21 node2
192.168.193.27 node3
# 安装依赖组件
rpm -ivh tcp_wrappers.rpm
rpm -ivh readline.rpm
rpm -ivh readline-devel.rpm
rpm -ivh logrotate.rpm
rpm -ivh --nodeps --nosignature socat.rpm
# 安装消息中间件
rpm -ivh rabbitmq_package.rpm
# 启动服务
systemctl start rabbitmq
# 设置开机启动
systemctl enable rabbitmq
# 检查服务状态
systemctl status rabbitmq
# 开启管理插件
rabbitmq-plugins enable rabbitmq_management
# 验证端口监听状态
netstat -tuln | grep 15672
访问http://节点IP:15672,默认凭证guest/guest,仅支持本机访问。
三、用户权限配置
# 创建远程访问用户
rabbitmqctl add_user admin StrongPass123
# 分配管理员权限
rabbitmqctl set_user_tags admin administrator
# 配置资源权限
rabbitmqctl set_permissions -p / admin ".*" ".*" ".*"
四、数据目录配置
所有节点执行
# 创建自定义存储路径
mkdir -p /data/mq/{data,logs}
# 设置权限
chmod 755 -R /data/mq
chown rabbitmq:rabbitmq -R /data/mq/
# 修改配置文件
vim /etc/rabbitmq/rabbitmq-env.conf
# 添加以下配置
RABBITMQ_MNESIA_BASE=/data/mq/data
RABBITMQ_LOG_BASE=/data/mq/logs
# 重启服务生效
systemctl restart rabbitmq
五、集群节点同步
RabbitMQ集群依赖Erlang集群认证机制,所有节点需保持cookie一致。
yum安装的cookie路径:/var/lib/rabbitmq/.erlang.cookie
#1. 停止所有节点服务
systemctl stop rabbitmq
#2. 同步cookie文件
scp /var/lib/rabbitmq/.erlang.cookie node2:/var/lib/rabbitmq/
scp /var/lib/rabbitmq/.erlang.cookie node3:/var/lib/rabbitmq/
#3. 启动服务
systemctl start rabbitmq
六、集群组建
以node1为基准节点,node2和node3执行以下操作
# 停止应用
rabbitmqctl stop_app
# 重置节点
rabbitmqctl reset
# 加入集群
rabbitmqctl join_cluster --ram rabbit@node1
# 启动应用
rabbitmqctl start_app
七、集群状态验证
# 查看节点列表
rabbitmqctl cluster_status
# Web界面检查节点状态
八、高可用配置
普通集群存在单点故障风险,通过镜像策略实现数据复制
# 配置自动镜像策略
rabbitmqctl set_policy ha-all "^" '{"ha-mode":"all"}'
九、镜像验证
# 创建测试队列
在Web界面创建队列test-ha-queue
# 检查镜像状态
队列详情页显示主节点和从节点信息
十、故障测试
# 停止主节点服务
systemctl stop rabbitmq
# 验证故障转移
Web界面自动切换到其他节点
# 恢复节点服务
systemctl start rabbitmq
# 清理测试队列
rabbitmqctl delete_queue test-ha-queue
