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,启动服务,添加用户/组,加入主节点集群即可。

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

  • 相关阅读:
    JavaScript系列---【分析局部作用域下的预解析】
    javaScript系列---【分析全局作用域下的预解析】
    javaScript系列---【分析函数的arguments】
    JavaScript系列---【条件if--切换图片案例2 高亮及按钮同步显示】
    javaScript系列---【this详解及call和apply修改this指向】
    JavaScript系列---【选项卡案例】
    JavaScript系列---【QQ列表展开及闭合案例】
    系统安装01-CentOS6系统安装
    hdoj--3635--Dragon Balls(并查集记录深度)
    hdoj--1281--棋盘游戏(最小点覆盖+枚举)
  • 原文地址:https://www.cnblogs.com/you-you-111/p/6169842.html
Copyright © 2011-2022 走看看