1、背景
高可用虚拟IP(HaVip)是一种可以独立创建和释放的私网IP资源,具备与虚拟机、容器实例主私网IP地址一样的网络接入能力,可以与高可用软件,例如Keepalived配合使用,搭建高可用主备服务,提高业务的可用性。
在功能上,HaVip在支持创建、更新、删除、查询之外,还支持绑定和解绑实例、绑定和解绑EIP。
1.1 定义与核心功能
HAVIP(High-Availability Virtual IP)是一种由云平台(如腾讯云、阿里云)分配的内网IP地址,其核心功能是确保在主备服务器故障切换过程中,对外服务的虚拟IP地址保持不变,从而避免业务中断。它并非独立品牌产品,而是云计算基础设施中的技术组件,英文全称为"High-Availability Virtual IP",中文直译为"高可用虚拟IP"。
1.2 工作原理
HAVIP通过以下机制实现高可用性:
-
主备选举:与Keepalived等第三方HA软件配合,基于VRRP协议比较服务器优先级(priority值),选举出主服务器(Master)。主服务器负责处理流量,并周期性发送心跳报文至备服务器(Backup)。
-
故障切换:当备服务器在指定时间(由advert_int参数控制)内未收到心跳报文时,自动接管HAVIP,更新IP映射关系,确保流量无缝切换至新主服务器。
-
ARP报文支持:主服务器通过发送ARP报文更新网络设备中的MAC地址表,实现IP绑定,但需注意云环境通常仅支持单播通信。

2、方案设计
2.1 基本功能设计
创建HaVip并绑定实例
创建HaVip时,用户可以填写一个空闲的vpc内的IP地址,系统会使用这个IP(没有指定则自动分配)在vpc内创建一个havip port,用来占用这个IP,其device_owner为"compute:havip"。
HaVip绑定实例时,会为HaVip绑定的实例添加一条DB记录,初始状态为backup。并为实例网卡添加如下的allowed_address_pairs:
bash
# ip_address为HaVip地址,mac_address为实例网卡mac# type初始默认为"snat",当Havip绑定EIP后会更新为"fip"{"ip_address": "11.239.0.227", "mac_address": "fa:16:3e:4d:82:73", "type": "snat"}
这是由于:在使用过程中HaVip这个IP会配置在master实例的网卡上,网卡使用这个IP进行收发包,为了保证流量联通性,需要在底层放行这种流量。
apache
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1450 qdisc mq state UP group default qlen 1000 link/ether fa:16:3e:4d:82:73 brd ff:ff:ff:ff:ff:ff inet 11.239.0.225/24 brd 11.239.0.255 scope global eth0 valid_lft forever preferred_lft forever inet 11.239.0.227/32 scope global eth0 # HaVip valid_lft forever preferred_lft forever inet6 fe80::f816:3eff:fe4d:8273/64 scope link valid_lft forever preferred_lft forever
主备切换
HaVip集群中的实例部署服务之初,会进行选主。之后如果主节点出现异常,会重新进行选主。选主成功的标志是主节点(master)会发送免费ARP包(gratuitous arp),来向其他节点通告自己的信息。
控制进程需要做的是:
-
下发流表,将gratuitous arp由ovs交给controller(控制进程)处理
apachecookie=0xd8e35d74fe67a8f8, duration=343130.645s, table=60, n_packets=0, n_bytes=0, priority=101,arp,in_port=2154,arp_spa=11.239.0.227,arp_tpa=11.239.0.227 actions=CONTROLLER:65535
-
处理gratuitous arp包(收到的多个gratuitous arp包会被当作一个进行处理),在DB中标识此节点为HaVip集群的master,同时标识老的master为backup
-
更新havip port的device_id为master port的ID,binding:host_id为master实例的宿主机
-
通知FIP网关和CCN网关,修改HaVip相关的host和mac address信息,进行正确的导流
-
从选主成功到neutron和网关的一系列数据变更,整个过程需要一定的时间,会造成访问HaVip的流量断流。经过测试,断流时间为秒级。

