LinuCレベル4 システムアーキテクト 可用性の設計 問26
可用性の設計/フェイルオーバークラスタPacemakerを使った3ノードのフェイルオーバークラスタで、クォーラムによる多数決でリソース制御を設計した。この構成で3台のうち同時に2台が停止した場合の動作として最も適切なものはどれか。
当サイトのオリジナル問題(LinuCレベル4 システムアーキテクトの出題範囲「可用性の設計」に対応。実際の試験問題ではありません)
- A残り1台は自身が最後の稼働ノードであると検知し、全リソースを自動的に引き受けてサービスを継続する
- B残り1台は全体の過半数(2票)に達しないためクォーラムを失い、スプリットブレインを防ぐためにリソースを停止する
- Cクォーラムを失った1ノードはSTONITHで停止中の2ノードを強制停止しようとするが、すでに停止済みのためタイムアウトしてリソースの引き継ぎに失敗する
- Dクォーラムを失っても新しいノードが参加するまで現状を維持してリソースを継続提供し、再構成時に整合性を確認する
正解:B
解説
クォーラムは「過半数のノードが合意している場合のみ動作を継続する」という原則でスプリットブレインを防ぎます。3ノード構成で2ノードが停止すると残り1ノードは全体の過半数(2票)を確保できずクォーラムを失います。Pacemakerはクォーラムを失ったノードでのリソース起動・継続を止め(既定のno-quorum-policyはstop)、共有ストレージへの同時アクセスによるデータ破損を防ぎます。クォーラム喪失時に自動でリソースを引き受けたり現状維持するのはデフォルト動作ではありません。
選択肢ごとの解説
- A誤り。クォーラムを失ったノードはPacemakerの既定ではリソースを停止します。自動で全リソースを引き受ける動作は標準的な設計ではありません。
- B正しい。3ノード中1ノードしか残らない場合は過半数に達せずクォーラムを失い、Pacemakerはスプリットブレインを防ぐためにリソースを停止します。
- C誤り。停止済みのノードへのSTONITH操作はタイムアウトする可能性がありますが、これはクォーラム喪失時の主な動作の説明としては不適切です。クォーラム喪失の直接の結果はリソースの停止です。
- D誤り。クォーラムを失ったノードがリソースを継続提供すると、共有ストレージへの同時アクセスが発生してデータ破損のリスクが生じます。Pacemakerの既定動作ではありません。