1. RabbitMQ简介与安装准备
RabbitMQ是一个开源的消息代理和队列服务器,用于在分布式系统中存储和转发消息。它实现了高级消息队列协议(AMQP),支持多种消息传递模式,是企业级应用集成中常用的中间件解决方案。
在Linux系统上安装RabbitMQ前,需要确认以下准备工作:
- 操作系统版本:支持大多数主流Linux发行版(Ubuntu、CentOS、Debian等)
- 系统权限:需要root或sudo权限
- 内存要求:建议至少1GB可用内存
- 磁盘空间:至少100MB可用空间
- 网络配置:确保5672(AMQP默认端口)和15672(管理界面端口)未被占用
提示:生产环境建议使用专用服务器,避免与其他服务共用资源。如果是在虚拟机上安装,请确保分配足够的CPU和内存资源。
2. 安装Erlang运行环境
RabbitMQ是基于Erlang语言开发的,因此需要先安装Erlang运行环境。以下是针对不同Linux发行版的安装方法:
2.1 Ubuntu/Debian系统安装
bash复制# 添加Erlang Solutions仓库
wget https://packages.erlang-solutions.com/erlang-solutions_2.0_all.deb
sudo dpkg -i erlang-solutions_2.0_all.deb
sudo apt-get update
# 安装Erlang
sudo apt-get install -y erlang
2.2 CentOS/RHEL系统安装
bash复制# 添加EPEL仓库
sudo yum install -y epel-release
# 安装Erlang
sudo yum install -y erlang
安装完成后验证Erlang是否安装成功:
bash复制erl -version
3. 安装RabbitMQ服务器
3.1 通过包管理器安装
对于Ubuntu/Debian系统:
bash复制# 添加RabbitMQ仓库密钥
curl -fsSL https://github.com/rabbitmq/signing-keys/releases/download/2.0/rabbitmq-release-signing-key.asc | sudo apt-key add -
# 添加仓库
echo "deb https://dl.bintray.com/rabbitmq/debian $(lsb_release -sc) main" | sudo tee /etc/apt/sources.list.d/rabbitmq.list
# 更新并安装
sudo apt-get update
sudo apt-get install -y rabbitmq-server
对于CentOS/RHEL系统:
bash复制# 添加仓库
sudo tee /etc/yum.repos.d/rabbitmq.repo <<EOF
[rabbitmq_erlang]
name=rabbitmq_erlang
baseurl=https://packagecloud.io/rabbitmq/erlang/el/7/\$basearch
repo_gpgcheck=1
gpgcheck=1
enabled=1
gpgkey=https://packagecloud.io/rabbitmq/erlang/gpgkey
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
metadata_expire=300
[rabbitmq_server]
name=rabbitmq_server
baseurl=https://packagecloud.io/rabbitmq/rabbitmq-server/el/7/\$basearch
repo_gpgcheck=1
gpgcheck=0
enabled=1
gpgkey=https://packagecloud.io/rabbitmq/rabbitmq-server/gpgkey
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
metadata_expire=300
EOF
# 安装RabbitMQ
sudo yum install -y rabbitmq-server
3.2 手动下载安装
如果无法使用包管理器,可以从官网下载对应版本的安装包:
bash复制# 下载最新稳定版
wget https://github.com/rabbitmq/rabbitmq-server/releases/download/v3.9.11/rabbitmq-server-generic-unix-3.9.11.tar.xz
# 解压
tar -xf rabbitmq-server-generic-unix-3.9.11.tar.xz -C /usr/local/
# 创建符号链接
ln -s /usr/local/rabbitmq_server-3.9.11 /usr/local/rabbitmq
4. 配置与启动RabbitMQ
4.1 基本配置
RabbitMQ的主要配置文件位于/etc/rabbitmq/rabbitmq.conf(或/usr/local/rabbitmq/etc/rabbitmq/rabbitmq.conf)。以下是常用配置项:
ini复制# 监听地址和端口
listeners.tcp.default = 5672
# 管理界面端口
management.tcp.port = 15672
# 日志级别
log.level = info
# 默认虚拟主机
default_vhost = /
# 默认用户
default_user = guest
default_pass = guest
注意:生产环境务必修改默认用户名和密码,并限制访问IP。
4.2 启动服务
对于通过包管理器安装的版本:
bash复制# 启动服务
sudo systemctl start rabbitmq-server
# 设置开机启动
sudo systemctl enable rabbitmq-server
# 查看状态
sudo systemctl status rabbitmq-server
对于手动安装的版本:
bash复制# 启动服务
/usr/local/rabbitmq/sbin/rabbitmq-server -detached
# 停止服务
/usr/local/rabbitmq/sbin/rabbitmqctl stop
5. 管理插件与用户配置
5.1 启用管理插件
RabbitMQ提供了一个Web管理界面,需要通过插件启用:
bash复制sudo rabbitmq-plugins enable rabbitmq_management
启用后可以通过浏览器访问:http://服务器IP:15672
5.2 创建管理员用户
默认的guest用户只能从localhost访问,建议创建新用户:
bash复制# 创建用户
sudo rabbitmqctl add_user admin yourpassword
# 设置管理员权限
sudo rabbitmqctl set_user_tags admin administrator
# 设置权限
sudo rabbitmqctl set_permissions -p / admin ".*" ".*" ".*"
5.3 常用管理命令
bash复制# 列出所有用户
rabbitmqctl list_users
# 列出所有虚拟主机
rabbitmqctl list_vhosts
# 列出所有队列
rabbitmqctl list_queues
# 删除队列
rabbitmqctl delete_queue queue_name
6. 常见问题与解决方案
6.1 端口冲突问题
如果遇到端口冲突,可以修改RabbitMQ的监听端口:
ini复制# 修改rabbitmq.conf
listeners.tcp.default = 5673
management.tcp.port = 15673
然后重启服务使配置生效。
6.2 内存不足问题
RabbitMQ默认会使用最多40%的可用内存。如果需要调整:
ini复制# 设置内存限制为1GB
vm_memory_high_watermark.absolute = 1024MB
6.3 磁盘空间不足
当磁盘空间低于配置的阈值时,RabbitMQ会停止接受消息。可以调整阈值:
ini复制# 设置磁盘空间阈值为1GB
disk_free_limit.absolute = 1GB
6.4 集群配置问题
如果需要配置RabbitMQ集群,需要确保:
- 所有节点使用相同的Erlang cookie(位于
/var/lib/rabbitmq/.erlang.cookie) - 主机名解析正确(建议使用/etc/hosts配置)
- 防火墙允许4369(EPMD端口)和25672-25682(节点间通信端口)
7. 性能优化建议
7.1 持久化配置
对于重要消息,建议启用持久化:
ini复制# 启用持久化
queue_durable = true
message_persistence = true
7.2 连接池配置
客户端连接建议使用连接池,避免频繁创建和销毁连接。
7.3 监控与告警
建议启用Prometheus监控插件:
bash复制rabbitmq-plugins enable rabbitmq_prometheus
然后可以通过http://服务器IP:15692/metrics获取监控指标。
7.4 日志轮转
配置日志轮转防止日志文件过大:
bash复制# 编辑logrotate配置
sudo tee /etc/logrotate.d/rabbitmq <<EOF
/var/log/rabbitmq/*.log {
daily
missingok
rotate 7
compress
delaycompress
notifempty
sharedscripts
postrotate
systemctl reload rabbitmq-server >/dev/null 2>&1 || true
endscript
}
EOF
8. 安全加固建议
-
禁用默认guest用户:
bash复制
rabbitmqctl delete_user guest -
限制管理界面访问IP:
ini复制management.tcp.ip = 127.0.0.1 -
启用SSL加密:
ini复制listeners.ssl.default = 5671 ssl_options.cacertfile = /path/to/ca_certificate.pem ssl_options.certfile = /path/to/server_certificate.pem ssl_options.keyfile = /path/to/server_key.pem ssl_options.verify = verify_peer ssl_options.fail_if_no_peer_cert = true -
定期备份配置和数据:
bash复制# 备份配置 cp -R /etc/rabbitmq /backup/rabbitmq_config # 备份数据 rabbitmqctl export_definitions /backup/rabbitmq_definitions.json
9. 卸载RabbitMQ
如果需要卸载RabbitMQ:
bash复制# 停止服务
sudo systemctl stop rabbitmq-server
# 卸载软件包
sudo apt-get remove --purge rabbitmq-server # Ubuntu/Debian
sudo yum remove rabbitmq-server # CentOS/RHEL
# 删除数据目录
sudo rm -rf /var/lib/rabbitmq/
sudo rm -rf /etc/rabbitmq/
# 删除日志
sudo rm -rf /var/log/rabbitmq/
对于手动安装的版本,直接删除安装目录即可:
bash复制rm -rf /usr/local/rabbitmq*
