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,啟動服務,添加用戶/組,加入主節點集群即可。

 

注:后一種恢復方案未經過親自驗證。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM