RabbitMQ-無法消費


一、現網問題描述

1.理想情況

現網mq倒換演練,即關閉rabbitmq主,此時keepalived的檢測腳本檢查到rabbitmq服務異常,觸發腳本關閉主服務的keepalived,那么keepalived的虛擬ip就會綁定到從服務器上,繼續使用rabbitmq從節點。

2.實際情況

消息隊列無法被消費,必須重啟應用才能正常消費

二、現網應用包參考

rabbitmq3.6.6
rabbitmq3.6.6創建隊列腳本


三、現網問題復現

1.客戶操作

image

2.問題時間線

a、凌晨客戶倒換演練的操作
1、在1機上systemctl stop rabbitmq-server
reboot
重啟后 systemctl status rabbitmq-server
發現mq沒有啟動
然后通過 systemctl list-unit-files | grep mq 確認mq已經設置了開始自啟
保險起見 執行 systemctl enable rabbitmq-server
再重啟一次 reboot
systemctl status rabbitmq-server 確認了mq已經啟動

2、在2機 systemctl stop rabbitmq-server
reboot
重啟后 systemctl status rabbitmq-server
發現mq沒有啟動
然后通過 systemctl list-unit-files | grep mq 發現mq沒有設置開始自啟
執行 systemctl enable rabbitmq-server
再重啟一次 reboot
systemctl status rabbitmq-server 確認了mq已經啟動

b、上午的處理操作
1、在2機上ps -ef | grep mq
kill 掉進程
再執行 systemctl stop rabbitmq-server
systemctl disabled rabbitmq-server
最后執行 rabbitmq-server -detached

2、1機上執行 systemctl restart rabbitmq-server

3.嘗試復現問題

1)正常情況
主mq正常消費消息隊列

2)異常情況-主mq服務異常
此時keepalived每15s檢查主mq服務,發現主mq異常,停止keepalived服務器,keepalived自動綁定到從服務器上,此時從mq繼續正常消費消息隊列

3)異常情況-主keepalived異常
同情況2,直接自動綁定到從服務器上

4)異常情況-從mq或keepalived異常
不影響正常主mq消費

5)異常情況-mq倒換演練-重啟主服務器
重啟操作后(即手動模擬重啟,先關機shutdown -h now,再開機)
--關機后的主服務器
keepalived的vip是否已飄到從服務器上--成功飄到從服務器
rabbitmq的主集群是否掛掉--掛掉,從mq接管服務
是否能夠正常消費消息隊列--從mq正常消費
--開機后的主服務器
keepalived 關閉狀態
rabbitmq 關閉狀態,使用命令rabbitmq-server -detached即可啟動主集群
==>仍然能正常生產和消費消息隊列

四、現網問題處理

1.分析現網問題

在虛擬機模擬現網環境,重啟服務器操作(mq倒換演練)不會復現Rabbitmq無法消費情況;是否是因為使用錯誤命令/直接殺掉進程導致消息隊列阻塞,無從考證

2.解決步驟

  • 與客戶確認,由我方提供mq倒換演練具體操作方案
  • 編寫mq倒換演練具體操作方案
  • 提供QA部門審核
  • 測試環境執行倒換方案,檢查是否有效
  • 確認時間,重新在現網執行倒換演練

參考:
RabbitMQ集群故障恢復詳解


免責聲明!

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



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