zoukankan      html  css  js  c++  java
  • Rabbitmq集群升级方案

    升级Rabbitmq 3.6.3版本至3.6.6版本,升级过程中的一些关键步骤记录


    Step 1:

      顺序关闭集群所有节点,这里注意最后一个关闭的节点必须保证为硬盘节点,而非RAM节点;

      centOS 7.x+可使用systemctl工具关闭;

    Step 2:

      备份mnesia数据库,数据库路径如下: 

    /var/lib/rabbitmq/mnesia 

      其中包含该节点集群信息及持久化内容;

      并将该数据库目录名变更为mnesia_xxxx(如mnesia_backup_20161213),因为新的rabbitmq服务启动后会重新建立mnesia数据库;

    Step 3:

      顺序升级所有节点rabbitmq-server版本;

    Step 4:

      先启动集群主节点,之后重新创建用户及用户组:

    $sudo rabbitmqctl add_user jiak jiak //新增用户
    $sudo rabbitmqctl set_user_tags jiak administrator //设置用户组(标签)
    $sudo rabbitmqctl set_permissions -p / jiak "." "." ".*" //为用户分配权限

    Step 5:

      随后开始启动从节点,启动后仍然先创建用户组,与Step4相同;

      然后将从节点加入主节点集群:

    $sudo rabbitmqctl stop_app
    $sudo rabbitmqctl join_cluster rabbit@gs-server-xxxx
    $sudo rabbitmqctl start_app

    Step 6:

      对集群所有从节点重复Step5,直到整个集群所有节点正常启动并加入主节点集群。


    上述步骤对非在线升级没有问题,但是升级前队列中的消息,包括host,exchange等信息均会丢失,如果需要保留原有的队列相关信息,需要回复原有mnesia数据库;

    以下步骤为恢复方法(该部分未测试):

    Step1:顺序停止集群中所有节点服务,确保最后一个中止服务的节点为Disc节点而非RAM节点;

    Step2:每个节点原有mnesia数据库改名,最后一个节点的mnesia数据库备份改名;

    Step3:升级每个节点的rabbitmq-server版本;

    Step4:中止epmd服务(Erlang port mapper daemon),如果/var/lib/rabbitmq/mnesia目录存在,删除掉,然后拷贝备份的mnesia数据库目录过来;

    Step5:启动主节点的rabbitmq-server服务,并添加用户及用户组权限;

    然后对集群中所有从节点,依次按上一部分的Step5,启动服务,添加用户/组,加入主节点集群即可。

    注:后一种恢复方案未经过亲自验证。

  • 相关阅读:
    理解区块链背后的Merkle Tree
    黑科技!当会爬虫的Python遇上会画图的FineBI……
    PlayFramework 1.x 生产环境部署 源码编译
    特别推荐:系统性能提升优先法宝 | 缓存应用实践
    Python爬虫入门教程 38-100 教育部高校名单数据爬虫 scrapy
    BI分析工具选型:从PowerBI到FineBI的9个理由!
    集群的定义以及类别定义
    python cx_oracle 绑定变量
    [故障解决]图文:windows apache无法启用 端口被占用
    设计模式之抽象工厂模式
  • 原文地址:https://www.cnblogs.com/you-you-111/p/6169842.html
Copyright © 2011-2022 走看看