Swarmクラスタ構成で起こりうる障害
3 台以上のノードで Docker Swarm により動作させ、外部 DB(Pgpool-II)と GlusterFS を用いる構成です。各ノードで nginx / kompira / kengine / rabbitmq / jobmngrd が動作し、いずれか 1 ノードで redis が動作します。
起こりうる障害と対処
- redis のフェイルオーバー/不安定 → redis 名前解決エラー(Swarmクラスタ構成の対処)
- rabbitmq クラスタの障害 → rabbitmq の原因と対処(Mnesia 破損 / Partial partition / Waiting for Mnesia tables / erl_crash / pre_vote)
- rabbitmq が再起動を繰り返す / kengine が再起動を繰り返す
- 外部 DB(Pgpool)障害 → データベースの原因と対処(Host is unreachable / unable to read message kind / read-only / Connection refused)
- 静的ファイル(GlusterFS)エラー → KeyError: 'staticfiles'
- docker/swarm の障害 → docker の原因と対処(ネットワーク問題 / 高遅延 / node underweighting / ノードダウン / Gluster マウントなど)
この構成に固有の注意点
- 冗長化されているため、一部ノードの障害ではシステム全体としては正常動作が期待できます。system-status 画面で一部コンテナが NG でも HTTP ステータスが 200 となる場合があります。
- クラスタ固有の診断は クラスタノードの診断手順(swarm ノードのステータス / glusterfs の正常性)を参照してください。
- 全体的に復旧しない場合は KE2 APP を再起動する。重大な場合は rabbitmq のボリュームを削除する手順 が必要になることがあります。