借助VPC提供的高可用虚拟IP HaVip(High-Availability Virtual IP Address)功能,您可在云上基于ARP协议,通过Keepalived或Heartbeat软件来搭建服务高可用架构,以确保主备切换过程中服务IP不变(即IP漂移)。
什么是高可用虚拟IP(HaVip)
定义
HaVip是一种可以独立创建和释放的私网IP资源,具备与ECS实例主私网IP地址一样的网络接入能力,可以与高可用软件,例如Keepalived配合使用,搭建高可用主备服务,提高业务的可用性。
HaVip支持绑定多个ECS实例或多个ECS实例的主网卡或辅助网卡,以实现同可用区、多服务器高可用架构下的IP漂移,确保对外提供服务的私网IP始终不变。您可以将HaVip与EIP绑定,绑定后HaVip可以通过弹性公网IP(EIP)提供公网服务。此外,该架构下的多个ECS实例还可以利用部署集能力进一步提升业务的可靠性,更多信息,请参见部署集。
Keepalived就可以支持实现虚拟IP高可用,为什么要配合HaVip来实现呢?
在传统数据中心里,服务器可以通过地址解析协议ARP(Address Resolution Protocol)声明自己的IP地址并对外提供服务,很多应用场景或常用软件需要主机具备此能力。例如,使用Keepalived、Heartbeat等软件实现容灾恢复过程中服务IP不变的高可用方案。
然而,大部分云厂商采用SDN架构后,在VPC环境下不支持免费ARP广播功能。因为云上网络环境需使用虚拟化技术构建,虚拟服务器IP地址由云平台底层的虚拟化平台分配和管理。您的应用无法像传统方式一样修改主机IP地址,且整个虚拟网络是基于3层的隧道技术,ARP被终结在发送端,主机无法声明IP地址。为此,阿里云推出HaVip功能,解决此问题。
使用场景
如下图所示,ECS1和ECS2实例基于HaVip,使用Keepalived组合成一个高可用的私网服务。VPC内的其他实例ECS3可以通过私网访问该服务,服务地址为HaVip的地址。当ECS1发生故障时,ECS2会自动调用自身的接管程序,接管ECS1的服务,实现业务高可用。
说明
如果您有公网访问需求,您可为高可用虚拟IP绑定EIP,绑定后该高可用虚拟IP可以通过EIP面向公网提供高可用服务。
配额和费用
HaVip功能正在公测,您可以登录阿里云配额中心控制台进行自助申请。
重要
公测期间,HaVip免费使用,且不承诺任何服务等级协议(SLA)相关的保障条款。
支持的地域
公有云支持的地域
区域 | 支持高可用虚拟IP的地域 |
亚太 | 华东1(杭州)、华东2(上海)、华东5 (南京-本地地域)、华北1(青岛)、华北2(北京)、华北3(张家口)、华北5(呼和浩特)、华北6(乌兰察布)、华南1(深圳)、华南2(河源)、华南3(广州)、西南1(成都)、中国香港、华中1(武汉-本地地域)、华东6(福州-本地地域)、日本(东京)、韩国(首尔)、新加坡、澳大利亚(悉尼)(关停中)、马来西亚(吉隆坡)、印度尼西亚(雅加达)、菲律宾(马尼拉)、泰国(曼谷) |
欧洲与美洲 | 德国(法兰克福)、英国(伦敦)、美国(硅谷)、美国(弗吉尼亚) |
中东 | 阿联酋(迪拜)、沙特(利雅得) 重要 沙特(利雅得)地域由合作伙伴运营。 |
金融云支持的地域
区域 | 支持高可用虚拟IP的地域 |
亚太 | 华南1 金融云、华东2 金融云、华北2 金融云(邀测) |
政务云支持的地域
区域 | 支持高可用虚拟IP的地域 |
亚太 | 华北2 阿里政务云1 |
使用限制与配额
配额名称 | 描述 | 默认限制 | 提升配额 |
无 | 支持创建高可用虚拟IP(HaVip)的网络类型 | VPC类型 | 无法提升 |
单个ECS实例支持同时绑定的HaVip数量 | 5个 | ||
单个HaVip支持同时绑定的EIP数量 | 1个 | ||
单个HaVip支持同时绑定的ECS实例或弹性网卡的数量 | 10个 说明
| ||
HaVip是否支持广播和组播通信 | 不支持 说明 HaVip只支持单播,如果您使用Keepalived等第三方软件实现高可用,需要修改配置文件中的通信方式为单播通信。 | ||
单个账号支持创建的HaVip的数量 | 50个 | ||
单个VPC支持创建的HaVip的数量 | 50个 | ||
vpc_quota_havip_custom_route_entry | 单个VPC内,目的地址指向HaVip的路由条目的数量 | 5条 | 您可以通过以下任意方式自助提升配额: |
HaVip的使用示例
您可使用Terraform自动化脚本体验快速部署,也可以通过控制台操作手动部署ECS实例,来搭配HaVip和Keepalived实现同可用区双机高可用,架构图可参见本文使用场景。
配置流程
前提条件
-
配额:已通过阿里云配额中心控制台自助申请高可用虚拟IP。
-
权限:如果您使用的是RAM用户,请确保该账号已被阿里云账号授予以下VPC和ECS的最小权限。
权限策略Action列表
更多信息,请参见RAM鉴权和授权RAM用户使用ECS资源。
-
针对通过控制台手动部署的操作,还需准备以下资源:
费用
-
快速部署:执行Terraform脚本后,会为您创建3个ECS 1 vCPU 2 GiB的抢占式实例、1个VPC、1个vSwitch、1个HaVip。具体费用取决于您创建的ECS实例留存时间,建议您及时清除资源,防止继续计费。
-
手动部署:具体费用取决于您创建的ECS资源规格。
说明
如果您有公网访问需求,为高可用虚拟IP绑定了EIP后,您需要为绑定的EIP支付费用。更多计费信息,请参见EIP计费概述。
配置步骤
快速部署(Terraform)
手动部署(控制台)
-
下载项目文件iac-example-havip.zip。
-
登录阿里云Cloud Shell,上传下载的文件至Cloud Shell。
-
依次执行以下命令,解压压缩包,进入工程根目录,初始化脚本并创建资源。
unzip iac-example-havip.zip cd iac-example-havip terraform init terraform apply -auto-approve
返回结果:
-
结果验证。
-
登录ECS3实例。执行
curl ha_vip_private_ip
命令,即可查看到ECS1(主)实例返回的信息。 -
在Cloud Shell中执行以下命令停止ECS1实例。
aliyun ecs StopInstance --InstanceId <$instance_id_ecs1> --ForceStop false --StoppedMode KeepCharging --DryRun false
-
登录ECS3实例。再次执行
curl ha_vip_private_ip
命令,即可查看到返回的信息是ECS2。
此时,由于ECS1宕机,ECS2作为备机将自动接管ECS1实例的服务,以保证对外提供服务的IP不变,实现IP漂移。
-
-
执行以下命令,清除资源,防止继续计费。
terraform destroy -auto-approve
管理HaVip
通过控制台管理HaVip
操作入口
- 登录专有网络管理控制台。
-
在左侧导航栏,单击高可用虚拟IP。
-
在顶部菜单栏处,选择高可用虚拟IP的地域。
根据您具体的需求,继续执行以下操作。
创建高可用虚拟IP
-
在高可用虚拟IP页面,单击创建高可用虚拟IP。
-
在创建高可用虚拟IP对话框,根据以下信息配置高可用虚拟IP,然后单击确定。
-
资源组:为HaVip选择所属的资源组。
-
标签键:为HaVip输入新标签键或选择已有标签键。最多支持128个字符,不能以
aliyun
或acs:
开头,不能包含http://
和https://
。一次最多绑定20个标签键。 -
标签值:为HaVip输入新标签值或选择已有标签值。最多支持128个字符,不能以
aliyun
或acs:
开头,不能包含http://
和https://
。一次最多绑定20个标签值。 -
地域:显示要创建HaVip的地域。
-
专有网络:选择HaVip所属的专有网络。
-
交换机:选择HaVip所属的交换机。
-
交换机网段:显示交换机的网段。
-
是否自动分配私网IP地址:选择是否自动分配私网IP地址。
-
是:由系统在所选交换机的网段中分配一个未被占用的私网IP地址。
-
否:手动输入一个私网IP地址,该IP地址必须为所选交换机的网段中未被占用的私网IP地址。
-
-
说明
如果您无需再使用HaVip资源,您可以在高可用虚拟IP页面,找到目标高可用虚拟IP,然后在操作列单击删除。请确保需删除的高可用虚拟IP未绑定ECS实例、弹性网卡或EIP,如已绑定,请先解绑。
绑定和解绑ECS实例或弹性网卡
-
在高可用虚拟IP页面,找到目标高可用虚拟IP实例,单击高可用虚拟IP的ID。
-
在绑定资源区域ECS实例处,单击立即绑定。
-
在弹出的对话框,根据以下信息选择要绑定的ECS实例或弹性网卡,然后单击确定。
配置
说明
绑定类型
选择要绑定高可用虚拟IP的资源类型,支持选择以下两种资源类型:
-
ECS实例
-
弹性网卡
绑定资源
选择要绑定高可用虚拟IP的ECS实例或弹性网卡。
要绑定高可用虚拟IP的ECS实例或弹性网卡必须满足以下条件:
-
ECS实例的网络类型为专有网络类型。
-
ECS实例或弹性网卡所属的交换机与高可用虚拟IP所属的交换机相同。
-
如需解绑ECS实例或弹性网卡,在绑定资源区域,在已绑定ECS实例处找到目标ECS实例或弹性网卡,单击解除关联。
说明
-
高可用虚拟IP在一个时刻只可绑定同一类型资源,如需绑定其他类型资源,请先解绑已经绑定的资源。
-
如果删除已绑定高可用虚拟IP的ECS实例,系统会自动解除高可用虚拟IP和该ECS实例的绑定关系。
-
如果从ECS实例上解绑已绑定高可用虚拟IP的辅助弹性网卡,不会影响高可用虚拟IP和该辅助弹性网卡的绑定关系。
-
如果删除已绑定高可用虚拟IP的辅助弹性网卡,系统会自动解除高可用虚拟IP和该辅助弹性网卡的绑定关系。
绑定和解绑EIP
您可以将EIP绑定至高可用虚拟IP上,绑定后该高可用虚拟IP可以通过EIP提供公网服务。绑定EIP前,您需要申请EIP。需要绑定的EIP必须满足以下条件:
-
EIP的地域必须和高可用虚拟IP的地域相同。
-
EIP实例的状态必须处于可用状态。
-
在高可用虚拟IP页面,找到目标高可用虚拟IP实例,然后在操作列单击绑定EIP。
-
在绑定弹性公网IP对话框,选择需要绑定的EIP,然后单击确定。