首页/云/云网络与负载均衡速查/高可用虚拟 IP(HAVIP)

高可用虚拟 IP(HAVIP)

高可用虚拟 IP 是一个能在同 VPC 内漂移的私网地址:配合 keepalived 等自建软件实现主备切换,主节点故障后备节点接管该 IP 继续提供服务,常用于自建 Nginx、数据库主备与第三方高可用设备。

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 日志提示切换成功,并不等于业务已经真正恢复。

易错点

  • HAVIP 未绑定到实例或网卡,配置看似完成但没有任何流量接管
  • 心跳被安全组拦截造成双主,两台都宣称持有该地址,业务流量时通时断
  • 只关注地址漂移不做数据同步,切换后数据不一致
  • 健康检查脚本过于简单,服务已异常但地址仍被持有

数据来源与参考

  • 阿里云 高可用虚拟 IP 文档
  • keepalived 官方文档
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