必须先确认运行环境类型(物理/私有云或公有云),再严格配置interface、virtual_router_id、auth_pass、priority四要素:物理环境用VRRP组播绑定VIP,公有云须先在控制台创建并绑定HaVip,keepalived仅能配置该已绑定地址。

在Linux上让两台服务器共用一个对外IP地址,主节点挂掉后VIP自动漂移到备节点,必须先确认运行环境类型再精准配置四要素,否则VIP永远不生效。
第一步:确认你跑在哪种网络环境上
物理机/VMware/OpenStack/本地局域网:可直接启用VRRP组播,VIP用ip addr add绑定到真实网卡(如ens33),interface填网卡名即可。
阿里云、腾讯云、AWS等公有云:VRRP组播被屏蔽,【必须先在控制台创建HaVip并手动绑定到主备两台ECS】,keepalived.conf中virtual_ipaddress只能填这个已绑定的地址,填其他IP流量根本进不来。
执行ip -br a确认目标网卡处于UP状态,且有同网段物理IP(如192.168.100.11/24);VIP(如192.168.100.107)不能和任何物理IP冲突,也不能是网关或广播地址。
第二步:安装Keepalived
Debian/Ubuntu执行:sudo apt-get update && sudo apt-get install -y keepalived。
RHEL/CentOS 7/8:sudo yum install -y keepalived(CentOS 8+推荐dnf)。
安装后验证:ls /usr/sbin/keepalived应返回路径;systemctl list-unit-files | grep keepalived应显示enabled或disabled状态。
若用源码编译,编译后务必补软链:sudo ln -sf /usr/local/sbin/keepalived /usr/sbin/keepalived,否则systemctl start keepalived会报找不到可执行文件。
第三步:放行VRRP协议或跳过防火墙配置
物理/私有云环境:执行sudo firewall-cmd --permanent --add-protocol=vrrp && sudo firewall-cmd --reload。
公有云环境:不用开224.0.0.18——云平台通常禁用组播,keepalived实际走的是云平台内部心跳机制,配置里加不加unicast_peer都不影响。
第四步:配置vrrp_instance四要素
① 打开主配置文件:sudo vim /etc/keepalived/keepalived.conf。
② 清空默认内容,写入最小可用配置块:
! Configuration File for keepalived
global_defs {
router_id LVS_MASTER
}
vrrp_instance VI_1 {
state MASTER
interface ens33
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1234
}
virtual_ipaddress {
192.168.100.107 dev ens33
}
}
③ 备节点配置仅改三处:state BACKUP、priority 90、virtual_router_id和auth_pass必须与主节点完全一致。
④ 【virtual_router_id必须在同一局域网所有节点中唯一且一致(范围1–255),哪怕只配两台也不能随意改】;priority主备差值必须大于advert_int(默认1秒),设99容易因网络抖动来回抢主。
第五步:启动并分层验证
启动服务:sudo systemctl enable --now keepalived。
物理/私有云环境:执行ip addr show dev ens33查VIP是否出现;tcpdump -i ens33 host 224.0.0.18看VRRP报文是否收发正常。
公有云环境:查控制台中HaVip关联的ECS实例是否已变更;再配合journalctl -u keepalived -n 30看是否有Entering MASTER STATE。
禁用vrrp_strict(默认配置里常有)——它会阻止非owner IP响应ping,导致VIP看起来不通。


















