LinuCレベル3 プラットフォームスペシャリスト 高可用性プラットフォームの構築 問19
高可用性プラットフォームの構築/フェイルオーバークラスタの構築2ノードのPacemakerクラスタで、/etc/corosync/corosync.conf の quorum セクションに「provider: corosync_votequorum」とともに「two_node: 1」を指定した。この設定の説明として適切なものはどれか。
当サイトのオリジナル問題(LinuCレベル3 プラットフォームスペシャリストの出題範囲「高可用性プラットフォームの構築」に対応。実際の試験問題ではありません)
- Aノード間の通信に使うリングを2本に増やし、片方のネットワークが切れても通信を続けられるようにする
- B2台のうち1台だけをクォーラムの判定に使い、もう1台は投票権を持たない待機専用のノードとして扱う
- C1台が停止しても残る1台でクォーラムを保てるようにし、クラスタの起動時は既定で両ノードの参加を待つ
- Dクォーラムを失ったときにリソースを停止せず、両方のノードでリソースを起動し続けてサービスを継続させる
正解:C
解説
votequorumでは通常、過半数の票が無いとクォーラムを得られないため、2ノードでは1台が停止すると残りの1台もクォーラムを失います。two_node: 1 を指定すると、2ノード構成に限って1台だけでもクォーラムを保てるようになります。このとき wait_for_all が既定で有効になり、クラスタの起動時には両ノードがそろうまでクォーラムを得ないため、起動直後に互いを認識できないまま両方が動き出す事態を防ぎます。ノード間の通信が途絶えた場合は両方がクォーラムを持つことになるため、どちらを残すかはフェンシング(STONITH)で決めます。
選択肢ごとの解説
- A誤り。通信経路の冗長化はtotemやnodelistのリンク(ring0_addr・ring1_addr等)で設定するもので、two_nodeの役割ではありません。
- B誤り。two_nodeは片方の投票権をなくす設定ではなく、2ノードの両方が投票に参加したまま1台でもクォーラムを保てるようにします。
- C正しい。1台でもクォーラムを保てるようになり、既定で有効になるwait_for_allにより起動時は両ノードの参加を待ちます。
- D誤り。クォーラムを失ったときの動作はPacemakerのno-quorum-policyで決まり、two_nodeは両ノードでのリソース起動を許す設定ではありません。