kompira動作停止について
運用中にkompiraの動作が停止しました。
ログで見ると
kompirad.log
---
2020-10-20 10:46:20,279:14309:kompirad:MainThread] INFO: [Engine] caught SystemExit
[2020-10-20 10:46:21,222:14309:kompirad:ExpireManager] INFO: ExpireManager: finished: remain=0
[2020-10-20 10:46:21,325:14309:kompirad:QueueManager] INFO: [QueueManager] thread finished
[2020-10-20 10:46:21,457:14309:kompirad:CollectThread] INFO: collect_handler: finished: count=0
[2020-10-20 10:46:22,217:14309:kompirad:ResultThread] INFO: result_handler: finished: count=0
[2020-10-20 10:46:22,219:14309:kompirad:MainThread] INFO: [WorkerManager] terminate_all_workers: []
[2020-10-20 10:46:22,220:14309:kompirad:MainThread] INFO: [Engine] finished.
[2020-10-20 10:46:22,220:14309:kompirad:MainThread] INFO: kompirad: going to terminate engine_server
[2020-10-20 10:46:22,555:14309:kompirad:EngineServer] INFO: [EngineServer] thread finished
[2020-10-20 10:46:22,602:14309:kompirad:MainThread] INFO: terminate_children: finish
[2020-10-20 10:46:22,621:14309:kompirad:MainThread] INFO: kompirad: bye
---
と出ていました。
関係性は不明ですが
process.logに以下のログが出ていました。
---
[2020-10-20 10:46:22,621:14309:kompirad:140439912884032:MainThread] DEBUG: [MPLog] mplog.terminate: finished
Traceback (most recent call last):
File "/opt/kompira/bin/kompirad", line 8, in <module>
sys.exit(main())
File "kompira/jobflow/kompirad.py", line 137, in main
File "kompira_common/daemon_ctrl.py", line 61, in start
ValueError: I/O operation on closed file
---
想定される原因はなんでしょうか?
-
正式なコメント
ご提供いただいたログをざっと確認してみました。
おおよそ以下のような状況であったのかなと推測されます。
- 2020/10/17 00:02:09 [SBY] postgresql が起動するも ACT 側と同期が取れていないまま動作していた
- 2020/10/20 10:46:15 [SBY] SBY 側で通信断絶による ACT 側をオフラインと認識
- 2020/10/20 10:46:16 [ACT] ACT 側でもほぼ同時刻に通信断絶による SBY 側をオフラインと認識
- 2020/10/20 10:46:16 [SBY] postgresql は同期が取れていなかったためマスターに昇格失敗。rabbitmq はマスターに昇格
- 2020/10/20 10:46:16 [ACT/SBY] 断絶してすぐ後に、断絶回復を認識
- 2020/10/20 10:46:16 [ACT] 両系で rabbitmq がマスターになっていることを認識 → 異常状態であるので各リソースを停止措置
- 2020/10/20 10:46:19 [ACT] kompira_jobmngrd が停止
- 2020/10/20 10:46:22 [ACT] kompirad が停止
- 2020/10/20 10:46:28 [ACT] httpd が停止
- 2020/10/20 10:46:36 [ACT] postgresql が停止
ポイントとしては以下のようなことがあるかと思います。
- 10/17 時点で少なくとも postgresql が正常にマスター・スレーブとして同期できていない状況であった
- 10/20 10:46:15~10:46:16 ごろに通信遅延などの不安定さが見られる状況であった
このように複数の障害要因と考えられる事象が複合したことで、kompirad を含むいくつかのリソースが冗長構成を制御するサービスによって停止措置されたのではないと推測されます。
以上、よろしくお願いいたします。
コメントアクション -
フィックスポイントの高橋と申します。
ご提示いただいたログを拝見した限りでは、SystemExit 例外によって kompirad が終了していることが分かります。これは例えばサービスの停止手順である `systemctl stop kompirad` を実行して終了させた場合と同様になります。内部的な異常終了であれば、異なる記録が残っている可能性もありますがこのログからは判別できません。あるいは、caught SystemExit より上の行に、なんらかのエラーが記録されている、ということはございますでしょうか?
process.log のエラーについては、記録されている時刻的に kompirad の終了処理が始まってから後の事象ですので、kompirad が終了するに至った原因とは考えにくいかと思います。
kompirad が SystemExit で終了しているということは、一般的には外部からの働きかけがあったことが考えられます。例えば Kompira の冗長構成を構築している環境であれば、Pacemaker というサービスが状況によって(例えばフェイルオーバの発動によって)kompirad を停止させる、といった動作をすることがあります。
お手数ですが、ご利用中の環境に関する情報や kompira のバージョンなどを教えていただくことは可能でしょうか。また、当該時刻ごろの状況、たとえば、ジョブフローが動作していたかどうか、システムやOSを何らかの操作していたかどうか、動作環境に何らかの障害などが発生していなかったか、といったような情報もいただけると助かります。
以上、よろしくお願いいたします。
-
ご確認ありがとうございます。
冗長構成を組んでおられるということですので、冗長構成の監視機能による kompirad の停止があった可能性は考えられます。
お手数ですが、冗長構成の両方の kompira サーバから以下の場所にあるログを収集していただき、わたくし宛 takahashi@fixpoint.co.jp までメールでお送りいただけますでしょうか。
- /var/log/kompira/ 配下
- /var/log/postgresql/ 配下
- /var/log/rabbitmq/ 配下
- /var/log/httpd/ 配下
- /var/log/cluster/ 配下
- /var/log/pcsd/ 配下
いずれも、数日以上前の古いバックアップは除外していただいて結構です。
以上、よろしくお願いいたします。
サインインしてコメントを残してください。
コメント
8件のコメント