天翼云虚拟 IP 地址及其在高可用集群中的应用
在很多应用场景中,需要在云平台中搭建高可用集群,就这需要用到虚拟 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 实现容器高可用集群
版权声明: 本文为 InfoQ 作者【天翼云开发者社区】的原创文章。
原文链接:【http://xie.infoq.cn/article/90cbe0ef93618766e4aa6fe08】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论