天翼云高可用虚拟IP(HAVIP)实践
(一) 产品概述
天翼云高可用虚拟IP(High-Availability Virtual IP Address,简称HAVIP)是一种可用独立创建和删除的私有网络IP地址资源。通过在VIP CIDR中申请一个私有网络IP地址,然后与高可用软件(如高可用软件Keepalived)配合使用,可用在VPC中搭建高可用的主备集群服务,提高VPC中服务的可用性。
限制和说明:
1. 单子网创建的HAVIP 有quota限制。
2. HAVIP后端虚拟主机需要在同子网中,支持VRRP协议,自动主备切换,支持双栈。
3. 用户创建HAVIP指定ip地址时,需要保证该ip地址可用,且在同子网内。
4. 删除HAVIP前需要解绑虚拟实例(即port)。
5. HAVIP功能只实现了基础网络底层支持HAVIP功能,用户使用时需要在HAVIP绑定的实例中结合高可用软件(如Keepalived)一起使用。
(二) 工作原理
HAVIP工作原理如下图所示:
在子网中创建HAVIP后,然后给HAVIP关联虚拟实例(实际上是关联虚拟实例的网卡,关联的网卡可为主网卡,也可为辅助网卡),此时HAVIP具备和虚拟实例私网IP地址一样的网络接入能力。然后在虚拟实例中部署高可用软件如Keepalived和应用服务,从而实现VPC中的高可用主备服务。
完成上述操作后,虚拟主机中的Keepalived通过VRRP协议来实现虚拟路由的功能。虚拟路由包含VRID和一组IP地址。在一个虚拟路由中,不管谁是master角色,对外都有相同的MAC和IP(即VIP)。当某个虚拟实例竞争为master角色,其会一直发送VRRP协议包,告诉Backup角色的节点自己还“活着”,Backup角色的节点就不会抢占master角色。此外还可以通过配置priority优先级来决定哪个节点优先被选为master角色节点。
主备节点的切换。当主备节点正常运行时,主节点会不断的发送VRRP协议报文(即心跳消息),备节点接受报文。当主节点故障时,其无法发出心跳消息,此时备节点也无法接收到主节点的心跳,当达到一定时间时,备节点会接管主节点的IP资源及服务,替代主节点对外提供服务,从而实现主备切换,实现服务的高可用。
(三) 如何在VPC中使用HAVIP搭建高可用的服务
3.1 资源创建
登录天翼云Console,进入虚拟私有云界面创建VPC, 子网,公网ip资源,然后在弹性云主机界面创建用来搭建高可用服务的虚拟实例资源。(本文档中创建两个虚拟实例VM1和VM2,创建的公网IP为EIP1)。资源创建为接下来操作的前提。
3.2 创建虚拟IP地址
进入虚拟私有云界面,选择子网,然后选择要创建虚拟IP地址的子网,在子网详情页面中创建虚拟IP地址。虚拟IP地址支持自动分配和手动指定。创建界面如下:
创建完成后,将申请的虚拟绑定3.1步骤创建的虚拟实例VM1和VM2,并将虚拟ip地址与EIP1进行绑定,以实现服务的公网访问。
3.3 虚拟实例软件配置部署
在虚拟实例VM1和VM2中分别部署高可用软件Keepalived和应用服务,修改其配置文件,启动应用服务和Keepalived。Keepalived的配置文件默认在/etc/keepalived/keepalived.conf 文件中,配置值可根据实际情况进行配置。以下配置文件为本文档进行测试时的配置:
Keepalived.conf
IP 相关配置部分在vrrp_instance V1_1中。VM1 和VM2中配置启动完高可用服务软件Keepalived和应用服务后,就可以通过HAVIP进行访问服务了。在进行测试主备切换验证时,可以通过主动down掉 主节点VM1或VM2的方式,查看HAVIP是否切换到备节点。通过HAVIP绑定的EIP1可以从公网访问HAVIP后端的服务。
(四) 参考
Keepalived配置参数说明:https://www.keepalived.org/manpage.html