High-Availability

RabbitMQ 集群每 30 分鐘重啟一次

  • October 12, 2016

我有一個兩節點 RabbitMQ 3.6.1 集群(在 AWS 的 CentOS 6.8 上),似乎每 30 分鐘定期重啟一次。我只是跟踪了/var/log/rabbitmq/rabbit@<hostname>.log兩台機器上的日誌 () 以獲得發生的時間線。我已將它們重新排列到此列表中:

  • 19:22:10 UTC - 10.101.100.173: Stopping RabbitMQ ->Stopped RabbitMQ application
  • 世界標準時間 19:22:10 - 10.101.101.48: Statistics database started
  • 19:22:10 UTC - 10.101.100.173:RabbitMQ再次開始啟動
  • **19:22:10 UTC - 10.101.101.48:**注意 10.101.100.173 已關閉,然後記錄Keep rabbit@10-101-100-173.ec2.internal listeners: the node is already back
  • 19:22:50 UTC - 10.101.100.173:RabbitMQ完成啟動,記錄消息開始“伺服器啟動完成,6 個外掛啟動。”
  • **19:22:50 UTC - 10.101.101.48:**注意 10.101.100.173 已啟動
  • 世界標準時間 19:22:54 - 10.101.101.48: Stopping RabbitMQ ->Stopped RabbitMQ application
  • 世界標準時間 19:22:54 - 10.101.100.173: Statistics database started
  • **19:22:54 UTC - 10.101.100.173:**注意 10.101.101.47 已關閉,然後記錄Keep rabbit@10-101-101-48.ec2.internal listeners: the node is already back
  • 19:23:06 UTC - 10.101.101.48:RabbitMQ重新開始
  • 19:23:24 UTC - 10.101.101.48:RabbitMQ完成啟動,記錄消息開始“伺服器啟動完成,6 個外掛啟動。”
  • **19:23:24 UTC - 10.101.100.173:**注意 10.101.101.48 現已啟動

然後在 19:52:11 UTC 之前沒有更多的日誌條目,整個過程在此重複。當單個伺服器重置時,與該伺服器的任何連接都將關閉。

我在兩台伺服器之間對埠 5672 進行了負載平衡,實際上可以看到它未能通過健康檢查,將兩台伺服器都從負載平衡器池中取出,因此沒有客戶端可以連接。顯然,這會給我帶來麻煩。 失敗連接的正常模式

有沒有人知道為什麼這兩個節點會每隔 30 分鐘一個接一個地定期重啟?這些是非常簡單的 vanillia RabbitMQ 安裝,使用 SaltStack 自動集群以停止應用程序,使用其他主機名集群,然後啟動應用程序。

我想出了這個問題的答案。這是由我的 Salt States 配置引起的。當我第一次設置系統時,我按照 RabbitMQ集群指南到了一個 T,這樣我設置了一個 Salt 狀態來停止應用程序,與所有 RabbitMQ 節點進行集群,然後重新啟動應用程序。無論是否有新節點要集群,它都會這樣做。

事實證明,它正在重新啟動,因為我已將我的highstate 計劃設置為每 30 分鐘在這些系統上執行一次 highstates。這就是停止和啟動 RabbitMQ 應用程序!我通過測試rabbitmq_cluster.joined狀態了解到,它會先檢查集群狀態,然後只有在host需要添加到集群時才停止/加入/啟動。

謎團已揭開!

引用自:https://serverfault.com/questions/808246