LinuCレベル3 プラットフォームスペシャリスト 高可用性プラットフォームの構築 問14
高可用性プラットフォームの構築/ロードバランサーの構築KeepalivedでVIPを持つ2台のロードバランサーを構成している。VIPを持つノード自体は稼働していても、そのノード上のHAProxyプロセスが停止した場合には、VIPを待機系へ移したい。keepalived.confの設定として適切なものはどれか。
当サイトのオリジナル問題(LinuCレベル3 プラットフォームスペシャリストの出題範囲「高可用性プラットフォームの構築」に対応。実際の試験問題ではありません)
- Avirtual_serverブロックにHAProxyの待ち受けポートを定義し、real_serverのTCP_CHECKでポートの応答を監視させる
- Bglobal_defsのrouter_idにHAProxyのプロセス名を指定し、プロセスの稼働状況をVRRPの広告に含めさせる
- Cvrrp_scriptでHAProxyの稼働を確かめるスクリプトと負のweightを定義し、vrrp_instanceのtrack_scriptで参照する
- Dvrrp_instanceのstateをBACKUPにしてnopreemptを指定し、障害時にVIPを手放しやすくしておく
正解:C
解説
Keepalivedは、VRRPのノード障害だけでなく、任意のスクリプトの結果でもフェイルオーバーさせることができます。vrrp_scriptブロックでチェック用のスクリプト(例: HAProxyのプロセスの有無を調べる)と実行間隔、weightを定義し、vrrp_instanceのtrack_scriptで参照します。スクリプトが失敗すると負のweightの分だけ優先度が下がり、待機系の優先度を下回るとVIPが移ります。weightを指定しない場合は、失敗した時点でそのインスタンスがFAULT状態になり、VIPを手放します。
選択肢ごとの解説
- A誤り。virtual_serverとreal_serverのヘルスチェックは、IPVSで振り分ける先のバックエンドを監視するためのもので、VRRPのVIPの移動には結び付きません。
- B誤り。router_idはこのノードを識別する名前を設定する項目で、プロセスの監視やVRRPの広告内容を変える機能はありません。
- C正しい。vrrp_scriptで定義したチェックをtrack_scriptで参照すると、失敗時に優先度が下がり、VIPが待機系へ移ります。
- D誤り。nopreemptは、優先度の高いノードが復旧してもVIPを取り返さないようにする設定で、HAProxyの停止を検知する仕組みではありません。