在很多应用场景中,需要在云平台中搭建高可用集群,就这需要用到虚拟IP地址功能。今天就来谈一谈虚拟IP地址及它的应用场景。
一、高可用集群 在谈虚拟IP地址前,我们先了解一下什么叫高可用集群。 高可用集群(High Availability Cluster),或者叫故障转移集群(Failover Cluster),它是指通过集群软件,将几台服务器组合为一个集群系统提供服务,这些服务器中同一时间内一般只有一台在提供服务(称之为主节点或者Master节点),其它服务器待命(称之为备节点或者Slave节点),当主节点出现服务器故障或者应用出现问题,集群软件自动将业务切换到备节点上,实现了故障的自动转移,使业务恢复正常,缩短了业务不可用时间。
二、高可用集群和负载均衡集群的区别 天翼云平台已经提供了弹性负载均衡服务,也可以实现业务的高用性,那为什么还要有高可用集群而不直接用负载均衡器呢? 这是由于负载均衡集群和高可用集群的使用场景有一定的差别。 负载均衡器的功能是根据配置的算法将接受到的应用请求分发到后端的真实服务器上,同时负载均衡器负责进行故障检测,如果后端真实服务器出现故障时,负载均衡器时会将出现故障的真实服务器从分发列表中剔除,应用请求不会分发到出现故障的服务器上,实现故障隔离。这种场景一般应用于后端服务器的地位是对等的场景,就像去电信营业厅办理业务,去1号还是2号柜台是没有任何区别的,都可以正常办理业务。因此负载均衡器一般用于Web服务器、应用服务器场景。
想一想,负载均衡器帮我们实现了Web服务器或应用服务器的高可用,如果负载均衡器本身出了问题怎么办呢?是不是整个业务系统就当掉了呢?虽然负载均衡也可以分级部署,一个负载均衡器把业务再次分发到后端的多个负载均衡器上,但第一级的负载均衡器还是有出现单点故障的可能。这就要用到高可用集群了。 高可用集群主要用于服务的接口只能是单一接口的场景。举个例子,一个公司里只会有一个总经理,可能会有几个副总,几个副总的分工会有所不同,但总经理永远只会有一个。如果总经理因某些原因不能继续履职,可能会从几个副总中提拔或者空降一个过来当总经理。这几个副总就好像负载均衡架构下的后端真实服务器,总经理如果不能履职了,就好像负载均衡器本身出了故障,必须要安排一个新的总经理来接任。
三、高可用集群中的虚拟IP地址 一个高可用集群需要一个统一的访问入口,这个入口就是IP地址。如果主节点当机了,备节点接管应用后同时也要把应用访问入口接管过来,否则客户端还会继续去访问已经当机的主节点。 画图举例,图中集群主节点IP地址是 192.168.1.10,备节点IP地址是 192.168.1.11,正常情况下客户端访问主节点的IP地址 192.168.1.10,如果主节点当机了,要实现故障的切换需要做两个步骤:1、在备节点上把应用启动起来 2、把备节点的IP地址修改为 192.168.1.10。就这需要人工进行干预,因为IP地址是不能随意变更的,达不到自动故障切换的目的。这种集群一般称之为冷备,备节点平时甚至可以关机,主节点出现故障后人工进行干预恢复业务。
为实现客户端访问入口IP地址的自动切换,高可用集群中引入了虚拟IP地址。虚拟IP地址又称为VIP或者浮动IP,在图中我们增加一个虚拟IP地址 192.168.1.20 把它配置在主节点上,主节点出现故障后,集群软件会自动在备节点上增加这个虚拟IP地址。这样集群中实际有三个IP地址,192.168.1.10和192.168.1.11 一般称之为私有IP地址或固定IP地址,它们是不会随着应用的主备切换变更的,而192.168.1.20这个地址就会根据情况在两个节点之间切换。 主节点正常时,虚拟IP地址在主节点上,由主节点提供服务:
主节点当机后,服务由备节点接管,虚拟IP地址自动切换到备节点上:
四、天翼云虚拟IP地址 在传统IT系统中,虚拟IP地址通过集群软件配置后就可以正常使用了。 在公有云平台上,需要在云平台申请一个虚拟IP地址,并绑定到高可用集群中的云主机,再在集群软件中配置这个虚拟IP地址就可以正常使用。 虚拟IP地址同时可以绑定到一个弹性公网IP地址,实现从公网访问高可用集群。 虚拟IP的申请方法为在天翼云控制台上,进入虚拟私有云菜单,进入需要创建虚拟IP所在的子网,点击到“虚拟IP”页面,申请一个虚拟IP地址。
虚拟IP地址申请完成后,需要将虚拟IP地址绑定到高可用集群内的云主机,并可以绑定虚拟IP地址到一个弹性公网IP地址。 绑定完成后,平台的架构如下图:
五、常用高可用集群软件及应用 目前公有云平台上最常用的高可用集群软件是开源的keepalived软件,keepalived只支持Linux操作系统,它在集群内维护一个虚拟IP地址,并可以监控应用的状态,进行虚拟IP地址的切换及应用的启停。 常见的应用场景举例: 1、keepalived + LVS/Haproxy实现高可用负载均衡集群 2、keepalived + nginx/Tomcat等中间件实现高可用应用集群 3、keepalived + MySQL实现MySQL高可用集群 4、keepalived + kubernetes 实现容器高可用集群