RabbitMQ消息队列CentOS部署指南
小樊
47
2025-11-25 20:18:09
一 环境准备与版本选择
- 适用系统:CentOS 7/8(示例使用 x86_64),建议内核与基础工具保持更新。
- 版本匹配:安装前务必确认 Erlang 与 RabbitMQ 的版本兼容矩阵,避免不兼容导致启动失败或异常。
- 基础依赖:安装 Erlang 时建议先安装 socat(部分 RPM 构建依赖),可减少安装报错。
- 主机名与解析:确保 /etc/hosts 正确解析本机 FQDN/短主机名,否则节点间通信与 CLI 可能失败。
- 安全策略:如启用 firewalld/SELinux,需提前规划端口放行与策略调整,避免访问与管理受阻。
二 安装步骤
- 方式一 推荐仓库安装(便于后续升级)
- 安装 Erlang 仓库与包
- 安装脚本方式(自动导入 GPG 与仓库):
- curl -s https://packagecloud.io/install/repositories/rabbitmq/erlang/script.rpm.sh | sudo bash
- curl -s https://packagecloud.io/install/repositories/rabbitmq/rabbitmq-server/script.rpm.sh | sudo bash
- 或手动创建 repo 文件(示例为 EL7,其他版本请替换 $releasever):
- tee /etc/yum.repos.d/erlang.repo <<EOF
[erlang-repo]
name=Erlang Repository
baseurl=https://packages.erlang-solutions.com/erlang/rpm/centos/7/x86_64/
repo_gpgcheck=1
gpgcheck=1
enabled=1
gpgkey=https://packages.erlang-solutions.com/erlang/rpm/centos/7/x86_64/erlang.gpg
EOF
- tee /etc/yum.repos.d/rabbitmq.repo <<EOF
[rabbitmq-server]
name=RabbitMQ Repository
baseurl=https://packagecloud.io/rabbitmq/rabbitmq-server/el/7/$basearch
repo_gpgcheck=1
gpgcheck=1
enabled=1
gpgkey=https://packagecloud.io/rabbitmq/rabbitmq-server/gpgkey
EOF
- 安装与启动
- sudo yum install -y erlang rabbitmq-server
- sudo systemctl start rabbitmq-server && sudo systemctl enable rabbitmq-server
- 方式二 RPM 离线安装(无外网或内网环境)
- 下载匹配版本的 Erlang 与 RabbitMQ RPM 包(注意版本兼容),先安装依赖:sudo yum install -y socat
- 安装:rpm -ivh erlang-.rpm rabbitmq-server-.noarch.rpm
- 启动:sudo systemctl start rabbitmq-server && sudo systemctl enable rabbitmq-server
- 验证安装
- 服务状态:sudo systemctl status rabbitmq-server
- 节点状态:rabbitmqctl status
三 基础配置与访问控制
- 启用管理插件与访问
- 启用插件:sudo rabbitmq-plugins enable rabbitmq_management
- 访问地址:http://<服务器IP>:15672,默认账号 guest/guest(仅限本机访问)。
- 创建管理员与虚拟主机
- 新建用户:sudo rabbitmqctl add_user admin StrongPass!
- 设置角色:sudo rabbitmqctl set_user_tags admin administrator
- 新建 vhost:sudo rabbitmqctl add_vhost /prod
- 赋权:sudo rabbitmqctl set_permissions -p /prod admin “." ".” “.*”
- 配置文件与目录
- 主配置:/etc/rabbitmq/rabbitmq.conf
- 环境配置:/etc/rabbitmq/rabbitmq-env.conf
- 数据目录:/var/lib/rabbitmq/(含 .erlang.cookie 等敏感文件,注意权限)
四 防火墙与 SELinux 设置
- firewalld 放行端口
- AMQP:5672/TCP,管理界面:15672/TCP
- 命令:
- sudo firewall-cmd --permanent --zone=public --add-port=5672/tcp
- sudo firewall-cmd --permanent --zone=public --add-port=15672/tcp
- sudo firewall-cmd --reload
- SELinux
- 如遇插件或管理访问受限,可临时或策略性调整(示例为允许 httpd 网络连通性,按需使用):
- sudo setsebool -P httpd_can_network_connect 1
- 生产环境建议基于最小权限原则进行策略配置,而非全局放行。
五 快速验证与常见问题
- 快速验证
- 管理界面:浏览器访问 http://:15672,使用新建的 admin 登录,确认节点、连接、队列视图正常。
- CLI 验证:rabbitmqctl status 查看节点与运行时信息。
- 命令行工具:使用 rabbitmqadmin 进行队列/交换机/绑定声明与收发测试(需先启用管理插件)。
- 常见问题与排查
- 节点不可达或 CLI 认证失败:检查 /etc/hosts 主机名解析、FQDN 一致性、以及 .erlang.cookie 是否一致(集群场景尤为重要)。
- 管理界面无法远程访问:确认 15672 已放行、插件已启用、以及应用监听地址配置正确。
- 安装依赖失败:安装 socat 后重试 Erlang/RabbitMQ 安装。