30分ごとに定期的に再起動するように見える2ノードのRabbitMQ3.6.1クラスター(AWSのCentOS 6.8上)があります。ログをたどったところです(/var/log/rabbitmq/rabbit@<hostname>.log
)両方のマシンで、何が起こるかのタイムラインを取得します。私はそれらをこのリストに再配置しました:
Stopping RabbitMQ
-> Stopped RabbitMQ application
Statistics database started
Keep [email protected] listeners: the node is already back
Stopping RabbitMQ
-> Stopped RabbitMQ application
Statistics database started
Keep [email protected] listeners: the node is already back
その後、プロセス全体が繰り返される19:52:11UTCまでログエントリはありません。個々のサーバーがリセットされると、そのサーバーへの接続はすべて閉じられます。
ポート5672を両方のサーバー間で負荷分散しましたが、実際には、両方のサーバーをロードバランサープールから取り出してヘルスチェックに失敗するため、クライアントが接続できませんでした。明らかに、それは私に問題を引き起こすでしょう。
これらのノードの両方が30分ごとに次々と定期的に再起動する理由について誰かが洞察を持っていますか?これらは非常に単純なバニリアRabbitMQインストールであり、SaltStackを使用して自動的にクラスター化されてアプリを停止し、他のホスト名でクラスター化してから、アプリを起動します。
私はこの問題の答えを見つけました。これは、SaltStatesの構成が原因でした。最初にシステムをセットアップしたとき、RabbitMQ クラスタリングガイド に従ってTを実行し、Salt状態をセットアップしてアプリを停止し、すべてのRabbitMQノードでクラスター化してから、アプリを再起動しました。これは、クラスター化する新しいノードがあるかどうかに関係なく行われました。
結局のところ、これらのシステムで30分ごとにハイステートを実行するように ハイステートスケジュール を設定したため、再起動していました。つまり、RabbitMQアプリを停止して開始することでした。私はテストを通して学びました rabbitmq_cluster.joined
最初にクラスターのステータスを確認し、次にHost
をクラスターに追加する必要がある場合にのみ停止/参加/開始することを示します。
謎が解けた!