keepalived vip删除与DHCP续订

我遇到这个奇怪的问题,当我收到一个新的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运行两个OpenStack实例。 我注意到,当实例更新其IP地址时,有时候认为IP地址被删除,并在稍后重新添加。 这足以让它释放VIP,但不会将它们重新添加到主keepalived实例,也不足以让备用实例接pipeVIP。

在查看keepalived的文档后,我发现了一个名为dont_track_primary的选项,可以将其添加到vrrp实例中。 我将这个选项添加到了所有的vrrp实例,并且自那之后就没有问题了。