当前位置:首页 > 尘凡 > 正文内容

keepalived开启garp_master_refresh的重要性

满纸空言2年前 (2023-06-05)尘凡25420

转自:【博客625】keepalived开启garp refresh的重要性_lulu的云原生笔记的博客-CSDN博客 

现象: 多次重启主机后,vip切换正常,但主机无流量


1、场景
1-1、对keepavlied master机器热迁移后出现vip不通,过后恢复

原因:机器迁移后网关那边的arp表没有刷新,流量还是转发到老的端口,但是机器已经迁移到别的端口了,于是网络不通。因为keepalied默认情况下是发vrrp在实现主备切换,然后garp只在master选中的时候播出去或者收到低优先级的vrrp报文的时候播出去,然后不会再定时播了,网关那边arp表过期的时候会主动发grap来问,master回复,这样就能知道master是谁

1-2、由于交换机故障,keepalived 故障转移到备份实例,但是vip不通

原因:由于交换机故障,keepalived 故障转移到备份实例,备份实例发送了无偿 ARP,但因为交换机故障没有收到,当交换机恢复时(几分钟后)VIP 无法访问,因为交换机没有刷新 ARP 表(ARP 表到期时间设置为 4h)。由于交换机已经拥有此前vip对应的转移前的节点的MAC,因此它没有发送 ARP 请求,导致VIP 无法访问,也就是keepalived转移后,mac没有被交换机学到,直到我们重新启动了新 GARP 的 keepalived 实例才能重新宣告恢复

2、根因:garp没有及时刷新
默认情况下,不会定时刷新grap,grap是什么时候播的:

keepalied默认情况下是发vrrp在实现主备切换,然后garp只在master选中的时候播出去或者收到低优先级的vrrp报文的时候播出去,然后不会再定时播了
网关那边arp表过期的时候会主动发grap来问,master回复,这样就能知道master是谁
网关arp老化机制:

每台主机或设备上都维护着一个高速缓存,这是ARP高效运行的一个关键。在这个高速缓存中,存放主机或设备最近学习到的IP地址到MAC地址的映射关系,即动态ARP表项。

主机或设备每次发送报文时,会先在本地高速缓存中查找目的IP地址所对应的MAC地址。如果高速缓存中有对应的MAC地址,主机或设备不会再发送ARP请求报文,而是直接将报文发至这个MAC地址;如果高速缓存中没有对应的MAC地址,主机或设备才会广播发送ARP请求报文,进行ARP地址解析。

一方面由于高速缓存的容量限制,另一方面为了保证高速缓存中ARP表项的准确性,设备会对动态ARP表项进行老化和更新。

动态ARP表项的老化参数有:老化超时时间、老化探测次数和老化探测模式。设备上动态ARP表项到达老化超时时间后,设备会发送老化探测报文(即ARP请求报文),如果能收到ARP应答报文,则更新该动态ARP表项,本次老化探测结束;如果超过设置的老化探测次数后仍没有收到ARP应答报文,则删除该动态ARP表项,本次老化探测结束。

设备发送的老化探测报文可以是单播报文,也可以是广播报文。缺省情况下,设备只在最后一次发送ARP老化探测报文是广播模式,其余均为单播模式发送。当对端设备MAC地址不变时,可以配置接口以单播模式发送ARP老化探测报文。

当接口Down时设备会立即删除相应的动态ARP表项。

3、解决办法:定时广播garp
推荐设置:

garp_master_delay 1
garp_master_refresh 5

其它garp设置:

# delay for second set of gratuitous ARPs after transition to MASTER
vrrp_garp_master_delay 10    # seconds, default 5, 0 for no second set

# number of gratuitous ARP messages to send at a time after transition to MASTER
vrrp_garp_master_repeat 1    # default 5

# 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

# minimum time interval for refreshing gratuitous ARPs while MASTER
vrrp_garp_master_refresh 60  # secs, default 0 (no refreshing)

# number of gratuitous ARP messages to send at a time while MASTER
vrrp_garp_master_refresh_repeat 2 # default 1

# Delay in ms between gratuitous ARP messages sent on an interface
vrrp_garp_interval 0.001          # decimal, seconds (resolution usecs). Default 0.

# Delay in ms between unsolicited NA messages sent on an interface
vrrp_gna_interval 0.000001        # decimal, seconds (resolution usecs). Default 0.

扫描二维码推送至手机访问。

版权声明:本文由满纸空言发布,如需转载请注明出处。

本文链接:https://mzky.cc/post/134.html

标签: keepalived+lvs
分享给朋友:

“keepalived开启garp_master_refresh的重要性” 的相关文章

systemctl启动耗时排行4年前 (2021-04-21)
njmon参数4年前 (2021-04-21)
CSRF漏洞修复4年前 (2021-06-10)
go语言优秀的框架4年前 (2021-07-19)
解决goland显示导入异常4年前 (2021-07-19)

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。