基于OpenStack的健康服务弹性计算平台的设计与实现

2018-11-26 09:33张华李劲
电脑知识与技术 2018年23期
关键词:计算资源弹性服务器

张华 李劲

摘要:随着信息技术的高速发展及公众服务系统的逐渐普及,传统计算资源利用率低下。该文以Openstack云平台为基础,设计并实现了一个具有弹性伸缩、负载均衡的弹性计算平台。

关键词:云计算;Openstack云平台;弹性伸缩;负载均衡

中图分类号:TP315 文献标识码:A 文章编号:1009-3044(2018)23-0126-03

Abstract: With the rapid development of information technology and the gradual popularization of public service systems, the utilization rate of traditional computing resources is low. Based on the Openstack cloud platform, this paper designs and implements an elastic computing platform with elastic scaling and load balancing.

Key words: cloud computing; Openstack Platform; elastic scaling;load balancing

1 背景

隨着信息技术的高速发展,各行各业都提供了大量面向公众的Web系统,居民健康服务系统作为健康业公共服务系统,旨在为居民提供健康档案查询、信息发布、专家远程诊断等服务,除了每年体检期间出现访问高峰,大多数时间都趋于平缓,传统的数据中心只能依据最大流量进行配置,因而实际中它的平均利用率只有15-20%[1]。云计算的本质特征是按需提供计算服务,而不是预先分配好资源,它的计算能力可以根据需求进行动态伸缩[2]。

该文基于著名开源云计算平台OpenStack设计了一套具有弹性伸缩、负载均衡能力的弹性计算平台,将居民健康服务系统以虚拟机镜像方式置于其中,当访问量大时,云平台自动扩展虚拟机数量,并利用负载均衡引导流量,平均分配到各个虚拟机,缓解访问压力;当访问量少时,平台自动缩减虚拟机,减少计算资源,达到节能目的。

2 弹性计算平台关键技术

2.1 OpenStack

OpenStack是一个开源项目同时也是一个社区,提供开源代码,可部署建立公有云、私有云和混合云[3]。它提供共享虚拟资源的主要用途是来构建和管理云环境服务,其中三个最为核心和成熟的云计算服务分别为计算、网络、存储服务,它们构成一个虚拟化管理平台。整个OpenStack环境架构可多主机节点组成,其中控制节点负责对其他节点的调度管理,包括虚拟主机的创建、租户的网络分配等,计算节点主要负责管理和调度虚拟主机运行,网络节点管理分配公有网络与私有网络之间的数据交换。

2.2弹性伸缩

弹性伸缩可分为横向伸缩和纵向伸缩。弹性伸缩一般具有以下特点:程序自动化、配置计划性、系统容错性、资源高效率,根据现有业务需求的变化动态配置资源,实现高度的弹性和伸缩性,用户不需要参与特定的操作过程,只关注结果。云计算的弹性伸缩本质上是共享经济,是计算资源的共享。由于行业业务的影响,当企业业务的高峰期需要大量的计算能力和带宽需求时,就需要更多的物理主机服务器参与系统的负载工作,但业务高峰期之后,造成大量的主机资源不能够有效的利用。弹性伸缩的出现就是来解决这类问题,它的宗旨是按需分配,资源自动回收[4]。

2.3 负载均衡

随着互联网的快速发展,软件系统的并发访问量成倍增加,通常会导致系统响应缓慢甚至崩溃,为了解决这类问题,衍生出了负载均衡技术。负载均衡是指采用一定的负载共享技术,通过特定的请求分发算法,将外部访问服务器的网络请求流量均匀转发到均衡池中的服务器上,从而解决大量高并发访问问题,实现服务器高性能的横向扩展服务[5]。从具体实现来看,负载均衡服务的底层原理是通过配置服务器集群的虚拟化访问地址,将属于同一个集群中的服务器主机资源虚拟化成高伸缩、高可用和高稳定的系统程序服务均衡池,当负载均衡器接收到客户网络请求时,以应用程序指定的某种负载均衡分发算法转发到云服务器池中。

