過去問ドリル

LinuCレベル4 システムアーキテクト 可用性の設計 問14

可用性の設計/フェイルオーバークラスタ

Pacemaker/Corosyncによる2ノードのアクティブ・スタンバイ構成で、夜間バッチの実行中に稼働系ノードの負荷が高まると、ハートビートの応答が遅れて障害と判定され、稼働系が強制停止されてフェイルオーバーする事象が何度も起きた。実際にはノードは停止していなかった。対策として最も適切なものはどれか。

当サイトのオリジナル問題(LinuCレベル4 システムアーキテクトの出題範囲「可用性の設計」に対応。実際の試験問題ではありません)

正解:A

解説

ハートビートによる障害判定の時間は、短くすれば実際の障害を早く検知できる一方、一時的な高負荷やネットワークの揺らぎを障害と誤判定しやすくなるトレードオフがあります。誤判定が起きると、フェンシングによる稼働系の強制停止と不要なフェイルオーバーで、かえって業務が止まります。高負荷時の遅れを実測して判定時間を適正な値に延ばし、その分長くなる検知時間をRTOに織り込んで合意するのが妥当です。あわせて、ハートビート用の経路を業務通信と分けるなど、遅れそのものを減らす対策も有効です。

選択肢ごとの解説

  • A正しい。誤判定の原因である判定時間の短さを実測に基づいて見直し、その代償となる切替時間の延長を業務要件として合意するのが、可用性と誤判定のバランスをとる設計です。
  • B誤り。フェンシングを無効にすると、本当にインターコネクトが分断されたときに両ノードが共有ストレージへ書き込むスプリットブレインを防げなくなります。誤判定の原因も解消しません。
  • C誤り。判定時間を短くするほど、高負荷時の一時的な遅れを障害と誤判定しやすくなり、不要なフェイルオーバーが増えます。
  • D誤り。共有ストレージ上のデータベースを両ノードから更新するには、データベース側が共有ディスク型のクラスタに対応している必要があります。誤判定の原因も解消しません。
LinuCレベル4 システムアーキテクトの問題を演習モードで解く