LinuCレベル4 システムアーキテクト 可用性の設計 問19
可用性の設計/データレプリケーションと災害対策同じデータセンター内の2台のサーバーで、DRBDによりデータベースの領域を複製してフェイルオーバー構成を組む。稼働系が1台だけ故障した場合には、データを失ってはならない。一方、2台が同時に停止する事態は電源系統を分けて配置してあるため想定外とし、そのリスクは受け入れる。そのうえで書き込みの応答時間をできるだけ短くしたい。レプリケーションの方式として最も適切なものはどれか。
当サイトのオリジナル問題(LinuCレベル4 システムアーキテクトの出題範囲「可用性の設計」に対応。実際の試験問題ではありません)
- A相手ノードのディスクへの書き込み完了まで待ってから完了とする、同期レプリケーション(Protocol C)にする
- Bローカルのディスクへの書き込みと送信バッファへの投入で完了とする、非同期レプリケーション(Protocol A)にする
- Cローカルのディスクへの書き込みと相手ノードのメモリへの到達で完了とする、メモリ同期(Protocol B)にする
- D3台のマルチノードレプリケーションに増やし、すべてのノードとの間を同期レプリケーション(Protocol C)にする
正解:C
解説
DRBDのレプリケーションには3つのプロトコルがあります。Protocol Aは非同期で、稼働系が故障すると送信途中のデータを失う可能性があります。Protocol Bはメモリ同期で、相手ノードがデータを受信した時点で完了とするため、稼働系が単独で故障してもデータは相手に届いています。データを失うのは両ノードが同時に停止し、相手のメモリ上のデータがディスクへ書かれなかった場合に限られます。Protocol Cは相手のディスクへの書き込み完了まで待つため最も安全ですが、書き込みの応答時間は最も長くなります。
選択肢ごとの解説
- A誤り。Protocol Cは要件を満たしますが、相手のディスクへの書き込み完了まで待つため、Protocol Bより応答時間が長くなります。2台の同時停止のリスクも許容できない場合に選ぶ方式です。
- B誤り。Protocol Aは応答時間が最も短い一方、稼働系が単独で故障しただけで未送信のデータを失う可能性があり、要件に反します。遠隔地への複製など遅延の大きい経路で選ぶ方式です。
- C正しい。稼働系の単独故障ではデータを失わず、相手のディスク書き込みを待たない分だけProtocol Cより応答時間を短くできます。
- D誤り。ノードを増やして全ノードと同期すると、最も遅いノードの書き込みを待つことになり応答時間はさらに長くなります。複数ノードの同時故障にも備えたい場合の構成です。