包管理器安装是最快最稳的选择,95%生产环境应优先使用;debian/ubuntu执行sudo apt-get update && sudo apt-get install -y keepalived,rhel/centos用sudo yum install -y keepalived或sudo dnf install -y keepalived,安装后验证ls /usr/sbin/keepalived及防火墙添加vrrp协议规则。

直接用包管理器装 keepalived 是最快、最稳的选择,95% 的生产环境都该这么干;源码编译只在需要启用 --enable-ipvs、定制内核模块或系统太老(如 CentOS 6)时才必要。
用 apt/yum/dnf 安装 keepalived 最简流程
包管理器安装省去依赖判断和路径配置,二进制、服务单元、默认配置全都有,适合绝大多数场景。
- Debian/Ubuntu:运行
sudo apt-get update && sudo apt-get install -y keepalived - RHEL/CentOS 7/8/9:用
sudo yum install -y keepalived(CentOS 8+ 推荐dnf) - 安装后检查:执行
ls /usr/sbin/keepalived应返回路径;systemctl list-unit-files | grep keepalived应显示 enabled 或 disabled 状态 - 注意防火墙:
keepalived默认使用 VRRP 协议(IP 协议号 112),不是 TCP/UDP 端口,所以不能用firewalld的--add-port,得加协议规则:sudo firewall-cmd --permanent --add-protocol=vrrp,然后 reload
源码编译安装的三个硬性前提
别为了“最新版”或“看起来更专业”去编译——除非你明确需要以下某一点,否则纯属增加故障面。
- 必须启用 IPVS 支持(比如要配合 LVS 做四层负载):configure 时得带
--enable-ipvs,且系统需装kernel-devel和ipvsadm - 系统无对应包(如某些定制化 ARM 或老旧发行版),
apt search keepalived或dnf list keepalived返回空 - 需要 patch 特定 CVE 补丁,而官方包尚未更新(极少见,查
keepalived --version和 CVE 数据库确认) - 编译后务必补软链:
sudo ln -sf /usr/local/sbin/keepalived /usr/sbin/keepalived,否则systemctl start keepalived会报找不到可执行文件
配置 vrrp_instance 时最容易错的四件事
vrrp_instance 块看似简单,但一个参数错就导致 VIP 不漂、状态卡 BACKUP、或两台同时抢 MASTER。
-
interface必须填主机实际网卡名(如ens33、eth0),不是lo,也不是virbr0;用ip -br a确认 -
virtual_router_id在同一局域网所有节点中必须唯一且一致(范围 1–255),哪怕只配两台也不能随意改 -
priority主备靠它区分:MASTER 设 100,BACKUP 设 90;但若 BACKUP 的 priority ≥ MASTER,且启用了抢占(默认开启),就会立刻抢主 -
authentication的auth_pass必须完全一致(包括空格),且长度建议 ≤ 8 字符;不一致会导致邻居无法认证,tcpdump -i ens33 vrrp可看到“invalid auth”
验证 VIP 是否生效不能只看 ip addr
ip addr show 显示 VIP 只说明内核绑定了地址,不代表 VRRP 协议已协商成功或服务真正可用。
- 先看日志:
sudo journalctl -u keepalived -n 50 -f,正常应有 “Registering Kernel netlink reflector”、“Starting VRRP instance”、“Using LinkWatch kernel netlink reflector…” - 再抓包确认协议通不通:
sudo tcpdump -i ens33 'proto 112',MASTER 应周期性发包(默认 1 秒),BACKUP 应收得到 - 最后模拟故障:在 MASTER 上执行
sudo systemctl stop keepalived,3 秒内 BACKUP 的ip addr show应出现 VIP,且日志出现 “VRRP_Instance(VI_1) Entering MASTER STATE” - 注意:如果 VIP 漂了但服务不可达,大概率是没关 SELinux 或没放开 ARP 响应(
net.ipv4.conf.ens33.arp_ignore和arp_announce需设为 1/2)
真实环境中最常被忽略的是网络层连通性——VRRP 报文走二层,交换机 ACL、端口安全、甚至云平台的安全组都可能拦截协议号 112;不要假设“同网段就一定通”,抓包永远比猜快。











