RHV では、KVM ホストは Sanlock を使用してストレージ ドメインとの接続を検出します。 Sanlock が有効になると、wdmd デーモン (ウォッチドッグ多重化デーモン) が開き、特定のハートビートでキープアライブが送信されます。ストレージへの sanlock IO が一定時間内に完了しない場合、sanlock は wdmd へのキープアライブの送信を停止します。タイムアウトになると、/dev/watchdog を制御する wdmd デーモンがエラーをログに記録し、ウォッチドッグが維持されていないことを警告し、すぐに期限切れになり、KVM ホストを起動してリセットします。
$ systemctl status sanlock ● sanlock.service - Shared Storage Lease Manager Loaded: loaded (/usr/lib/systemd/system/sanlock.service; disabled; vendor preset: disabled) Active: active (running) since Mon 2020-07-13 15:03:26 NZST; 1 months 19 days ago Process: 1041 ExecStart=/usr/sbin/sanlock daemon (code=exited, status=0/SUCCESS) Main PID: 1044 (sanlock) Tasks: 7 Memory: 18.6M CGroup: /system.slice/sanlock.service ├─1044 /usr/sbin/sanlock daemon └─1045 /usr/sbin/sanlock daemon Warning: Journal has been rotated since unit was started. Log output is incomplete or unavailable.
$ systemctl status wdmd ● wdmd.service - Watchdog Multiplexing Daemon Loaded: loaded (/usr/lib/systemd/system/wdmd.service; disabled; vendor preset: disabled) Active: active (running) since Mon 2020-07-13 15:03:26 NZST; 1 months 19 days ago Process: 1131 ExecStart=/usr/sbin/wdmd (code=exited, status=0/SUCCESS) Process: 1112 ExecStartPre=/lib/systemd/systemd-wdmd watchdog-check (code=exited, status=0/SUCCESS) Main PID: 1133 (wdmd) Tasks: 1 Memory: 2.3M CGroup: /system.slice/wdmd.service └─1133 /usr/sbin/wdmd Warning: Journal has been rotated since unit was started. Log output is incomplete or unavailable.
sanlock デーモンは、リースを更新するために一定の間隔で継続的にストレージに書き込みます。 Sanlock は、ストレージ結果への sanlock IO に基づいて、KVM ホストを UNKNOWN、FREE、LIVE、FAIL、および DEAD ステータスとしてマークします。
不明:
KVM ホストにはストレージのリースがありますが、クラスターロックはホストがまだ稼働しているか停止しているかを判断できません。通常は 10 ~ 20 秒間続きますが、KVM ホストが稼働中または障害が発生したと見なされるまでに最大 80 秒間続く可能性があります。
無料:
このホスト ID のリースはありません。
ライブ:
KVM ホストは、過去 80 秒間にリースを更新しました。現在リースを更新しているかどうかは、後でもう一度確認することによってのみわかります。
失敗:
ホストがリースを 80 秒間更新していません。ホストが死亡したと見なされるまで 60 秒間持続します。 KVM ホストのステータスが「失敗」とマークされている場合、関連するログは次のようになります:
2020-08-31 21:35:01 1665117 [1044]: s1 check_our_lease warning 72 last_success 1665045 2020-08-31 21:35:02 1665118 [1044]: s1 check_our_lease warning 73 last_success 1665045 2020-08-31 21:35:03 1665119 [1044]: s1 check_our_lease warning 74 last_success 1665045 2020-08-31 21:35:04 1665120 [1044]: s1 check_our_lease warning 75 last_success 1665045 2020-08-31 21:35:05 1665121 [1044]: s1 check_our_lease warning 76 last_success 1665045 2020-08-31 21:35:06 1665122 [1044]: s1 check_our_lease warning 77 last_success 1665045 2020-08-31 21:35:07 1665123 [1044]: s1 check_our_lease warning 78 last_success 1665045 2020-08-31 21:35:08 1665124 [1044]: s1 check_our_lease warning 79 last_success 1665045 2020-08-31 21:35:09 1665125 [1044]: s1 check_our_lease failed 80 2020-08-31 21:35:10 1665125 [1044]: s1 all pids clear 2020-08-31 21:35:21 1665137 [3859]: 8d627013 aio timeout RD 0x7f56e00009b0:0x7f56e00009c0:0x7f56f0299000 ioto 10 to_count 4 2020-08-31 21:35:21 1665137 [3859]: s1 delta_renew read timeout 10 sec offset 0 /rhev/data-center/mnt/[mountpoint]/[SD_UUID]/dom_md/ids 2020-08-31 21:35:21 1665137 [3859]: s1 renewal error -202 delta_length 20 last_success 1665045
死亡:
ホストは 140 秒間リースを更新していません。
ストレージへの sanlock IO が一定時間内に完了しない場合、sanlock デーモンは回復に入ります。回復は、sanlock デーモンが、影響を受けたストレージのリースを使用して pid を強制終了 (SIGTERM) しようとすることから始まります。 10 秒以上にわたって 10 個の SIGTERM を実行しても pid が終了しない場合、sanlock は kill(SIGKILL) を試みます。 pid が一定時間内に終了しない場合、ウォッチドッグが起動し、ホストがリセットされます。必要な時間内にすべての pid が終了した場合、ウォッチドッグは更新され、起動しません。