keepalived实现vip的原理剖析

keepalived实现vip的原理:vrrp + gratuitous arp

1、vrrp

vrrp更多细节参考:vrrp技术白皮书

VRRP的工作过程为:

1、虚拟路由器中的路由器根据优先级选举出Master。Master路由器通过发送欺骗ARP报文,将自己的虚拟MAC地址通知给与它连接的设备或者主机,从而承担报文转发任 务;(假如路由器的优先级一样,就根据主机的IP地址大小进行选择,IP地址大的是master)

2、Master路由器周期性发送VRRP报文,以公布其配置信息(优先级等)和工作状况;

3、如果Master路由器出现故障,虚拟路由器中的Backup路由器将根据优先级重新选举新的Master;因为可能会有多个Backup路由器。

4、虚拟路由器状态切换时,Master路由器由一台设备切换为另外一台设备,新的Master路由器只是简单地发送一个携带虚拟路由器的MAC地址和虚拟IP地址信息的欺骗ARP报文,这样就可以更新与它连接的主机或设备中的ARP相关信息。网络中的主机感知不到Master路由器已经切换为另外一台设备。

5、Backup路由器的优先级高于Master路由器时,由Backup路由器的工作方式(抢占方式和非抢占方式)决定是否重新选举Master。

由此可见,为了保证Master路由器和Backup路由器能够协调工作,VRRP需要实现以下功能:

Master路由器的选举;
Master路由器状态的通告;

Master路由器的选举

VRRP根据优先级来确定虚拟路由器中每台路由器的角色(Master路由器或Backup路由器)。优先级越高,则越有可能成为Master路由器。

初始创建的路由器工作在Backup状态,通过VRRP报文的交互获知虚拟路由器中其他成员的优先级:

Master路由器路由通告原理

1、Master设备周期性地发送VRRP通告报文,在VRRP备份组中公布其配置信息(优先级等)和工作状况。Backup设备通过接收到VRRP报文的情况来判断Master设备是否工作正常。

2、当Master设备主动放弃Master地位(如Master设备退出备份组)时,会发送优先级为0的通告报文,用来使Backup设备快速切换 成Master设备,而不用等到Master_Down_Interval定时器超时。这个切换的时间称为Skew time,计算方式为:(256-Backup设备的优先级)/256,单位为秒。

3、当Master设备发生网络故障而不能发送通告报文的时候,Backup设备并不能立即知道其工作状况。等到 Master_Down_Interval定时器超时后,才会认为Master设备无法正常工作,从而将状态切换为Master,从而对外发送vrrp报文。

Master_Down_Interval作用:

避免由于网络抖动而引起选主颠簸,当网络抖动时,可能那时候backup设备没收到master报文,
就切为master开始竞争选主,然后待会master的报文又到了,又要切换回来

2、gratuitous arp

如何解决VIP从一个master迁移到另一个另一个backup的问题?

解决办法:arp欺骗:

gratuitous arp:就是自问自答的arp广播包

在使用keepalived的过程中,当backup提升为master时,都会出现如下日志(192.168.122.17 为vip):

Sending gratuitous ARPs on eth0 for 192.168.122.17

Keepalived是怎样来使用gratuitous arp来处理IP漂移的呢?

1、默认配置下,当keepalived启动时,会发送gratuitous arp,间隔时间5s,每次发送5个arp。

默认配置:

# delay for second set of gratuitous ARPs after transition to MASTER.
# in seconds, 0 for no second set.
# (default: 5)
vrrp_garp_master_delay

# number of gratuitous ARP messages to send at a time after
# transition to MASTER.
# (default: 5)
vrrp_garp_master_repeat

2、当master收到一个优先级更低的vrrp通告时,master也会发送gratuitous arp,默认每间隔1s发送一次,每次发送5个gratuitous arp。相关的配置如下:

# delay for second set of gratuitous ARPs after lower priority
# advert received when MASTER.
vrrp_garp_lower_prio_delay 10

# number of gratuitous ARP messages to send at a time after
# lower priority advert received when MASTER.
vrrp_garp_lower_prio_repeat 1

综合分析

现在我们可以知道keepalived是怎么工作:

11-29 13:37