侯超平,李春锃(.广西科技大学网络与现代教育技术中心; .广西陆港科技有限公司,广西 柳州 545006)
云计算的高可用性实现技术探讨
侯超平1,李春锃2
(1.广西科技大学网络与现代教育技术中心; 2.广西陆港科技有限公司,广西 柳州 545006)
摘 要:文章对云基础架构及业务应用层设计这两个层面的属性进行分析,对云计算中实现高可用的关键技术进行介绍,探讨为实现高可用性提供支撑的计算资源伸缩、业务会话处理等技术实现方式。为实现高可用的业务系统设计及云平台实施提供参考。
关键词:云计算;高可用;资源弹性伸缩
高可用性HA(High Availability)是指通过尽量缩短因日常维护操作(计划)和突发的系统崩溃(非计划)所导致的停机时间,以提高系统和应用的可用性。HA是目前企业防止核心计算机系统因故障停机的最有效手段[1]。云计算的高可用性能已成为云计算相对于传统应用服务体现的众多优势之一,所以如何实现高可用性是设计云平台时需要重点考虑的要素之一。为实现运行于云平台上业务系统的高可用特性,在构建云平台时需要从硬件、软件、策略及管理等多个方面、多维度进行分析及设计,使构建的云平台能为运行于其上的业务系统提供不间断服务保障。
典型云平台中的云基础架构通常划分为硬件层、虚拟化层、云层这三个层次。业务系统及云基础架构层次如图1所示。
(1)虚拟化层:大多数云基础架构都广泛采用虚拟化技术,包括计算虚拟化、存储虚拟化、网络虚拟化等[2]。通过虚拟化层可实现标准化、可灵活扩展和收缩、弹性的虚拟化资源池。
(2)云层:对资源池进行调配、组合,能根据业务系统的需要自动生成、扩展所需的计算资源,将更多的应用系统通过流程化、自动化部署和管理,提高系统负载能力及可靠性[2]。
(3)应用层:包括业务系统及数据库系统等,该层为用户业务请求提供服务。
根据业务系统及云基础架构层次特点,云计算中的高可用设计主要集中在云层、业务系统及应用层这两个层面。
3.1 云层
云层主要是对虚拟化层实现统一管理,在该层中高可用设计需要考虑的问题主要包括资源动态伸缩、负载均衡调度、节点迁移等因素。
3.1.1 计算资源动态伸缩
当云平台中的计算节点业务负载能力达到设定的阀值时,为保障新业务请求的响应时间及业务可用性,必须对计算资源池中的节点资源实现动态扩展。当业务系统负载减少,业务请求降低时,需要对以前扩展的资源进行收缩,以保证在有限的硬件资源的条件下,能将资源分配给其它更迫切需要计算资源的业务系统,从而保障云平台内全部业务系统的整体可用性。计算资源动态伸缩需要考虑如下问题:
(1)弹性伸缩策略。1)虚拟机系统级性能参数的弹性伸缩,包括cpu使用率、内存使用率、虚拟内存页面交换率等;2)业务级别的性能参数的弹性伸缩,包括tcp连接数、http连接数、DB连接数等;3)除了支持系统性能参数、业务性能参数弹性伸缩外,还支持监测应用是否健康来进行弹性伸缩。目前比较常用的是web类应用,通过http/https心跳消息进行检测,发送约定次数的http/https消息均无响应时,则认为是业务系统节点已经宕机,则进行相应处理。首先重启虚拟机,若重启虚拟机后,该业务系统节点还是宕机,则弹性生成一个业务节点,同时添加至虚拟负载均衡集群中,以接收新的业务服务请求。
(2)延时关机。弹性收缩虚拟机时,为减少对已经建立会话的业务影响,需要支持延时关机。负载均衡调度器收到减少集群成员时,不是马上将该成员移出集群,而是继续处理的已经存在的会话,但是此时不再处理新的会话,等待一段时间后,再执行移出集群,执行关机或销毁虚拟机。
(3)动态伸缩模式。计算资源的动态伸缩模式可主要分为资源节约优先模式及伸缩时间优先模式两种。
1)资源节约优先模式。计算资源扩展时,通过虚拟机镜像新创建虚机并加入资源池。由于需要重新创建虚机并安装部署应用,时间上不占优势。计算资源收缩时,不提供服务的虚以机都进行销毁,回收全部资源,资源可以得到最大程度的利用。
2)伸缩时间优先模式。该方式总是保存弹性伸缩组(集群)最大容量的虚拟机数量,即使该虚机没有提供服务,此时只是将该虚拟机关闭。虚拟机关闭时,存储空间不能进行回收(CPU、内存可以回收重新利用)。由于虚拟机未激活时仅时处于关闭状态,在需要新增活动虚拟机进计算资源池中时,只需要重新启动即可,所以该方式在伸缩时间效率上具有较大的优势。
3.1.2 负载均衡设计
当业务系统负载高时,为保证系统的可用性,需要由单节点扩充成多节点,以应对高并发带来的系统性能问题,并使用负载均衡机制,根据某种负载策略把业务请求分发到计算资源池中的每一节点上,让整个计算节点群来处理业务系统的用户请求。
(1)第四层及第七层服务器负载均衡。考虑到云平台上运行业务的多样性,负载均衡需要实现对第四层的TCP协议、UDP协议,第七层的HTTP协议、HTTP Proxy、Header URL和URL 哈希转换、URL和域操作的支持。对第四层及第七层协议负载均衡功能通常使用深层包检查与流量操作技术实现。
(2)负载均衡算法。由于业务系统的多样性,为了最大程度地支持各类具有不同负载特点的业务系统,负载均衡一般采用轮询调度、最小连接调度、加权轮询调度、加权最小连接调度、最快回应分配等方法实现。
(3)设计健康检查机制确保服务器与应用系统及时响应,并清除无负载均衡响应的节点应用系统,避免用户请求被调度至无效的资源节点中,以保证业务系统的高可用性。
3.1.3 虚拟机节点迁移
虚拟机节点迁移时,通过心跳机制,定时监测计算资源池集群内主机的CPU、内存利用率等指标,并根据预定的规则来判断是否需要为该主机在集群内寻找有更多可用资源的主机,以将该主机上的虚拟机迁移到另外一台具有更多合适资源的服务器上,通过动态资源调整来保障系统的响应时间,实现业务系统的高可用。虚拟节点迁移过程见图2。
3.2 业务系统及应用层
除云基础架构层面需要考虑高可用特性实现外,为了使运行于具有资源自动伸缩特性的云平台上业务系统能更好地实现高可用,业务系统及架构也有必要针对云平台的特点进行相应的设计。
3.2.1 资源自动伸缩类型特点
当业务系统的资源利用率达到预定的阀值或无法及时响应业务请求时,云平台的计算节点将自动扩展。根据云平台的计算节点不同扩展方式,一般可分为活动节点复制扩展及模板生成扩展两类。
(1)活动节点复制扩展。即节点扩展生成新计算节点时,以当前运行的活动节点(母节点)作为克隆对象,将虚拟机连同虚拟机运行内容一起复制,生成新计算节点(子节点)。初始时,子节点具有与母节点相同的内存内容,即业务系统运行时所存放于内存的会话、缓存等信息一起被复制到新生成的计算节点中。
(2)模板生成扩展。即生成新计算节点时以虚拟机镜像或快照等作为模板,生成新计算节点并加入到业务计算节点集群中。初始时,新创建的计算节点尚未存有业务运行信息,为使调度至该节点的业务请求能继续处理此前已在业务系统中活跃的业务会话,应用层的业务系统架构需要考虑业务会话共享的问题。
3.2.2 业务系统适配资源自动伸缩类型
(1)适配活动节点复制扩展类型。活动节点中运行的业务系统根据系统特点可为两类,需要对分类进行不同处理。
1)活动节点中的服务会话及缓存均适用于任何用户请求,如DNS服务系统。由活动节点复制出的新节点加入资源池后即可为所有业务请求提供服务,该类型的业务系统无须进行特别处理,与传统的单机系统一致。
2)节点中的业务系统会话及缓存无法适用所有节点,如一般的web应用中,仅全局性的对象值适用于所有节点,用户会话信息通常会保存于不同的业务处理节点中。由于适配活动节点复制扩展时会将母节点包括会话和缓存在内的所有内存信息克隆至新节点中,为了使新节点有足够的内存资源去接受新的业务请求,必须将内存中与新业务请求无关的会话及缓存进行清除。
所以业务系统在设计时需要考虑监视其运行的节点IP等信息,业务系统可通过IP等信息产生变化,能感知其位于新创建的节点上,并自动清除无用的会话及缓存,以释放内存去接受新的业务请求。例如asp.net程序实现的业务系统中,程序需要设计成能在新节点创建完成时,在新节点保留Application对象集中的值,清空Session对象集的对象以释放计算节点内存,使得节点中内存能够保存新用户请求产生的新Session对象。
(2)适配模板生成扩展类型。云平台使用虚拟机镜像、快照等模板创建新计算节点并加入资源池向外提供服务,新的计算节点在创建时并没有任何的业务会话信息。若负均衡调度器将业务请求转发至该节点,且该业务请求需要使用此前业务系统中的一些会话信息,由于新节点上尚无会话信息,则新生成的计算节点无法进行业务处理。对运行于适配模板生成扩展类型云平台上的业务系统,在业务系统设计时需要把会话从各计算节点的业务系统中剥离出来,并将会话共享,使用户请求业务可在不同节点间透明迁移,当某个计算节点宕机时也不影响业务的持续运行,使系统达到高可用。不同节点间的会话共享一般通过两种方式实现。
1)将业务Session信息保存到所有计算节点均可访问的数据库中,当新节点创建完成后,运行于其上的业务系统获取保存于数据库中的会话信息,持续提供应用服务。该方式优点是可靠性较高,缺点是会话恢复时间相对较长。
2)业务系统设计时考虑配置专门的Session服务器,各个计算节点上运行的业务系统将Session信息存于Session服务器中,当新节点创建完成后,运行其上的业务系统通过Session服务器中Session信息运行应用服务。该方式优点是新节点会话恢复时间极快,缺点是Session服务器发生故障时,业务系统将无法持续运行。所以一般也会采用配置Session服务器集群的方式来避免单点故障造成业务系统崩溃的问题发生。
综述,在云计算环境中,为了让业务系统获得高可用的特性,在实施时需要在云基础构架、应用层及业务系统这两大方面进行考虑。特别是业务系统需要根据云平台中计算资源伸缩的不同方式,设计时采用不同的系统构架并进行相应的处理,最终实现云平台业务系统整体达到高可用的目标。
参考文献:
[1]张国平.IPTV业务差异化保障系统的应用研究[D].南昌:南昌大学,2010:15.
[2]王理,姜新超.云计算环境下的基础架构融合[J].信息系统工程,2013(11):32-35.
[3]王理,姜新超.云计算环境下的基础架构融合[J].信息系统工程,2013(11):32-35.
广西柳州市科技型中小企业技术创新资金计划项目合同 项目名称:现代物流信息安全与云计算解决方案 研究及应用开发,合同编号:2013F030303 计划类别:中小企业技术创新资金
作者简介:侯超平(1981-),男,工程师,研究方向:云计算、虚拟化、高可用。
DOI:10.16640/j.cnki.37-1222/t.2016.02.231