RabbitMQ Linux集群如何搭建
导读:RabbitMQ Linux集群搭建详细步骤 1. 环境准备 服务器要求:至少准备3台Linux服务器(推荐CentOS 7/8或Ubuntu 20.04+),确保网络互通(同一局域网或公网可达)。 基础配置: 统一时间同步(安装ntp...
RabbitMQ Linux集群搭建详细步骤
1. 环境准备
- 服务器要求:至少准备3台Linux服务器(推荐CentOS 7/8或Ubuntu 20.04+),确保网络互通(同一局域网或公网可达)。
- 基础配置:
- 统一时间同步(安装
ntp
或chrony
服务,避免集群因时间差异引发问题); - 配置
/etc/hosts
文件,将所有节点的IP与主机名映射(如192.168.1.101 node1
、192.168.1.102 node2
、192.168.1.103 node3
),避免DNS解析问题。
- 统一时间同步(安装
2. 安装Erlang与RabbitMQ
RabbitMQ基于Erlang语言开发,需先安装兼容版本的Erlang(可通过rabbitmq-server
官方文档查询对应版本)。
- CentOS系统:
# 安装Erlang(以Erlang 25为例) sudo yum install -y epel-release sudo yum install -y erlang # 安装RabbitMQ sudo yum install -y rabbitmq-server
- Ubuntu/Debian系统:
# 安装Erlang sudo apt update sudo apt install -y erlang # 安装RabbitMQ sudo apt install -y rabbitmq-server
安装完成后,启动RabbitMQ服务并设置开机自启:
sudo systemctl start rabbitmq-server
sudo systemctl enable rabbitmq-server
3. 配置Erlang Cookie(集群认证核心)
RabbitMQ节点间通过Erlang Cookie进行身份验证,所有节点的Cookie文件必须完全一致(包括内容与权限)。
- Cookie位置:默认路径为
/var/lib/rabbitmq/.erlang.cookie
(若为root用户安装,路径可能为/root/.erlang.cookie
)。 - 配置步骤:
- 在主节点(如
node1
)生成Cookie(若已有则跳过):sudo rm -f /var/lib/rabbitmq/.erlang.cookie # 清除旧Cookie(可选) echo "your_secure_cookie_string" | sudo tee /var/lib/rabbitmq/.erlang.cookie # 替换为自定义字符串
- 同步Cookie到所有节点:
sudo scp /var/lib/rabbitmq/.erlang.cookie root@node2:/var/lib/rabbitmq/ sudo scp /var/lib/rabbitmq/.erlang.cookie root@node3:/var/lib/rabbitmq/
- 设置Cookie权限(所有节点执行):
sudo chmod 400 /var/lib/rabbitmq/.erlang.cookie # 仅所有者可读写 sudo chown rabbitmq:rabbitmq /var/lib/rabbitmq/.erlang.cookie # 归属rabbitmq用户
- 在主节点(如
4. 启动RabbitMQ服务并启用管理插件
- 启动服务:在所有节点执行以下命令,启动RabbitMQ并设置为后台运行:
sudo systemctl start rabbitmq-server sudo systemctl status rabbitmq-server # 检查服务状态(需显示“active (running)”)
- 启用管理插件(可选但推荐):通过Web界面管理集群(默认端口15672):
默认管理员账号为sudo rabbitmq-plugins enable rabbitmq_management
guest
(仅限本地访问),建议创建新用户:sudo rabbitmqctl add_user admin your_password # 创建用户 sudo rabbitmqctl set_user_tags admin administrator # 设置管理员权限 sudo rabbitmqctl set_permissions -p / admin ".*" ".*" ".*" # 授权所有权限
5. 组建RabbitMQ集群
- 步骤1:确认主节点状态:在
node1
(主节点)执行以下命令,确保节点处于running
状态:sudo rabbitmqctl cluster_status
- 步骤2:将其他节点加入集群:
- 在
node2
、node3
上停止RabbitMQ应用(无需停止服务):sudo rabbitmqctl stop_app
- 重置节点(首次加入集群时执行,清除本地元数据):
sudo rabbitmqctl reset
- 加入主节点集群(
node1
为主节点,主机名需与/etc/hosts
一致):sudo rabbitmqctl join_cluster rabbit@node1 # 若为内存节点,添加--ram参数(如`--ram`)
- 启动节点应用:
sudo rabbitmqctl start_app
- 在
- 步骤3:验证集群状态:在任意节点执行以下命令,检查所有节点是否已加入:
输出应包含所有节点的sudo rabbitmqctl cluster_status
disc
(磁盘节点)或ram
(内存节点)信息,例如:Cluster status of node rabbit@node1 [{ nodes,[{ disc,[rabbit@node1,rabbit@node2,rabbit@node3]} ]} ]
6. 配置镜像队列(高可用可选)
默认情况下,RabbitMQ队列仅在单个节点存储,若需提高可用性,需配置镜像队列(将队列复制到多个节点)。
- 设置镜像策略(在任意节点执行):
参数说明:sudo rabbitmqctl set_policy ha-all "^" '{ "ha-mode":"all","ha-sync-mode":"automatic"} '
ha-mode="all"
:队列将在所有节点同步复制;ha-sync-mode="automatic"
:自动同步队列内容(可选manual
手动同步)。
- 验证镜像效果:创建队列后,在管理界面或通过命令
rabbitmqctl list_queues name policy
查看队列策略,确认ha-all
已生效。
7. 防火墙与端口配置
确保防火墙允许RabbitMQ的默认端口通行:
- CentOS系统(firewalld):
sudo firewall-cmd --permanent --zone=public --add-port=5672/tcp # AMQP协议端口 sudo firewall-cmd --permanent --zone=public --add-port=15672/tcp # 管理界面端口 sudo firewall-cmd --reload
- Ubuntu系统(ufw):
sudo ufw allow 5672/tcp sudo ufw allow 15672/tcp sudo ufw reload
8. 关键注意事项
- 节点类型:
- 磁盘节点(disc):存储元数据(队列、交换机等),推荐至少2个,确保集群元数据不丢失;
- 内存节点(ram):仅缓存元数据,提升性能,适合高并发场景(但重启后数据丢失)。
加入集群时通过--ram
参数指定内存节点,例如:sudo rabbitmqctl join_cluster --ram rabbit@node1
。
- 网络分区处理:
配置集群分区处理策略,避免网络分区引发脑裂(集群分裂为多个独立集群)。在/etc/rabbitmq/rabbitmq.conf
中添加:
或使用自动恢复插件(cluster_partition_handling = pause_minority # 暂停少数派节点(推荐)
rabbitmq_autoheal
)。 - 数据持久化:
创建队列时设置durable=true
(队列持久化),发送消息时设置delivery_mode=2
(消息持久化),确保重启后数据不丢失。
通过以上步骤,即可完成RabbitMQ Linux集群的搭建。集群搭建后,可通过管理界面(http://<
节点IP>
:15672
)监控节点状态、队列信息及连接情况。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: RabbitMQ Linux集群如何搭建
本文地址: https://pptw.com/jishu/731340.html