最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
怎样实现 Linux 服务器网络冗余:配置 Keepalived 故障转移
时间:2026-07-12 08:52:03 编辑:袖梨 来源:一聚教程网
实现Linux服务器网络冗余需用Keepalived通过VRRP协议管理VIP,主备节点同网段、开放VRRP组播、配置一致的virtual_router_id和认证,主节点state MASTER/priority高,备节点BACKUP/priority低,并通过健康检查脚本动态调整优先级触发切换。
实现 Linux 服务器网络冗余,关键在于让服务对外的 IP 地址(VIP)不依赖于单台物理机。Keepalived 通过 VRRP 协议让多台服务器“竞争”持有同一个虚拟 IP,主节点故障时,备节点自动接管——整个过程对客户端透明,无需改 DNS 或客户端配置。
准备基础网络环境
Keepalived 依赖底层网络连通性,必须确保主备节点能互通且无防火墙拦截 VRRP 报文:
- 主备服务器需在同一二层网络(如相同 VLAN 或物理交换机直连),VRRP 默认使用组播地址 224.0.0.18 通信
- 关闭或放行防火墙中的 VRRP 协议:在 firewalld 中执行
firewall-cmd --add-protocol=vrrp --permanent && firewall-cmd --reload - 确认网卡启用了 multicast 支持(默认开启),可用
ip link show eth0 | grep multicast验证 - 避免使用云厂商的“弹性公网 IP”直接绑定到 Keepalived VIP——这类 IP 通常由平台托管,需配合云 API 实现漂移,不能仅靠 VRRP
配置 Keepalived 主备角色
核心是定义 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 } - 当检测失败时,脚本返回非零值,Keepalived 自动降低本节点优先级(如减 20),触发主备切换
- 注意:脚本需有可执行权限(
chmod +x),且运行用户需有网络访问能力(默认以 root 运行)
验证与日常运维要点
配置生效后,不要只看 VIP 是否飘过去,要验证完整链路:
- 用
ip addr show确认 VIP 出现在主节点网卡上;备节点不应出现该地址 - 从局域网另一台机器 ping VIP,再 telnet 或 curl 测试业务端口,确认响应来自当前主节点
- 手动停掉主节点的 keepalived:
systemctl stop keepalived,观察备节点日志(journalctl -u keepalived -f)是否打印Transition to MASTER STATE - 生产环境建议启用独立日志:
log syslog local2并在/etc/rsyslog.conf中添加local2.* /var/log/keepalived.log,便于快速定位切换原因
相关文章
- WAIC 2026直击:燧原双线布局超节点:前瞻光互连 07-22
- 大连海创周共谋AI+智能网联汽车产业发展新路径 07-22
- 街舞演出视频 07-22
- Mahadev 能量与恶魔的战争 07-22
- E站ehviewer网页版入口-ehviewer网页版进入口官网 07-22
- Valkyrie 动漫 战斗 Sakuga 07-22