当前位置:首页 > Centos > 正文

构建高可用 CentOS 集群消息队列系统(RabbitMQ 在 CentOS 集群中的部署与配置指南)

在现代分布式系统中,消息队列扮演着至关重要的角色。它能够解耦服务、削峰填谷、提升系统可靠性。本文将手把手教你如何在 CentOS 集群 上搭建一个高可用的 RabbitMQ 消息队列 系统,即使你是 Linux 新手也能轻松上手。

一、准备工作

你需要准备至少两台运行 CentOS 7 或 CentOS 8 的服务器(建议使用 CentOS 7,兼容性更好),并确保它们之间网络互通。以下操作以 root 用户执行,或使用 sudo 提权。

二、安装 Erlang 和 RabbitMQ

RabbitMQ 是用 Erlang 编写的,因此首先需要安装 Erlang 运行环境。

# 添加 Erlang 官方仓库yum install -y https://github.com/rabbitmq/erlang-rpm/releases/download/v23.3.4.11/erlang-23.3.4.11-1.el7.x86_64.rpm# 添加 RabbitMQ 官方仓库curl -s https://packagecloud.io/install/repositories/rabbitmq/rabbitmq-server/script.rpm.sh | sudo bash# 安装 RabbitMQ Serveryum install -y rabbitmq-server

三、启动并启用 RabbitMQ 服务

# 启动服务systemctl start rabbitmq-server# 设置开机自启systemctl enable rabbitmq-server

四、启用管理插件(可选但推荐)

RabbitMQ 提供了 Web 管理界面,方便监控和操作。

rabbitmq-plugins enable rabbitmq_management

默认情况下,Web 管理界面监听 15672 端口。你可以通过浏览器访问 http://你的服务器IP:15672。初始用户名和密码都是 guest(仅限本地登录)。

构建高可用 CentOS 集群消息队列系统(RabbitMQ 在 集群中的部署与配置指南) CentOS集群 消息队列 RabbitMQ安装配置 高可用消息系统 第1张

五、配置 CentOS 集群(多节点)

假设你有三台服务器:node1 (192.168.1.10)、node2 (192.168.1.11)、node3 (192.168.1.12)。

  1. 同步 Erlang Cookie:所有节点必须使用相同的 .erlang.cookie 文件(位于 /var/lib/rabbitmq/)。
    # 在 node1 上执行(假设已生成 cookie)cat /var/lib/rabbitmq/.erlang.cookie# 将该 cookie 内容复制到 node2 和 node3 的相同路径,并设置权限chmod 600 /var/lib/rabbitmq/.erlang.cookiechown rabbitmq:rabbitmq /var/lib/rabbitmq/.erlang.cookie
  2. 停止 RabbitMQ 服务(在所有节点上):
    systemctl stop rabbitmq-server
  3. 在 node2 和 node3 上加入集群(以 node1 为主节点):
    # 在 node2 上执行rabbitmq-server -detachedrabbitmqctl stop_apprabbitmqctl join_cluster rabbit@node1rabbitmqctl start_app# 在 node3 上执行(同理)rabbitmq-server -detachedrabbitmqctl stop_apprabbitmqctl join_cluster rabbit@node1rabbitmqctl start_app

六、验证集群状态

在任意节点执行以下命令:

rabbitmqctl cluster_status

如果看到所有节点都在 nodes 列表中,说明 CentOS 集群 中的 RabbitMQ 已成功组成集群。

七、安全与防火墙设置

确保以下端口开放(使用 firewalld):

  • 5672:AMQP 客户端连接端口
  • 15672:Web 管理界面(如启用)
  • 25672:Erlang 节点间通信(用于集群)
  • 4369:epmd(Erlang Port Mapper Daemon)
firewall-cmd --permanent --add-port=5672/tcpfirewall-cmd --permanent --add-port=15672/tcpfirewall-cmd --permanent --add-port=25672/tcpfirewall-cmd --permanent --add-port=4369/tcpfirewall-cmd --reload

八、总结

通过本教程,你已经成功在 CentOS 集群 上部署了一个高可用的 消息队列 系统。RabbitMQ 的集群模式提供了故障转移和负载均衡能力,是构建健壮微服务架构的关键组件。后续你可以根据业务需求配置镜像队列、用户权限、虚拟主机等高级功能。

记住,一个稳定可靠的 高可用消息系统 是保障业务连续性的基石。希望这篇教程能帮助你迈出分布式系统建设的第一步!