centos

centos rabbitmq版本如何升级

小樊
45
2025-10-25 23:39:35
栏目: 智能运维

CentOS环境下RabbitMQ版本升级流程及注意事项

一、升级前准备

  1. 备份数据与配置
    升级前必须备份RabbitMQ的关键数据(队列、交换机、绑定关系、用户权限等)和配置文件,避免升级失败导致数据丢失。

    # 停止RabbitMQ服务
    sudo systemctl stop rabbitmq-server
    
    # 备份数据目录(默认路径:/var/lib/rabbitmq)
    sudo cp -a /var/lib/rabbitmq /var/lib/rabbitmq-backup
    
    # 备份配置文件(默认路径:/etc/rabbitmq)
    sudo cp -a /etc/rabbitmq /etc/rabbitmq-backup
    
  2. 检查Erlang版本兼容性
    RabbitMQ对Erlang/OTP版本有严格要求(如RabbitMQ 3.11.x需Erlang 23+,RabbitMQ 4.0+需Erlang 26+)。可通过以下命令查看当前Erlang版本:

    erl -eval 'erlang:display(erlang:system_info(otp_release)), halt()' -noshell
    

    若版本不兼容,需先升级Erlang(参考RabbitMQ官方Erlang版本要求)。

  3. 检查插件与客户端兼容性
    确认当前使用的插件(如rabbitmq_managementrabbitmq_federation)是否支持目标版本,避免升级后插件失效。同时,检查Java/Python等客户端库是否与新版本兼容(如Spring AMQP 2.5+支持RabbitMQ 4.0+)。

二、具体升级步骤

1. 卸载旧版本(可选但推荐)

若旧版本是通过RPM包安装的,可先卸载以避免冲突:

sudo yum remove -y rabbitmq-server erlang*  # 卸载RabbitMQ及Erlang
2. 安装新版本Erlang

根据RabbitMQ版本要求,下载并安装对应Erlang RPM包(以Erlang 23为例):

# 添加Erlang官方YUM仓库
sudo tee /etc/yum.repos.d/rabbitmq-erlang.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
       https://dl.bintray.com/rabbitmq/Keys/rabbitmq-release-signing-key.asc
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
metadata_expire=300
EOF

# 安装Erlang
sudo yum install -y erlang
# 验证安装
erl -version  # 应输出Erlang 23.x版本
3. 下载并安装新版本RabbitMQ

从RabbitMQ官方下载页面获取CentOS对应的RPM包(如RabbitMQ 3.11.5):

# 下载RabbitMQ RPM包(以3.11.5为例)
wget https://github.com/rabbitmq/rabbitmq-server/releases/download/v3.11.5/rabbitmq-server-3.11.5-1.el7.noarch.rpm

# 安装RabbitMQ
sudo rpm -ivh rabbitmq-server-3.11.5-1.el7.noarch.rpm
4. 清理旧数据(可选,避免残留冲突)

若升级前未卸载旧版本,需清理旧版RabbitMQ的残留数据(注意:此操作会删除所有队列、交换机等数据,仅在确认备份完整后执行):

sudo rm -rf /var/lib/rabbitmq/mnesia/*
5. 启动RabbitMQ服务并验证
# 启动服务
sudo systemctl start rabbitmq-server

# 设置开机自启
sudo systemctl enable rabbitmq-server

# 检查服务状态
sudo systemctl status rabbitmq-server

# 查看RabbitMQ版本(确认升级成功)
sudo rabbitmqctl status | grep -i "version"

三、集群环境升级注意事项

  1. 滚动升级(推荐)
    集群环境下,需逐个节点进行升级,确保集群高可用:

    • 停止一个节点(rabbitmqctl stop);
    • 升级该节点的RabbitMQ和Erlang版本;
    • 重启节点并加入集群(rabbitmqctl start_app);
    • 重复上述步骤直至所有节点升级完成。
  2. 集群兼容性要求
    集群中所有节点的RabbitMQ版本需在官方兼容矩阵允许范围内(如3.8.x节点可与3.9.x节点共存,但3.8.x节点无法加入4.0+集群)。

四、升级后验证

  1. 检查集群状态

    sudo rabbitmqctl cluster_status
    

    确认所有节点已加入集群,且状态为running

  2. 测试消息生产消费
    使用生产者发送测试消息,消费者接收消息,验证消息是否正常流转(确保delivery_mode=2(持久化)和auto_ack=false(手动ACK)已配置,避免消息丢失)。

  3. 验证插件功能
    确保rabbitmq_management等插件已启用(rabbitmq-plugins list),并通过浏览器访问http://<服务器IP>:15672(默认端口15672)登录管理界面,检查队列、用户、权限等配置是否正常。

五、常见问题解决

通过以上步骤,可在CentOS环境下安全升级RabbitMQ版本,确保数据完整性和服务连续性。升级前务必做好备份,并在低峰期执行操作,降低风险。

0
看了该问题的人还看了