主流 VIP 漂移方案
核心概念 VIP(虚拟 IP)漂移是实现高可用的核心技术,主流方案包括 Keepalived+VRRP、Heartbeat、云平台 VIP 等。
VIP(虚拟IP)漂移:多台服务器共享同一个对外统一IP,主节点故障时IP自动切换到备节点,客户端无需修改访问地址,实现服务无单点。
按使用环境分为四大类:传统机房VRRP方案、K8s云原生VIP方案、公有云托管VIP方案、BGP三层路由漂移方案,覆盖裸金属、私有云、容器集群、公有云全部场景。
1. 传统机房/虚拟机通用:Keepalived(VRRP协议,行业最经典)
1.1. 底层原理
基于 VRRP 虚拟路由冗余协议(IP协议号112,组播224.0.0.18)
- 多台主机组成VRRP组,配置同一
virtual_router_id; - 按
priority优先级选举:数值越大越优先,高优先级默认MASTER持有VIP; - Master每秒发送VRRP心跳报文;Backup收不到心跳则判定主故障,升级自身为Master,绑定VIP、发送免费ARP全网刷新MAC映射;
- 支持自定义业务健康检查(Nginx/MySQL进程、端口、HTTP接口),业务异常主动降权释放VIP。
1.2. 核心能力
- 一主一备、一主多备;支持抢占/非抢占模式(nopreempt避免频繁来回漂移);
- 可配合LVS、HAProxy、MySQL、Redis、Nginx实现四层/七层入口高可用;
- 切换速度:3~10秒,取决于心跳间隔与故障判定次数;
- 支持脚本回调,漂移前后执行启停、告警脚本。
1.3. 适用环境
自建IDC裸金属、VMware/KVM私有虚拟化、同子网内网环境。
1.4. 优缺点
✅ 优点:部署简单、无额外组件、Linux原生、免费稳定、支持TCP/UDP全协议;
❌ 缺点:
- 公有云VPC大多拦截VRRP组播报文,原生VRRP无法直接使用;
- 仅二层同网段可用,跨机房跨子网不支持;
- 同一时间只有一台节点持有VIP,无法多节点同时负载均衡;
- 容易出现“乒乓漂移”(网络抖动频繁切换)、脑裂(防火墙阻断VRRP心跳)。
1.5. 云上兼容改造方案(公有云不能用原生VRRP)
云厂商屏蔽VRRP,改用HaVip+API脚本:
- 云平台创建托管内网虚拟IP(HaVip);
- Keepalived关闭VRRP,仅做业务健康检测;
- 检测到主故障后调用云API,将HaVip解绑主机、绑定到备机;
- EIP弹性公网IP绑定HaVip,公网入口跟随漂移。
2. K8s云原生集群VIP漂移方案(容器环境专用)
2.1. 方案1:kube-vip(K8s控制平面高可用首选)
2.1.1. 原理
轻量级静态Pod,专门为K8s Master控制平面提供API Server VIP,两种模式:
- ARP二层模式:同网段节点通过免费ARP实现VIP漂移,基于Raft分布式选举选主,替代VRRP;
- BGP三层模式:与机房上游BGP交换机建立邻居,多节点同时通告VIP路由,ECMP负载均衡。
2.1.2. 特点
- 无需额外部署Keepalived/HAProxy,集群内原生运行;
- 适配kubeadm一键部署多Master集群;
- 切换速度1~3秒,无VRRP组播限制。
2.1.3. 适用:自建K8s多Master控制平面高可用。
2.2. 方案2:MetalLB(自建K8s暴露LoadBalancer Service标准)
裸金属/私有云K8s没有云厂商LoadBalancer,MetalLB提供集群VIP能力,两大工作模式:
2.2.1. (1)Layer2 二层ARP模式(类Keepalived)
- 集群同一子网,通过ARP抢占VIP,同一时刻仅一个节点持有;
- 基于K8s原生leader选举故障漂移;
- 缺点:单节点承载流量,存在单点瓶颈。
2.2.2. (2)BGP三层路由模式(生产高性能推荐)
每个集群节点和机房物理BGP交换机建立邻居,所有节点同时向交换机通告同一VIP路由;
- 上游路由器ECMP多路径分发流量,多节点同时负载均衡;
- 某节点故障,自动撤回路由,流量平滑切走;
- 跨子网、跨机柜无二层限制,性能远高于二层单主模式。
2.2.3. 适用:自建IDC K8s集群,对外暴露业务LoadBalancer。
2.3. 方案3:Keepalived+externalIPs(传统迁移K8s过渡方案)
宿主机部署Keepalived生成内网VIP,K8s Service配置externalIPs绑定该VIP;
流量路径:客户端VIP → 宿主机 → NodePort → Pod。
缺点:需要宿主机预装软件,容器化不纯粹,新项目优先MetalLB/kube-vip。
3. 公有云托管VIP漂移方案(阿里云/腾讯云/AWS/Azure)
公有云网络隔离VRRP,全部采用云厂商托管能力,分两类:
3.1. 内网虚拟IP:云厂商HaVip(华为云/阿里云/腾讯云)
3.1.1. 原理
平台托管虚拟内网IP,不依赖VRRP,支持两种切换触发:
- 手动API切换:自研监控脚本检测业务故障,调用云API将HaVip绑定至备用ECS;
- 配合Keepalived改造:关闭VRRP心跳,仅做健康检测,故障时自动调用HaVip切换接口。
3.1.2. 配套公网:HaVip绑定EIP弹性公网IP,公网入口跟随VIP漂移。
3.1.3. 切换耗时:5~15秒,完全由云平台网络管控,无ARP广播问题。
3.2. 全托管负载均衡(SLB/NLB/ALB,主流业务首选)
本质是云厂商底层实现自动VIP漂移,用户无感知:
- 四层NLB:公网固定VIP,后端挂载多可用区ECS,内置健康检查,故障后端自动下线;底层集群多台网关设备,网关故障VIP自动漂移至其他网关;
- 七层ALB:HTTP/HTTPS专用,SSL卸载、域名分流,底层网关集群高可用;
✅ 优势:无需自己维护漂移逻辑、多可用区容灾、自动弹性扩容、防DDoS;
适用:Web、API、微服务公网入口,90%云上业务标准方案。
3.3. 弹性网卡ENI漂移方案
多台ECS预分配辅助弹性网卡,监控检测主实例故障后,调用云API将承载VIP的ENI解绑主、绑定备机;
适合数据库、中间件主备集群(MySQL主从、Redis哨兵)。
4. BGP路由通告漂移(三层高性能,大型IDC/运营商标准)
4.1. 核心原理
摒弃二层ARP/VRRP,通过BGP动态路由协议实现VIP全网可达:
- 多台负载均衡节点(LVS/HAProxy/MetalLB)与机房核心BGP交换机建立邻居;
- 所有节点同时向BGP发布同一条VIP静态路由;
- 交换机ECMP等价路由,流量均分所有节点;
- 节点故障:BGP自动撤销该节点路由,流量自动转移至剩余节点,秒级切换(<1s)。
4.2. 两大落地场景
- 自建K8s MetalLB BGP模式:业务LoadBalancer多节点并发承载流量;
- 机房四层网关LVS集群:全网入口多活,无单点瓶颈,支撑百万并发;
4.3. 优势对比二层VRRP
- 多节点同时提供服务,无单主性能瓶颈;
- 不受二层同网段限制,跨机柜、跨机房均可;
- 故障切换极快,无ARP缓存刷新延迟;
4.4. 缺点
需要机房交换机开通BGP邻居权限,小型机房无交换机权限无法使用。
5. 四大类方案完整对比表
| 方案 | 底层协议 | 同一时间多节点承载流量 | 切换耗时 | 适用场景 | 环境限制 |
| Keepalived VRRP | VRRP二层ARP | 否(单主) | 3~10s | 自建IDC、虚拟机、传统业务 | 必须同子网;公有云原生不可用 |
| kube-vip ARP | 二层ARP+Raft选举 | 否(单主) | 1~5s | K8s多Master控制平面 | K8s集群、同子网 |
| MetalLB Layer2 | ARP+K8s选举 | 否(单主) | 2~6s | 自建K8s小型业务 | 集群同网段 |
| MetalLB BGP / 机房BGP LVS | BGP三层路由 | 是(ECMP负载) | <1s | 大规模IDC、高并发K8s | 交换机支持BGP邻居 |
| 云HaVip+API脚本 | 云平台管控接口 | 否(单主备) | 5~15s | 公有云数据库/中间件主备 | 仅对应厂商VPC |
| 云NLB/ALB托管LB | 厂商底层集群 | 是,多网关集群 | <2s | 云上Web公网业务 | 公有云环境 |
6. 生产选型推荐
- 传统自建机房物理机/虚拟机(非容器)
- 小规模双机主备:Keepalived(VRRP);
- 高并发四层网关集群:LVS+BGP多活。
- 自建裸金属K8s集群
- 多Master控制平面VIP:kube-vip;
- 业务对外暴露LoadBalancer:MetalLB BGP模式;
- 阿里云/腾讯云/AWS公有云
- Web/API公网入口:直接使用NLB/ALB托管负载均衡(厂商底层自动漂移);
- 数据库、Redis内网主备:HaVip+健康检测脚本漂移;
- 跨机房、超大流量、百万并发
BGP三层路由方案,多节点同时负载均衡,无单点瓶颈。
7. 通用生产避坑要点
- Keepalived VRRP必须放行防火墙112协议,否则脑裂无漂移;配置
nopreempt防止恢复后频繁抢占; - 二层ARP类漂移方案切换后需发送免费GARP刷新全网ARP缓存,否则客户端短暂断连;
- 公有云严禁直接部署原生VRRP,会出现双MASTER双持VIP,网络冲突;
- BGP方案机房交换机需提前规划路由、分配AS号,避免路由泄露;
- 所有漂移方案必须配套完善业务健康检查(不只检查端口,最好HTTP业务接口探测);
- 数据库类有状态业务优先使用云HaVip/ENI漂移,搭配半同步复制降低切换数据丢失风险。
关联文档