公司的webcdn 服务器为了保证高可用,采用了keepalived的ha方案,keepalived对网络环境的依赖性很高(如果服务器之前有丢包即可能导致keepalived vip发生漂移,影响应用的稳定性),因此keepalived适合部署在相近节点。
最近遇到关于invalid ttl的报警,在网上也没有找到解决方法,最后通过对keepalived源码查看找到了问题的原因。
现象:
两台服务器均能获取vip(至于为什么属于不同的组播域也能获取vip是因为我在源码中做了些更改,将多播的方式改成单播的方式了),但是其中一台A vip不能ping通,不能使用arping和ping来刷新ip-mac对应关系
查看日志:
Jul 17 17:19:05 hostname-a Keepalived: invalid ttl. 254 and expect 255
Jul 17 17:19:05 hostname-a Keepalived: bogus VRRP packet received on eth0 !!!
Jul 17 17:19:05 hostname-a Keepalived: VRRP_Instance(Nginx_251) ignoring received advertisment...
对源码的查看:
Vrrp.c中定义了这个错误的原因
if (ip->ttl != VRRP_IP_TTL) {
syslog(LOG_INFO, "invalid ttl. %d and expect %d", ip->ttl,