3 弹性计算平台需求分析

以OpenStack云环境为基础设施服务,在控制节点和计算节点上设计部署弹性计算、负载均衡模块。

弹性伸缩模块应具备以下几个功能:

1)对服务对象云主机进行CPU、内存等性能指标的实时监控。

2)当服务对象云主机所在的计算资源负荷过大时,能够自动添加装有服务对象系统的虚拟机镜像主机。

3)当服务对象所在的计算资源负荷过小时,能够自动回收虚拟云主机,节约计算资源。

4)增加或移除的虚机云主机要自动关联到负载均衡池,并能协调工作。

负载均衡模块应具备以下几个功能:

1)高可用性:将服务时间减少到最小甚至不中断的服务。

2)可扩展性:随着访问的增加,系统具有良好的可伸缩性。

3)实时监控负载均衡池中的后端云主机,当检测到某个云主机不可用时,移除流量分发队列,相反的,检测到某个云主机可用时自动加入到流量分发队列。

4)根据不同负载均衡的算法,可实现平均的将网络流量分发到多个后端健康服务云主机;从某一个特定IP发来的网络请求,总是转发到特定的后端健康服务云主机;将收到的网络请求,转发给当前负载池集群中连接数最少的健康服务云主机。

4 系统设计

基于以上需求,弹性伸缩、负载均衡两部分设计如下。

4.1 弹性伸缩

该次所设计的弹性伸缩子模块系统利用Openstack组件完成,分层模型如下图1所示,整个模块系统分为三个层次:Ceilometer监控层、Heat决策层和Nova执行层。

1)监控层通过Ceilometer Collector负责完成对云计算平台中的虚拟机的CPU、内存、硬盘等指标进行监控,监控模块负责维护一组监控列表,对于列表中的监控主机,监控模块按照一定的心跳周期获取最新的监控值。监控模块采用C/S结构,客户端负责收集其所在主机的性能数据,服务端负责将客户端报告的数据进行统一处理,如数据的可视化、持久化等。

2)决策层通过Heat引擎模板完成增删虚拟机的决策,是整个负载均衡的调度负责人。主要涉及三方面工作:一是根据监控指标如CPU、内存等判断是否触发告警行为;二是根据行为提供增加还是删除的具体决策;三是提供虚拟机的资源配置,如镜像、IP分配等创建虚拟机必需的配置信息。

3)执行层通过各组件API接口负责完成具体的增删虚拟机工作。通过告警行为调用各组件REST API,根据决策层提供的虚拟机配置信息如镜像、IP分配等信息进行虚拟机的实际创建或根据参数定位到虚拟机进行回收工作。

4.2 负载均衡

负载均衡模块同样基于Openstack Neutron LBaaS服务中各组件完成,体系结构设计如图2所示,包含四个部分:VIP、Pool、Member、Health Monitor。

1)VIP:它是负载均衡外部服务的地址。VIP有自己的IP地址,通常可以通过公共网络访问。在Neutron中,VIP对应于两层虚拟设备的brint上的一个端口。当在负载平衡池中至少有一个成员时,VIP才是有意义的,因为至少有一个实际的OpenStack实例正在处理网络请求。VIP负责将网络流量分配给各会员。在Neutron LBaaS中,支持以下三种网络流量的分发算法:

① Round robin轮询:将访问的网络应用流量平均的分发到后端服务器上。

② Source IP: 从同一个特定IP发来的网络请求,则转发到特定的云主机后端来处理。

③ Least connections:将客户端访问的网络请求流量,转发给当前负载均衡池中连接数最少的后端云主机。如果当前的负载均衡池中所有的member云主机后端的连接数一样,则遵循Round robin分发算法。

考虑到要对集群中的健康服务系统的资源求平均值,所以最终采用的分发算法是Round robin轮询,以增加集群的平衡负载率和健康服务系统的稳定性。

