■
Keepalivedを使っていると、たまに
Jan 6 15:11:03 aplvs2 Keepalived_vrrp: bogus VRRP packet received on eth1 !!! Jan 6 15:11:03 aplvs2 Keepalived_vrrp: VRRP_Instance(VI_1) ignoring received advertisment... Jan 6 15:11:04 aplvs2 Keepalived_vrrp: receive an invalid ip number count associated with VRID! Jan 6 15:11:04 aplvs2 Keepalived_vrrp: bogus VRRP packet received on eth1 !!! Jan 6 15:11:04 aplvs2 Keepalived_vrrp: VRRP_Instance(VI_1) ignoring received advertisment...
というエラーメッセージがログに残っているので気持ち悪い.
Web上でも同様のエラーメッセージについての質問が出ているのだけど、大抵話が大きくなっていくのでちょっと違いかなぁ、と.
面倒なので、VRRPのパケットの仕様を横目で見つつソースコードを眺めてみた.
if (!LIST_ISEMPTY(vrrp->vip)) { /* * MAY verify that the IP address(es) associated with the * VRID are valid */ if (hd->naddr != LIST_SIZE(vrrp->vip)) { log_message(LOG_INFO, "receive an invalid ip number count associated with VRID!"); return VRRP_PACKET_KO; } for (e = LIST_HEAD(vrrp->vip); e; ELEMENT_NEXT(e)) { ipaddress = ELEMENT_DATA(e); if (!vrrp_in_chk_vips(vrrp, ipaddress->addr, vips)) { log_message(LOG_INFO, "ip address associated with VRID" " not present in received packet : %d", ipaddress->addr); log_message(LOG_INFO, "one or more VIP associated with" " VRID mismatch actual MASTER advert"); return VRRP_PACKET_KO; } } } else if (hd->naddr > 0) { log_message(LOG_INFO, "receive an invalid ip number count associated with VRID!"); return VRRP_PACKET_KO; }
何となくMasterから受信した仮想IPアドレスの設定数が自分のものと異なると出力されるのかなぁ、と推測.
Master - Backup間の設定をずらしたり合わせたりすると、エラーメッセージが出たり消えたりしたのでそれっぽい.