0

VRRP VIP環境下でスプリットブレイン発生時に気をつけること

​❏ 前説

VRRPは、RFC3768定義の標準化されたVRRPでは物理インターフェースのIPアドレスを、VRRPグループの仮想IPアドレスとして設定することができます。
その時、そのアドレスを所有するルータがMasterルータとなります。
また、VRRPでは、Backupルータがアドバタイズメント ( HSRPでいうHelloプロトコル ) をMasterルータに対して送信しないので、
Masterルータは現在のBackupルータを認識することはできない仕様です。
Masterルータがダウンした場合、Backupルータがアドバタイズメントを
受信しなくなりMasterダウンのIntervalを過ぎるとアクティブルータの役割が引き継がれます。
収束の間は一時的に通信できませんが、収束後は引き続きR2によってゲートウェイが提供され通信可能となります。


vrrp rfc3786
http://www.networksorcery.com/enp/

(reference)
hsrp rfc2281
http://www.networksorcery.com/enp/

rfc sourcebook
http://www.networksorcery.com/enp/

​❏ 概要

keepalived (VRRP)はその仕組み上、ネットワーク分断時にマスターが二つ以上できます。
俗にいう、スプリットブレインというやつです。

ネットワーク分断が解消したのち、マスターは一つに収束します。
ネットワークスイッチの類であれば大概の場合これで問題はありません。

ところが先日、ネットワーク分断解消後にある Linux サーバーからスイッチの仮想IP(VIP)への通信ができなくなる現象が発生しました。
原因を調べたところ、VIP を現在持っているスイッチの MAC アドレスではなく、
http://linux-ip.net/html/ether-arp.html に以下のように記述されていました。

Entries in the ARP cache are periodically and automatically verified UNLESS CONTINUALLY USED.

​❏ 対策

① VIP とずっと通信をするサーバーについては定期的に ARP キャッシュを破棄するよう cron 設定。
同時刻に一斉に破棄しないよう、shuf でランダム化してあります。

*/5 * * * * root sleep $(shuf -i 1-60 -n 1); /sbin/ip neigh flush all

② VRRP切れてスプリットブレインになってVRRP復活した時に、priority低い方が自分のVIPを破棄するように設定する。

以上です。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です