HaVip绑定和解绑EIP
如果一个HaVip集群中所有节点为backup,这个HaVip就是不可用的。只有在有且仅有一个master时,才能正常访问和使用。
具体步骤如下:
-
ultron调用neutron,为havip port绑定EIP
-
neutron查询HaVip的master port,构造相关数据通知fip网关、ccn网关
-
ultron调用neutron,更新HaVip的havip_type为"fip"
-
neutron更新HaVip所有关联实例网卡的allowed_address_pair的type为"fip"
同理,HaVip解绑EIP的操作为:
-
ultron调用neutron,为havip port解除绑定EIP
-
neutron查询HaVip的master port,通知fip网关、ccn网关清除相关记录
-
ultron调用neutron,更新HaVip的havip_type为""
-
neutron更新HaVip所有关联实例网卡的allowed_address_pair的type为"snat"
2.2 流量设计
跨vpc访问HaVip
必须为HaVip绑定EIP,才支持跨vpc访问。
这里包含两种情况:同集群和跨集群。流量均由fip网关转发给HaVip的master节点处理。如下图中红色箭头所示。
同vpc访问HaVip
需要分两个情况进行讨论,如下图中蓝色箭头所示。
同集群
理想的方式应为neutron生成HaVip的fdb信息,下发给同集群同vpc的节点。这样HaVip的流量直接进行fdb转发。但考虑到HaVip有可能经常进行主备切换,更新HaVip的fdb信息难以保证实时正常下发,总体实现复杂度高。而vpc内的流量默认交给ccn网关处理,可以不下发HaVip的fdb,在保证连通性的同时减少设计的复杂度。
client出向流量经过ovs流表时,没有HaVip的fdb流表,默认交给ccn网关。ccn网关转发给HaVip的master节点处理。
server回包时,由于ovs上有client的fdb流表,直接转发给client的host。
跨集群
由于没有fdb流表,client和server来回的流量均交给ccn网关转发。


3、使用限制
-
一个HaVip下面最多添加5个实例
-
一个实例最多绑定5个HaVip
-
HaVip 仅支持绑定同一个私有网络的实例,不支持绑定跨私有网络的实例。
-
HaVip下首先添加的实例为master,后续添加的实例自动为backup
-
心跳检测需要在云服务器中的应用来实现,不是靠 HaVip 实现,HaVip 仅作为一个被 ARP 宣告的浮动内网 IP(体验与传统物理机保持一致)。
-
用户需要在HaVip添加实例之后部署keepalived等第三方HA服务或手动进行主备切换,来保证控制面识别出master和backup实例
-
删除HaVip之前需要解绑所有关联的实例
4、配置流程

keepalived 配置举例
以keepalived为例,配置文件为/etc/keepalived/keepalived.conf,它的关键内容如下:
-
virtual_ipaddress 为HaVip的地址
-
state 为设置的状态,通常都设置为BACKUP,这样会由vrrp选举产生MASTER
-
priority 为选主使用的优先级,若无特殊的需求,可以将所有实例的优先级设为相同的值

5、应用场景
-
负载均衡高可用:在自建负载均衡集群中,HAVIP作为虚拟IP,确保负载均衡器主备切换时服务IP稳定。
-
数据库主备集群:如MySQL主备架构,通过HAVIP实现故障切换后数据库连接IP不变。
-
关键业务服务:例如Nginx Web服务器或SAP HANA系统,保障业务连续性。
6、总结
HaVip是一种与Keepalived配合的私网IP资源,它基于VRRP实现主备选举与秒级故障切换,通过免费ARP更新网络转发表。它支持绑定EIP实现跨VPC访问,同VPC流量经网关转发。作为高可用架构的核心组件,HaVip保障负载均衡、数据库等核心业务连续性,提升云上服务可靠性。
END
360智汇云AI产品推荐:
大模型开发TLM:https://zyun.360.cn/product/tlm
AI标注平台TLP:https://zyun.360.cn/product/tlp
AI评测平台TEP:https://console.zyun.360.cn/tep
MCP市场MCPMKT:https://console.zyun.360.cn/mcpmkt
智能体对话AIMI:https://zyun.360.cn/product/aimi
智能体记忆AMS:https://console.zyun.360.cn/ams/
更多技术干货,
请关注"360智汇云开发者"👇
360智汇云是以"汇聚数据价值,助力智能未来"为目标的企业应用开放服务平台,融合360丰富的产品、技术力量,为客户提供平台服务。目前,智汇云提供数据库、中间件、存储、大数据、人工智能、计算、网络、视联物联与通信等多种产品服务以及一站式解决方案。
官网:https://zyun.360.cn(复制在浏览器中打开)
更多好用又便宜的云产品,欢迎试用体验~
如果您想使用我们的计算、网络类产品(目前官网暂时不可见),欢迎联系我们客服为您开通。
添加工作人员企业微信👇,get更快审核通道+试用包哦~

-