2)Pool:它是LBaaS V1的root 资源,所有其他资源都是基于Pool池创建的,默认情况下,Neutron LBaaS由HAProxy作为驱动程序实现。一般情况下一个负载均衡池对应一个单独的HAProxy进程和一个单独的名称空间。目前,一个Pool池只能有一个VIP,但在LBaaS V2中,可以允许一个池对应多个VIP。

3)Member:对应的是在Pool池中处理网络请求的OpenStack实虚拟主机,在本系统中则对应着每个健康服务系统云主机。在OpenStack Neutron中,member是一个逻辑关系,表示实例与Pool池之间的对应关系。也可以理解为,一个OpenStack实虚拟主机可以对应不同的池,在Neutron的LBaaS中创建多个member虚拟主机,创建member虚拟主机时所选择的实例必须与Pool池在同一个子网中,否则将不起作用。

4)Health Monitor:是Pool池的健康监控中心,只有在关联pool池时才有意义,它用于监视Pool池中member后端主机的状态并以轮询的方式查询每个member后端主机,如果member后端主机未作出响应,它将更新member后端主机的状态,使其变成INACTIVE,这样就不会在VIP分发网络请求中被考虑进来。如果member后端主机恢复响应,Health monitor会将更新member后端主机的状态至ACTIVE,此时的后端云主机就会重新出现在分发列表中。Health monitor在Neutron的负载均衡中不是必需的,但如果没有Health monitor健康监控中心,负载均衡池就会一直认为所有的member云主机后端都是ACTIVE状态,从而导致有异常的云主机后端也会出现在负载均衡列表中,而此时的异常云主机实例是不能进行网络负载工作的,会造成系统的负载均衡响应异常,影响系统的稳定性和高效率性能,因此,为了满足稳定性,需要将Health Monitor作为负载均衡模块。

5 弹性计算平台测试

对弹性伸缩集群中的健康服务系统云主机进行压力测试,如图3所示,当CPU使用率平均值超过65%时,会增加一台健康服务系统云主机到集群中;相反的,当CPU使用率低于20%时,会从集群中移除一台健康服务系统云主机。

类似对系统进行负载均衡测试,如图4所示,在控制节点中分别两次使用SSH访问负载均衡池的公网浮动IP,此时的用户访问的网络流量是以轮询的方式分发到两个健康服务系统中,其中,第一次访问的是IP地址为10.0.1.153的健康服务系统服务器,第二次访问的是IP地址为10.0.1.125的健康服务系统服务器。

6 结束语

该文首先阐述了居民健康服务弹性计算平台的三大关键技术,接着根据业务需求给出了弹性伸缩、负载均衡模块的设计,最后完成了两个模块的测试。该平台上线后运转效果良好,节约了计算资源。

参考文献:

[1] 梁宇, 杨海波, 李鸿彬. 基于OpenStack资源监控系统[J]. 计算机系统应用, 2014, 23(4): 44-47, 16.

[2] 李小宁, 李磊, 金连文, 等. 基于OpenStack构建私有云计算平台[J]. 电信科学, 2012, 28(9): 1-8.

[3] 李知杰, 赵健飞. OpenStack開源云计算平台[J]. 软件导刊, 2012, 11(12): 10-12.

[4] DeviD S, Thilagavathy K, Vaghula Krishnan S, et al. Integrating OTP Authentication Service in OpenStack[J]. Advanced Materials Research, 2014, 3269(984).

[5] Solano Antonio, Dormido Raquel, Duro Natividad, et al. A Self-Provisioning Mechanism in OpenStack for IoT Devices[J]. Sensors (Basel, Switzerland), 2016, 16(8).

【通联编辑:谢媛媛】

猜你喜欢
计算资源弹性服务器
为什么橡胶有弹性?
为什么橡胶有弹性?
基于模糊规划理论的云计算资源调度研究
注重低频的细节与弹性 KEF KF92
通信控制服务器(CCS)维护终端的设计与实现
改进快速稀疏算法的云计算资源负载均衡
弹性夹箍折弯模的改进
基于Wi-Fi与Web的云计算资源调度算法研究
耦合分布式系统多任务动态调度算法
中国服务器市场份额出炉