web-dev-qa-db-ja.com

RabbitMQクラスターは30分ごとに再起動します

30分ごとに定期的に再起動するように見える2ノードのRabbitMQ3.6.1クラスター(AWSのCentOS 6.8上)があります。ログをたどったところです(/var/log/rabbitmq/rabbit@<hostname>.log)両方のマシンで、何が起こるかのタイムラインを取得します。私はそれらをこのリストに再配置しました:

  • 19:22:10 UTC-10.101.100.173:Stopping RabbitMQ-> Stopped RabbitMQ application
  • 19:22:10 UTC-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 [email protected] 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はupであることに注意してください
  • 19:22:54 UTC-10.101.101.48:Stopping RabbitMQ-> Stopped RabbitMQ application
  • 19:22:54 UTC-10.101.100.173:Statistics database started
  • 19:22:54 UTC-10.101.100.173:10.101.101.47がダウンであることに注意してください。ログKeep [email protected] 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がupになったことに注意してください

その後、プロセス全体が繰り返される19:52:11UTCまでログエントリはありません。個々のサーバーがリセットされると、そのサーバーへの接続はすべて閉じられます。

ポート5672を両方のサーバー間で負荷分散しましたが、実際には、両方のサーバーをロードバランサープールから取り出してヘルスチェックに失敗するため、クライアントが接続できませんでした。明らかに、それは私に問題を引き起こすでしょう。 Regular pattern of failing connections

これらのノードの両方が30分ごとに次々と定期的に再起動する理由について誰かが洞察を持っていますか?これらは非常に単純なバニリアRabbitMQインストールであり、SaltStackを使用して自動的にクラスター化されてアプリを停止し、他のホスト名でクラスター化してから、アプリを起動します。

1
Devin

私はこの問題の答えを見つけました。これは、SaltStatesの構成が原因でした。最初にシステムをセットアップしたとき、RabbitMQ クラスタリングガイド に従ってTを実行し、Salt状態をセットアップしてアプリを停止し、すべてのRabbitMQノードでクラスター化してから、アプリを再起動しました。これは、クラスター化する新しいノードがあるかどうかに関係なく行われました。

結局のところ、これらのシステムで30分ごとにハイステートを実行するように ハイステートスケジュール を設定したため、再起動していました。つまり、RabbitMQアプリを停止して開始することでした。私はテストを通して学びました rabbitmq_cluster.joined 最初にクラスターのステータスを確認し、次にHostをクラスターに追加する必要がある場合にのみ停止/参加/開始することを示します。

謎が解けた!

2
Devin