Keepalived 高可用
type
status
date
slug
summary
tags
category
icon
password
一、Keepalived 高可用简介
- 目标:解决单点故障,提升服务高可用性。
- 原理:
- 基于 VRRP 协议。
- 将多个设备组成 VRRP 组,通过 浮动 IP (VIP) 提供服务。
- 主备选举:优先级高的设备作为主(Master),浮动 IP 绑定在主设备上。
- 心跳机制:主设备定期发送心跳,备设备接收不到心跳则接管服务。
心跳相关
- 默认:组播方式,地址
224.0.0.18。
- 可能问题:
- 防火墙阻断。
- 时间不同步。
- 网络拥塞/多网卡负载分担。
二、Keepalived 高可用部署
部署环境
- 两台 haproxy 负载均衡器,配置一致。
- 在两台服务器上安装 keepalived:
配置示例
主节点(Master)
备节点(Backup)
测试步骤
- 主机查看浮动 IP:
ip a→ 只有 Master 有192.168.140.100。
- 客户端通过浮动 IP 访问业务。
- 停止主机,备机会接管 VIP,客户端仍能访问。
三、Keepalived + 脚本检测服务
1. 检测 Haproxy
编写检测脚本:
配置调用脚本:
2. 检测 Nginx + MySQL 代理
- 使用 Nginx stream 模块作为四层代理(示例:MySQL)。
- 检测 Nginx 服务脚本:
- 在
keepalived.conf中配置vrrp_script和track_script。
主:
从:
四、Keepalived 心跳验证
1. 抓包查看心跳
可看到 VRRP 广播报文(组播)。
2. 修改为单播
在配置中增加:
五、避免高优先级节点自动抢占 VIP
- 配置示例:
注意与纠正
- 错误点:教程里部分示例直接
killall keepalived,这会导致节点完全退出,存在风险。
更推荐做法:让 keepalived 降低优先级或退出 VRRP 实例,而不是杀掉整个进程。
示例(替代方案):
- 易误解:
nopreempt并不是关闭抢占,而是指 高优先级节点恢复后不强制收回 VIP,除非当前 Master 失效。
Loading...