新しいDHCP更新要求を受信すると、vipがインターフェイスから削除されるという奇妙な問題が発生しています。ログには次の情報が表示されます。
Jun 1 17:00:06 lb1 dhclient: DHCPREQUEST of 10.0.0.2 on eth0 to 10.0.0.3 port 67 (xid=0x6deab016)
Jun 1 17:00:06 lb1 dhclient: DHCPNAK from 10.0.0.3 (xid=0x6deab016)
Jun 1 17:00:06 lb1 dhclient: DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 3 (xid=0x37e1db6a)
Jun 1 17:00:06 lb1 dhclient: DHCPREQUEST of 10.0.0.2 on eth0 to 255.255.255.255 port 67 (xid=0x37e1db6a)
Jun 1 17:00:06 lb1 dhclient: DHCPOFFER of 10.0.0.2 from 10.0.0.3
Jun 1 17:00:06 lb1 dhclient: DHCPACK of 10.0.0.2 from 10.0.0.3
Jun 1 17:00:06 lb1 dhclient: bound to 10.0.0.2 -- renewal in 38223 seconds.
Jun 1 17:00:07 lb1 ntpd[1321]: Deleting interface #8 eth0, 10.0.255.254#123, interface stats: received=7, sent=0, dropped=0, active_time=145198 secs
Jun 1 17:00:07 lb1 ntpd[1321]: peers refreshed
この時点で、vip ip(10.0.255.254)はインターフェースから削除され、他のkeepalivedインスタンスにフェイルオーバーされていません。
働くip a
コマンド出力:
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope Host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope Host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether fa:16:3e:cf:35:ac brd ff:ff:ff:ff:ff:ff
inet 10.0.0.2/16 brd 10.0.255.255 scope global eth0
valid_lft forever preferred_lft forever
inet 10.0.255.254/32 scope global eth0
valid_lft forever preferred_lft forever
inet6 fe80::f816:3eff:fecf:35ac/64 scope link
valid_lft forever preferred_lft forever
dHCPの更新が実行されたとき:
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope Host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope Host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether fa:16:3e:cf:35:ac brd ff:ff:ff:ff:ff:ff
inet 10.0.0.2/16 brd 10.0.255.255 scope global eth0
valid_lft forever preferred_lft forever
inet6 fe80::f816:3eff:fecf:35ac/64 scope link
valid_lft forever preferred_lft forever
インターフェイスファイル:
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
auto eth0
iface eth0 inet dhcp
インスタンスでkeepalivedを再起動すると、vipがインターフェイスに再び追加されます。それで問題は、なぜdhcpがvipを削除するのかということです。
私も最近、これと同じ問題に遭遇しました。 keepalived
で2つのOpenStackインスタンスを実行しています。インスタンスがIPアドレスを更新したときに、keepalived
がIPアドレスが削除されたと考え、しばらくしてから再度追加したことに気づきました。 VIPを解放するにはそれで十分でしたが、プライマリkeepalived
インスタンスに再追加することも、スタンバイインスタンスがVIPを引き継ぐこともできませんでした。
keepalived
のドキュメントを調べた後、vrrp
インスタンスに追加できるdont_track_primaryというオプションを見つけました。そのオプションをすべてのvrrp
インスタンスに追加しましたが、それ以降問題は発生していません。