HAVIP 是怎么漂移的
高可用虚拟 IP 是一个能在同 VPC 内漂移的私网地址:它与 keepalived 等自建软件配合,主节点持有该地址对外提供服务,主节点故障后备节点接管该 IP 继续服务。常用于自建 Nginx、数据库主备以及必须使用固定私网地址的第三方高可用设备。注意它必须绑定到实例或网卡上才能承载流量。
基本信息
| 用途 | 自建主备高可用,故障时私网地址漂移到健康节点 |
|---|---|
| 依赖 | keepalived 或自研健康检查,配合 VRRP 或单播心跳 |
| 绑定要求 | 必须绑定实例或网卡,未绑定时不会接管任何流量 |
| 替代方案 | 托管型负载均衡可覆盖部分场景,运维更省心 |
| 常见风险 | 心跳被拦截会导致双主,两台都宣称持有该地址 |
典型使用场景
- 自建 Nginx 主备对外提供固定私网入口
- 数据库主备切换,保持应用侧连接地址不变
- 第三方设备要求固定的私网对接地址
- 测试环境快速搭一套主备切换来验证流程
- 托管负载均衡无法满足的协议或场景,用自建方案补齐
keepalived 主备片段
keepalived 主备片段
vrrp_instance VI_1 {
state MASTER # 备机改为 BACKUP
interface eth0
virtual_router_id 51
priority 100 # 备机改为 90
advert_int 1
unicast_src_ip 10.10.1.10
unicast_peer {
10.10.2.10
}
virtual_ipaddress {
10.10.1.100
}
}部署检查项
| 检查项 | 要求 | 不满足的后果 |
|---|---|---|
| 地址绑定 | 已绑定到实例或网卡 | 地址不承载任何流量 |
| 心跳放行 | 安全组放行心跳地址与协议 | 出现双主,地址冲突 |
| 优先级设置 | 主备优先级不同且合理 | 角色频繁互换 |
| 健康检查 | 检查脚本贴合真实业务 | 故障节点仍持有地址 |
云上 VRRP 组播常被网络策略限制,建议使用单播心跳(unicast_peer),并在安全组中放行心跳地址与端口。
HAVIP 提供的是地址接管的机制,不提供数据同步能力:数据库与文件的一致性仍要靠复制与同步方案解决。
切换后的验证
漂移完成后要验证地址确实落在备节点、业务端口可访问、数据保持连续;只看到 keepalived 日志提示切换成功,并不等于业务已经真正恢复。