时间:2024-05-04
李聪颖 王瑞刚 于金良
摘 要:高可用性集群是以减少服务间断时间为目的的一组服务节点,该系统能够最大限度地向用户提供不间断的网络服务,使集群的整体服务最大可用。文中采用Pacemaker对Apache提供集群资源管理,并用Corosync实现通信和关系管理,当集群中的某一个节点发生故障时,其他节点将在几秒钟甚至更短时间内自动接管集群资源和服务,从而不间断的向用户提供服务,最大限度地减少服务中断的时间。本系统添加了一个VIP资源,利用VIP测试Apache的高可用性。测试结果表明,该集群系统可以有效增强Apache集群服务的可用性,具有高性价比、高可靠性、高扩展性等特点。
关键词:Apache;Pacemaker;Linux;高可用;资源配置
中图分类号:TP302.1 文献标识码:A 文章编号:2095-1302(2016)08-00-03
0 引 言
随着计算机网络的广泛应用,确保向用户提供连续不间断的网络服务变得日趋重要。在金融、电信以及政府等领域,服务器设备担负着存储、处理和传递大量重要信息等任务,一旦服务器出现故障,可能会给用户造成非常严重的损失。因此,要保证网络服务的连续性,使用高可用集群技术是最佳选择。
高可用集群作为一个整体向用户提供一组服务不间断的网络资源,为了确保集群对外连续不断地提供可用的服务,实现故障检测和业务切换的自动化,从而尽可能的降低因软、硬件故障或人为操作失误带来的损失。本文介绍了现有高可用性集群系统的实现技术,提出了一种利用Pacemaker管理Apache高可用集群资源的系统方案,并设计实现了基于Apache的高可用性集群管理系统。在集群中,Corosync检测主节点和备份节点的状态,判断当前节点是否处于活跃状态。如果主节点发生故障,备份节点将自动接管资源和服务,确保集群对外提供连续的网络服务。本集群管理系统可用性高、管理简便且易实现。经多次实验反复测试,本系统能够检测故障并高效的实现主备节点资源切换,快速接管服务,从而实现Apache集群的高可用性。
1 Pacemaker简介
Heartbeat和Corosync都是高可用集群中的集群信息层(Cluster Messaging Layer),主要传递集群信息与心跳信息,并没有资源管理功能,资源管理依旧依赖于上层的集群资源管理器,本文采用的便是 Pacemaker集群资源管理器。Pacemaker是Heartbeat到V3版本后拆分出来的资源管理器,现在Corosync合成了高可用集群中的最佳组合。Pacemaker能够监测和恢复资源以确保集群服务的最大可用性,它可以做任意规模的集群,配备强大的依赖模型使管理员能够准确理解集群资源之间的关系,编写各种脚本对集群资源进行管理。
Pacemaker的关键特性是能够监测故障并恢复节点服务,不需要共享存储,可以管理任何能用脚本控制的资源服务,使用STONITH保证数据的一致性,支持任意类型的集群,包括主/主, 主/备, N+1, N+M, N-to-1和 N-to-N各种类型。能够自动同步集群中各节点的配置文件,设定集群范围内的多种资源约束,支持更多高级服务类型及需要多种模式的服务,也支持统一的脚本化集群shell。
2 技术架构
Pacemaker堆栈结构如图1所示,图中,当Pacemaker与Corosync集成时,可以支持常见的多种开源集群文件系统,并用一个通用的分布式锁控制器协调同步资源,Corosync负责通信,Pacemaker管理成员关系和隔离服务。Pacemaker的内部组件如图2所示。
Pacemaker由以下几 个关键组件组成:
PE 或者策略引擎 (PE or Policy Engine, PEngine):主要负责将CRM传递过来的信息按照配置文件中的设置计算出下一个集群状态。
Stonithd(Shoot-The-Other-Node-In-The-Head ):通常用远程电源开关来充当。在 Pacemaker 中,STONITH设备被当成资源监控,然而Stonithd会根据STONITH的拓扑结构实施管理,例如它的客户端请求隔离一个节点,则它就会重启那个节点。
集群资源管理守护进程 (Cluster Resource Management Daemon, CRMD):主要作为PEngine和lrm的消息代理,需要同时选举一个leader去协调管理集群的活动,包括集群资源的启动和停止。
集群信息基础 (Cluster Information Base, CIB):CIB在系统中充当的是当前集群中各资源原始配置以及之后动态变化了的状态,是一个不断更新的信息库。当CIB收集到资源以及节点统计信息的变化后,都会整合到一起成为当前集群最新的信息,并分发给集群各个节点。
3 Pacemaker功能概述
CIB包含集群中所有资源的配置信息和当前状态,CIB的内容会被自动同步在整个集群中。PEngine计算集群的理想状态并生成指令列表,然后输送到DC(指定协调员),把所有节点选举的DC节点作为主决策节点,如果主决策节点宕机,会迅速选举建立一个新的主决策节点。DC将PEngine生成的理想策略指令列表传递给集群中其他节点上的LRMD,或者用CRMD通过集群消息传递基础结构。当集群中有节点发生故障,Pengine会重新计算理想策略。如果出现特殊情况,需要关闭节点以保护共享数据或完整的资源回收,Pacemaker则应用Stonithd设备,STONITH应用远程电源开关将节点“爆头”。Pacemaker把STONITH设备配置为资源保存在CIB中,使它可以更方便地监测节点宕机。
4 系统的实现与测试
4.1 系统环境部署
集群架构如图3所示,本系统采用ACTIVE/PASSIVE集群架构模式,设置两个节点node1和node2,操作系统为Ubuntu14.04,分别在两个节点上安装Apache,Corosync,Pacemaker,并添加一个虚拟IP资源,通过VIP访问两个节点上的Apache服务并测试集群的高可用性。
4.2 系统资源配置
4.2.1 创建一个VIP地址资源
增加虚拟IP命令:
primitive vip ocf:heartbeat: IPaddr params ip=10.10.10.81 nic=eth0 cidr_netmask=24
检查配置是否正确命令:verify,如果没有报错,则配置正确。然后用commit命令提交,把信息写入cib.xml的配置文件中。
查看添加的资源,成功添加VIP资源如图5所示。有一个VIP资源运行在node1上。
4.2.2 设置资源黏性
当一个节点出现故障时,资源在节点上来回流动会造成某段时间内无法正常访问,因此在资源因为节点故障转移到其它节点后,即便原来的节点恢复正常也禁止资源再次流转回来,此举可通过定义资源的黏性(stickiness)来实现。
资源黏性是指资源更倾向于运行在哪个节点。本系统将node1资源粘性值设置为100,在没有故障的情况下资源就会在node1上。当node1出现故障时,资源才会跳转到node2上。rsc_defaults resource-stickiness=100
4.3 系统测试
停止node1节点服务,查看集群状态。从图6可以看出,node1离线。VIP资源在node2上运行。测试成功。
4.4 浏览器测试
为了区分两个节点,在Apache的index.html中分别添加Welcome to node1!Welcome to node2!,访问Apache的页面时就会出现不同的内容。
因为配置了VIP资源,所以用VIP10.10.10.81访问时,也能够出现Apache的页面。如图8 所示,用VIP访问Apache时,可以从浏览器页面看到服务运行在node1上。
5 结 语
本文介绍了Pacemaker的特性,并使用Pacemaker进行资源管理以及Corosync实现通信,搭建一个Apache高可用集群系统。利用集群配置的VIP资源进行测试,当node1节点服务停止或者出现故障时,资源可以自动快速跳转到node2节点上。当恢复node1节点的服务时,资源还会停留在node2上,这样可防止资源来回流动,保持系统的稳定性和高可靠性。测试结果表明,本系统管理方便、可用性高,能够高效的切换资源,提供不间断的服务,实现集群的高可用性,从而将因软、硬件故障和人为错误带来的损失降到最低,在多个领域都可以得到广泛应用。
参考文献
[1] OpenStack.OpenStack High Availability Guide[EB /OL].http://docs.openstack.org/high-availability-guide/content /index.html.(2013-12-05)[2013-12-05]
[2] OpenStack.OpenStack Installation Guide for Ubuntu12.04[EB /OL]. http://docs. openstack.org/.(2012-12-26)[2013-08-10].
[3] High-availabilityCluster[EB/OL].http://en.wikipedia.org/wiki/High-availability_cluster
[4] Linux HA[EB/OL]. http://www.linux-ha.org
[5] Pacemaker[EB/OL]. http://clusterlabs.org/
[6]宋现锋.基于Linux 的高可用性集群管理系统的设计与实现[D].西安:西安电子科技大学,2012.
[7]崔小燕. Linux集群系统分析[J].西安邮电学院学报,2006,11(5):103-106.
[8]归达伟.计算机集群技术[J].西安邮电学院学报,2004(4):98-100.
[9]谢晓燕,张静雯. 一种基于Linux集群技术的负载均衡方法[J].西安邮电大学学报,2014,19(3):64-68.
[10]訾海燕,朱国晖.一种基于服务质量的资源分配算法[J]. 西安邮电大学学报,2013,18(5):117-120.
我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!