公有云与私有云的keepalived配置逻辑截然不同:私有云可直接用vrrp组播+ip addr绑定vip;公有云必须先在控制台创建并绑定havip,virtual_ipaddress只能填该已绑定地址,否则vip不生效。

公有云和物理机/私有云的配置逻辑完全不同,不能混用;直接在阿里云 ECS 上配 virtual_ipaddress 为未绑定的 IP,VIP 永远不会生效——流量根本进不来。
先确认你跑在哪种环境上
这是所有后续操作的前提。Keepalived 本身不区分云或非云,但网络层限制让它在不同环境下的行为天差地别。
- 物理机、VMware、OpenStack 等私有云:可直接用 VRRP 组播协商 +
ip addr add绑定 VIP,interface填真实网卡名(如ens33),virtual_router_id和auth_pass主备必须完全一致 - 阿里云、腾讯云、AWS 等公有云:必须先在控制台创建 HaVip(或等效资源,如 AWS 的 ENI Secondary IP),并手动绑定到主备两台 ECS(同一交换机内);
keepalived.conf中的virtual_ipaddress只能写这个已绑定的 HaVip 地址,写别的无效 - 验证方式也不同:物理环境用
ip addr show dev ens33看 VIP 是否出现;公有云则必须查控制台中 HaVip 关联的 ECS 实例是否已变更,再配合journalctl -u keepalived -n 30看是否有Entering MASTER STATE
安装 Keepalived 别只用 yum/apt
包管理器装得快,但默认可能禁用关键功能。尤其在需要健康检查或 IPVS 集成时,源码编译更可控。
- Debian/Ubuntu:
sudo apt-get install -y keepalived可用,但注意它默认不启用--enable-vrrp或--enable-ipvs,若需自定义 check script 或对接 LVS,建议源码装 - RHEL/CentOS 7+:
yum install -y keepalived装的是较旧版(如 1.3.x),而 2.2.x 后才稳定支持vrrp_script的权重动态调整,生产环境建议源码编译 - 源码安装关键三步:
./configure --prefix=/usr/local --sysconfdir=/etc --enable-vrrp --enable-ipvs→make && sudo make install→ 补软链接:sudo ln -sf /usr/local/sbin/keepalived /usr/sbin/keepalived
配置文件里最容易错的四个参数
90% 的 VIP 不漂移问题都出在这几个字段,且错误现象高度相似:日志显示状态切换了,但 ip addr 没变化,或切换后立即回切。
-
state:主节点必须是MASTER,备节点是BACKUP;不要设成FAULT或留空,否则不参与选举 -
priority:主备差值必须 >advert_int(默认 1 秒),例如advert_int 1时,主设 100、备设 98 是安全的;设 99 就可能抖动 -
authentication块:auth_pass必须严格相同、长度 ≤8 字符,多一个空格或换行都会导致Invalid checksum错误 -
interface:必须填实际走流量的物理网卡(如eth0),不能填lo或 bond 接口(除非明确配置了bond支持);公有云环境下还必须确保该网卡已绑定 HaVip
VIP 漂移失败时优先查什么
别一上来就改配置,先快速定位是协议层问题,还是云平台拦截,或是本地服务异常。
- 第一眼查
systemctl status keepalived和journalctl -u keepalived -n 30:有没有Starting Keepalived...?有没有Entering MASTER STATE?没这些,说明服务根本没起来或配置解析失败 - 第二步抓包:
tcpdump -i eth0 host 224.0.0.18 -nn -c 5(物理环境);如果只有一边收得到,说明组播被交换机或防火墙拦了,此时应改单播模式,在vrrp_instance块里加unicast_src_ip和unicast_peer - 第三步看云平台控制台:公有云下,
ip addr即使显示 VIP,也不代表流量可达;必须确认 HaVip 的绑定实例是否已更新,且时间戳比 keepalived 日志里的状态切换时间晚 - 最后才动配置:改完
/etc/keepalived/keepalived.conf后,必须systemctl restart keepalived,reload不生效
真正麻烦的从来不是“怎么配”,而是“为什么配了不生效”——物理环境卡在组播或防火墙,公有云卡在控制台绑定延迟或 HaVip 权限,这些细节不亲手试一次很难信。











