双系统装置:高可用保障技术
双系统装置:高可用保障技术我们称之为共享磁盘,共享磁盘存储着有变动的数据,在数据库双机的场景下尤为重要。在双机切换后,共享磁盘立刻从主机卸载,挂载到备机上,保障备机的软件运行时能够取到数据。1、数据资源的保障——磁盘阵列对于双机而言,自动切换是主要的功能,就是在检测主用服务器出现故障无法提供服务的时候,能够自动切换到备机上,并在备机对全局资源的控制。从而使得对外而言,整个系统还是可用状态。双机系统一般靠双机软件,或者说是集群控制软件实现各项功能的,但是除了软件之外,还需要硬件资源的冗余。其中我们看到最大的就是服务器的冗余,还有上层交换机、网卡资源、心跳链路的冗余。我们所说的资源,就是一切可以利用的东西,包括软件、硬件、IP等等。双机软件就是对这些资源进行控制。
高可用性这个词可以说是比较古老的词语,他用来度量一个系统的可靠性。如何保障系统的稳定运行,出现故障的时候能够恢复,现在有非常多的方案,比如双机准备、双机双活、集群负载等,双机系统是最小的集群系统。
本文介绍双机系统的架构和原理。
所谓双机系统,从狭义上讲,是指主备双机,两个设备同时只有一个在工作,它拥有全局资源的控制。下面是一张典型的双机系统架构规划:
双机典型架构(出自广东新支点官网)
对于双机而言,自动切换是主要的功能,就是在检测主用服务器出现故障无法提供服务的时候,能够自动切换到备机上,并在备机对全局资源的控制。从而使得对外而言,整个系统还是可用状态。
双机系统一般靠双机软件,或者说是集群控制软件实现各项功能的,但是除了软件之外,还需要硬件资源的冗余。其中我们看到最大的就是服务器的冗余,还有上层交换机、网卡资源、心跳链路的冗余。
双机的资源介绍我们所说的资源,就是一切可以利用的东西,包括软件、硬件、IP等等。双机软件就是对这些资源进行控制。
1、数据资源的保障——磁盘阵列
我们称之为共享磁盘,共享磁盘存储着有变动的数据,在数据库双机的场景下尤为重要。在双机切换后,共享磁盘立刻从主机卸载,挂载到备机上,保障备机的软件运行时能够取到数据。
2、对外保障——浮动IP
浮动IP保证了外部访问的时候,总是可以访问到正在运行的服务器。浮动IP一般动态配置在对外的网卡上,由双机控制。当发生双机切换时浮动IP切换到备机。
3、冗余组件——对外双网卡绑定。
上图中每台服务器上联交换机都有两个网线,对应两个网卡,网卡做链路绑定,这样做是为了避免上层交换机出故障是不受影响。网卡绑定有多种工作模式,主要分为负荷分担或主备模式。负荷分担的意思是说,两个网卡都在工作,主备模式就是同时只有一根在工作。负荷分担的方式需要操作系统支持,相对而言,这种方式能够增加带宽,但是也带来了复杂性。
4、冗余组件——心跳线
心跳是双机系统判别主备机是否正常的重要机制。根据配置比如1s,心跳线就会每秒钟相互询问对方,你正常吗?如果正常相应,则正常,维持双机的现状。但是有一天备机询问主机得不到回应,判定主机宕机了,备机就会当机立断抢占资源,把浮动IP和共享磁盘抢到手,然后启动服务!
心跳线要求至少2根以上,辅助上串口线更好。串口线能有效保障防火墙或者网络服务异常时的心跳检测。现在工程上很少使用两根独立的心跳线了,一般是一根,然后业务网卡也可以充当心跳线使用。
5、冗余组件——软件服务
对软件而言,两台服务器都应该完全一样,甚至包括操作系统的基础配置和性能优化配置都需要一样。简单来说就是上面安装的软件要完全一样,这样才能让双机软件进行管理。
双机的工作原理和切换流程
1、原理:
双机通过心跳检测的方式对所有服务和资源进行监控,也有人叫看门狗的方式,意思都一样,都是以周期性的检查来判断系统是否运行正常。对网络、磁盘的资源检查,一般是由软件独立完成的,只要告知是那块网卡、哪个IP和哪个磁盘。但是对软件的管理,需要配合双机脚本进行,双机软件会周期性调用双机脚本传入“status"的参数通过输出来判断软件的运行状况。
2、切换过程:
在双机发生故障切换或者手动切换测试时,一般顺序为:卸载主机的浮动IP、共享磁盘,停止主机软件;备机挂载浮动IP、共享磁盘、启动软件。
因为浮动IP和共享磁盘是软件运行的基础,如果软件找不到地址,那么虽然可以全网卡提供服务,但是不能判断是否能够正常对外,共享磁盘是软件运行的数据,加载不到数据,软件运行也不正常。
额外补充
1、共享磁盘不是必须的。
共享磁盘是保障软件运行的数据,在主机运行期间,产生很多数据写入共享磁盘,在备机接管服务后,能够快速恢复服务。甚至在数据库双机系统,这是必须的。但是我们也看到,目前数据和程序分离的架构越来越多了。程序可以在执行的时候访问数据节点,这样的场景下,就不需要共享磁盘
2、如何保障主备机软件一致
在软件安装过程,需要主机和备机安装和配置完全一样,这里讲的软件,是纳入双机管理的软件。有些双机软件能够定时检查软件安装是否一致,但是很多情况下还是需要通过双机脚本进行检查和软件文件同步。还有一个保障机制是安排季度或者年度的倒换演练,保证双机能够正常切换。
3、双机系统使用两个服务器,但是只有一个在服务,是不是有点浪费?
确实有点浪费,所以在互联网架构上,都对这样的架构嗤之以鼻。所以高可用技术是不断发展的,后来发展出双活双机系统、集群负载的方式。还有一些补充的方式,比如是双机系统互为备份,主备机跑不同的软件服务。这样也是节约成本的可靠方式。
【预告】
后续继续分享其他高可用技术,欢迎关注!