久しぶりに Windows で AlwaysOn 可用性グループを組んでいて WSFC のノードを検疫状態にしてしまったので覚書を。
Windows Server 2016 / 2019 の WSFC の新機能については フェールオーバー クラスタリングの新機能 で解説が行われています。
Windows Server 2016 では 仮想マシンの回復性 として、「異常なノードの検疫」という機能が追加されています。
異常なノードの検疫: 異常なノードは検疫され、クラスターへの参加は許可されなくなりました。 これにより、フラッピングノードが他のノードやクラスター全体に悪影響を及ぼすのを防ぐことができます。
この機能により、異常なノードについてはノードのステータスが「検疫」となり、一定時間、クラスターへの参加が許可されない状態となります。
詳細については Virtual Machine Compute Resiliency in Windows Server 2016 で解説が行われています。
「検疫」(Quarantine) の状態ですが次のような解説が行われています。
Quarantine:
- The node is no longer allowed to join the cluster for a fixed time period (default: 2 hours)-
- This action prevents flapping nodes from negatively impacting other nodes and the overall cluster health
- By default, a node is quarantined, if it ungracefully leaves the cluster, three times within an hour
- VMs hosted by the node are gracefully drained once quarantined
- No more than 25% of nodes can be quarantined at any given time
デフォルトでは閾値は 3 回となっており、1 時間以内に 3 回、クラスターから離脱された場合には検疫状態となります。
検疫につていては、デフォルトでは 2 時間はクラスターへの参加が許可されない状態となります。
WSFC の管理コンソールのクラスターイベントを確認すると検疫についてのイベントの情報が出力されていることが確認できます。
この状態になった場合は、検疫状態のノードで「Start-ClusterNode -ClearQuarantine」を実行することで状態をクリアすることができます。
クラスターにノードが参加できる状態に回復できていれば、コマンドレットを実行することで、クラスターへの参加が行われます。
検疫の状態についてはクラスターのログからも確認できます。
直近 15 分のログの情報を元に確認をする場合は次のようなコマンドとなります。
Get-ClusterLog -TimeSpan 15 Get-Content C:\Windows\Cluster\Reports\Cluster.log | Select-String Quaran
検疫の設定については、Get-Cluster で取得可能なプロパティから設定を調整することができますので、閾値や自動的な復旧の間隔については、これらのプロパティを使用して調整を行うとよいかと。
フェールオーバーのテスト等を実施していると検疫状態になることがあるのですが、今までブログに書いたことがなかったので、この機会に残しておきたいと思います。