【iptables】 CentOS6でkeepalivedが両マスタ(スプリットブレイン)になってしまうのを解消する

CentOS6でkeepalivedを複数台にインストールして、起動して /var/log/messages を見てみたら、各サーバで Entering MASTER STATE になったまま、一向に Entering BACKUP STATE になる気配がない。
ip a コマンドを叩くと各サーバで仮想ipがバインドされてしまっている。

という問題の原因は、おそらく iptables の設定で、VRRPパケットが REJECT されてしまい、VRRPパケットがサーバ間で疏通してないからです。

iptables-save コマンドでiptablesの設定を確認し、 -A INPUT -p vrrp -j ACCEPT-A INPUT -j REJECT ...(--reject-with icmp-host-prohibited とか)より上に入っているようにします。
-A OUTPUT -p vrrp -j ACCEPT も必要です。

具体的には

iptables -D INPUT -j REJECT --reject-with icmp-host-prohibited
iptables -A INPUT -p vrrp -j ACCEPT
iptables -A OUTPUT -p vrrp -j ACCEPT
iptables -A INPUT -j REJECT --reject-with icmp-host-prohibited
iptables-save   (設定を表示して確認)

service iptables save   (設定をセーブ)

service iptables restart

という感じになるかと思います。

ちなみにVRRPはプロトコル番号112のIPプロトコルで、UDP(プロトコル番号17),TCP(プロトコル番号6),ICMP(プロトコル番号1) とは別のプロトコルですので、TCPやUDPなどは内部セグメントで全部通してるのになんで疏通しないのかな、と思いがちですね。

コメントを残す

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