前回
サーバ/インフラを支える技術1 Webサーバを冗長化する - by shigemk2
前回まででロードバランサが出てきたけども、
ロードバランサが冗長化されていないため、ロードバランサは1つしかなく、
コイツが死んだらサービスが全部死んでしまう。
VRRP(Virtual Router Redundancy Protocol)
ベンダによって仕様が異なるため、
異なるベンダのロードバランサを相互運用するための
ベンダ非依存の冗長化プロトコルのこと。(RFC3768で定義されている)
keepalivedでVRRPを利用できるため、keepalivedの設定を追加するだけで
冗長化ができる。
流れ
1. マスタノードが正常に稼動しているかどうかをチェック(ヘルスチェック)
-
- マスタノードからVRRPパケットをマルチキャストアドレスに定期的に送出しつづける。一定期間受信がなければフェイルオーバ(普通のヘルスチェックは機器に対しリクエストを送りレスポンスを待つ)
- 送信先のマルチキャストアドレスは変更不可能なので、複数の系列のロードバランサがある場合、仮想ルータIDを利用して複数のマルチキャストアドレスがあるように見せかける(これにより誤作動を防ぐ)
- VRRPでは通常はマスタが中心となって動き、マスタが死んだ場合どのBackupに引き継がせるかを選ぶことが出来る。また、プリエンプティブモードに設定することでプライオリティの高いノードをマスタを含むすべてのノードから選べる
2. マスタノードが停止していたらBackupノードにVIPをひきつぐ
とは言うもののkeepalivedは仮想MACアドレスを使わない実装になっている。そのため、フェイルオーバ時にARPエントリが更新されなかった機器があったとき、ARPキャッシュがクリアされるまでの間通信できなくなる可能性がある。
これを解決するために、gratuitous ARP(GARP)の遅延送出を利用する。keepalivedにはgrap_master_delayという設定項目がある。これを利用して、ARPエントリの更新を数秒遅らせ、通信がこみあう時間帯を避けてARPエントリの更新を行うことが出来る。
[24時間365日] サーバ/インフラを支える技術 ?スケーラビリティ、ハイパフォーマンス、省力運用 (WEB+DB PRESS plusシリーズ)
- 作者: 安井真伸,横川和哉,ひろせまさあき,伊藤直也,田中慎司,勝見祐己
- 出版社/メーカー: 技術評論社
- 発売日: 2008/08/07
- メディア: 単行本(ソフトカバー)
- 購入: 133人 クリック: 2,270回
- この商品を含むブログ (284件) を見る