实现Linux服务器网络冗余需用Keepalived通过VRRP协议管理VIP,主备节点同网段、开放VRRP组播、配置一致的virtual_router_id和认证,主节点state MASTER/priority高,备节点BACKUP/priority低,并通过健康检查脚本动态调整优先级触发切换。
实现 Linux 服务器网络冗余,关键在于让服务对外的 IP 地址(VIP)不依赖于单台物理机。Keepalived 通过 VRRP 协议让多台服务器“竞争”持有同一个虚拟 IP,主节点故障时,备节点自动接管——整个过程对客户端透明,无需改 DNS 或客户端配置。
Keepalived 依赖底层网络连通性,必须确保主备节点能互通且无防火墙拦截 VRRP 报文:
firewall-cmd --add-protocol=vrrp --permanent && firewall-cmd --reload
ip link show eth0 | grep multicast 验证核心是定义 vrrp_instance,主备差异仅体现在 state 和 priority 上,其余参数必须严格一致:
state MASTER,priority 值更高(如 100)state BACKUP,priority 值更低(如 90),且 virtual_router_id 必须与主节点完全相同(0–255 范围内)interface 指定实际承载流量的网卡(如 eth0),不是 bond 接口名(若用了 bonding,此处填 bond0)authentication 推荐用 PASS 类型,密码最多取前 8 字符,主备必须一致仅靠心跳无法判断服务是否真正在工作。必须通过自定义脚本探测业务端口或进程状态,并动态调整优先级:
/etc/keepalived/check_http.sh 中写检测逻辑,例如:curl -f http://127.0.0.1:80/health || exit 1
track_script { chk_http },并定义 vrrp_script chk_http { script "/etc/keepalived/check_http.sh" interval 2 weight -20 }
chmod +x),且运行用户需有网络访问能力(默认以 root 运行)配置生效后,不要只看 VIP 是否飘过去,要验证完整链路:
ip addr show 确认 VIP 出现在主节点网卡上;备节点不应出现该地址systemctl stop keepalived,观察备节点日志(journalctl -u keepalived -f)是否打印 Transition to MASTER STATE
log syslog local2 并在 /etc/rsyslog.conf 中添加 local2.* /var/log/keepalived.log,便于快速定位切换原因