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などは内部セグメントで全部通してるのになんで疏通しないのかな、と思いがちですね。