linux高可用vip绑定核心是keepalived通过vrrp协议自动切换虚拟ip:主节点存活时vip归属主节点,故障后秒级漂移至备节点;需严格匹配interface、virtual_router_id、auth_pass三项参数,并配置应用层健康检查防止服务宕机vip滞留。

Linux中绑定主备VIP实现高可用,核心不是“手动配两个IP”,而是让Keepalived自动在主备节点间切换一个虚拟IP(VIP)。这个VIP对外始终不变,内部由VRRP协议协调归属——主节点存活时VIP落在它身上,故障后秒级漂移到备节点。关键在于配置严谨、网络对齐、环境适配。
确认部署环境类型:物理/私有云 vs 公有云
这是第一步,决定整个方案走向:
-
物理机或私有云:可直接用Keepalived宣告VIP,通过组播VRRP协商主备,VIP会真实添加到网卡(如
ip addr add 192.168.1.100/24 dev ens33) -
阿里云、腾讯云等公有云:禁止私自宣告未绑定IP。必须先在控制台创建HaVip(或类似资源),并**同时绑定主备两台ECS**;Keepalived只能将
virtual_ipaddress设为该HaVip地址,它只负责通知状态,路由生效靠云平台同步
基础网络与权限准备
无论哪种环境,以下检查缺一不可:
- 主备节点使用同一交换机/子网,VIP与物理IP必须同网段(如物理IP是
192.168.10.11/24,VIP就只能是192.168.10.x) - 用
ip -br a确认承载流量的网卡名(如ens33),不能写错或写lo - 防火墙放行VRRP协议:
firewall-cmd --add-rich-rule='rule protocol value="vrrp" accept'(CentOS)或对应ufw/iptables规则 - SELinux启用时执行:
setsebool -P keepalived_read_etc 1,否则无法读取自定义健康检查脚本
VRRP核心参数必须严格一致
Keepalived配置中,以下三项构成主备识别的“铁三角”,任意一项不匹配都会导致VIP不漂或双主:
Linux 性能分析与调优专家,覆盖 CPU、内存、磁盘 I/O、网络、内核参数、编译优化、容器/K8s。适用场景:系统卡顿/高负载、内存不足/OOM/Swap 高、CPU 异常/iowait 高。
-
interface:填实际网卡名,和
ip -br a输出完全一致 - virtual_router_id:1–255之间整数,主备必须相同,且局域网内全局唯一(多实例时各ID不得重复)
-
authentication.auth_pass:密码≤8字符,主备完全一致,否则报
Invalid checksum
state和priority按角色区分:
- 主节点写
state MASTER、priority 100 - 备节点写
state BACKUP、priority 90(差值建议≥10,防抖动)
加健康检查,避免服务挂了VIP还滞留
只靠VRRP心跳不够——如果Nginx崩溃但Keepalived进程还在,VIP不会自动迁移,用户持续收到502。必须绑定应用层健康检查:
- 写一个检测脚本(如
/etc/keepalived/nginx_check.sh),用curl -I http://127.0.0.1:80判断Nginx是否响应 - 在
vrrp_instance块中引用:track_script { chk_nginx } - 在全局块定义脚本:
vrrp_script chk_nginx { script "/etc/keepalived/nginx_check.sh" interval 2 }
验证时用journalctl -u keepalived -n 30看日志是否有Entering MASTER STATE或Removing VIPs,再用ip addr show dev ens33确认VIP是否出现在当前主节点网卡上。










