paas云平台工程师运维

2024-09-11

paas云平台工程师运维

paas云平台工程师运维 篇1

云计算根据提供的服务类型分为3种方式:IaaS(基础架构即服务)、PaaS(平台即服务)、SaaS(软件即服务)。IaaS通过互联网提供基础资源,包括计算、网络和存储。PaaS则更进一步,把应用开发运行环境作为服务平台提供给用户,使用户直接得到能支持其应用的操作系统及运行库。本文以OpenStack作为IaaS平台,并整合Cloudify构建了一个PaaS平台,同时利用分层负载算法实现基于反馈的负载自适应功能。在用户发起应用请求时,根据应用实例节点负载状况实现应用请求的负载均衡,在应用负载过高或过低时根据资源消耗状况实现应用平台的自伸缩。

在IaaS领域,亚马逊的AWS功能十分强大,开源的OpenStack借鉴相关经验构建类似AWS的体系架构。OpenStack最初是由RackSpace和NASA合作,并以A-pache许可证发布的开源云平台。它以26个英文为首字母命名版本,第一个版本Austin仅有Swift和Nova两个组件,提供对象存储和计算平台。目前即将发布K版本,包含计算(Nova,对应AWS EC2)、对象存储(Swift,对应AWS S3)、认证(KeyStone,对应AWS IAM)、镜像服务(Glance)、仪表板(Horizon)、网络(Neutron)、块存储(Cinder,对应AWS EBS)、计量(Ceilometer,对应AWS CloudWatch)、编排(Heat,对应AWS CloudInformation)、数据库服务(Trove)[1]。

在PaaS领域,Gigaspaces公司是其中的知名提供商,它推出了基于Java的Cloudify。其设计思想是把各种服务器理解为一个个网格,由管理节点分别关联计算节点,是典型的C/S模式。Cloudify用人工定义的方式解决了服务与应用的定位和绑定功能。底层依赖IaaS提供的对虚拟机的控制能力,并把整体PaaS的管理功能封装在当前管理节点和相关的计算节点中。在Cloudify中,CloudControl处于绝对控制地位,解释dsl,调用jclouds,寻找合适的虚拟机,根据规则部署应用,并对应用进行监控和管理[2]。

1 基于OpenStack搭建IaaS平台

IaaS作为基础设施云平台,为用户提供计算、存储和网络资源。本文的IaaS平台采用标准的多节点部署方式,硬件资源包括服务器、存储、网络设备,采用64位的Ubuntu 15.10作为底层操作系统,虚拟资源层通过部署OpenStack的各个组件来实现。OpenStack由控制、计算、网络3种节点组成[3]。控制节点作为平台的核心环节,用户通过部署在控制节点上的相关组件可以监控整个系统,并能用命令行的方式对各个节点进行管理操作;计算节点作为平台的终端环节直接面对用户提供计算服务;网络节点是平台的中间环节,通过网络连接平台中的各个节点进行信息和数据的传输与配置[4]。

本文搭建的IaaS平台硬件节点规划如下:由10台IBM X3650 M4作为计算节点用于运行虚拟化实例、提供计算服务;使用一台IBM X3850X5作为控制节点并提供Web服务,统一管理平台中的计算节点、网络节点和其它组件;镜像服务单独安装在一台IBM X3650 M4上;网络服务安装在每个计算节点,提供路由、NAT、DHCP、网络插件代理以及虚拟机网络连接等网络服务;存储节点安装在两台配置了HBA卡且连接了SAN存储的IBM X3850X5上,对整个平台提供存储资源。

整个虚拟化环境采用二层网络架构,方便资源的访问与消息传递。使用Nova提供的虚拟化实例隔离方案,组建一个内外网隔离的网络拓扑结构,实例之间通过内网交换机通信以确保数据安全。实例和外网通信时,通过浮动IP完成。

此次实施使用的OpenStack版本为Havana,使用源代码安装的方式部署Keystone、Nova、Swift、Cinder、Neutron和Glance等组件[5],具体步骤如下:Keystone:安装身份认证服务,配置用户、租户和角色,定义服务和API终端;Nova:安装控制器计算服务,配置计算节点并启动运行实例与网络功能;Swift:安装并配置存储节点,启用存储节点服务,安装并配置代理节点;Cinder:安装并配置块存储服务控制器,启用服务,安装并配置块存储服务节点;Neutron:在有需求的网络节点上安装网络服务,在计算节点、控制节点上安装网络服务,根据事先规划的拓扑图搭建基础网络;Glance:安装镜像服务,创建并同步镜像服务数据库。

2 对接Cloudify实现PaaS平台

在建立基于OpenStack的IaaS平台后,通过调用OpenStack提供的API接口,Cloudify可以连接到基础设施云平台,部署管理服务与应用服务,构建PaaS平台并实时监控。Cloudify使用引导进程为部署Cloudify管理节点及应用服务准备主机资源。启动进程负责分配机器,安装Cloudify组件模块所需的JDK。通过在Cloudify命令行中运行相关命令,启动初始引导进程[6]。引导程序执行以下任务:查看Cloudify驱动文件(Cloudify driver file),获取模板信息并从相关模板定义的可用机器资源池中分配一台机器,安装并启动相关组件。引导进程连接到分配的机器,上传<cloudifyRoot>/clouds/<cloudProviderName>/upload路径下的启动脚本和其它所需文件,例如SSH密钥文件。上传完毕后,相关的引导脚本则启动运行[7]。

2.1 云平台启动过程

云平台启动过程如下:(1)开发人员向Cloudify控制台发送命令,请求启动Cloudify云服务;(2)Cloudify控制台接收启动请求解析命令,并向云驱动Provisioning Driver发送命令启动Cloudify管理节点;(3)Provisioning Driver与OpenStack通信,在服务相关模板定义的可用机器资源池中,通过云API分配一台机器;(4)OpenStack NOVA组件接收到请求,进行KeyStone验证,通过后解析请求信息并根据计算节点负载选择主机,Glance镜像服务创建系统镜像并分配IP地址,生成虚拟机及其配置文件,并将配置发送给Provisioning Driver;(5)Provisioning Driver根据收到的配置信息,通过ping命令验证Cloudify客户机与虚拟机的连通性。确认后调用SSH命令在虚拟机上安装Cloudify Controller,并启动GSM、ESM、LUS、REST、Web and Management Space等管理组件服务。Cloudify云平台启动完毕,并在Cloudify管理节点上启动Provisioning Driver。具体过程如图1所示。

2.2 应用安装过程

应用安装过程如下:(1)开发人员向Cloudify控制台发送命令,请求安装应用;(2)Cloudify控制台接收请求,向Cloudify管理节点发送应用文件及其配置文件;(3)Cloudify管理节点发送启动虚拟机并安装应用的命令给Provisioning Drive;(4)Provisioning Drive与OpenStack通信,在服务相关模板定义的可用机器资源池中,通过云API分配一台机器;(5)OpenStack NOVA组件接收到请求进行KeyStone验证,通过后解析请求信息并根据计算节点负载选择主机,Glance镜像服务创建系统镜像并分配IP地址,生成虚拟机及其配置文件,并将配置发送给Provisioning Driver;(6)Provisioning Driver根据收到的配置信息,通过ping命令验证Cloudify客户机与虚拟机的连通性,确认实例后调用SSH命令,安装并启动Cloudify代理GSA和GSC,使用相关服务的安装脚本安装并初始化服务。具体过程如图2所示。

3 PaaS平台负载自适应实现

PaaS平台运行时经常会遇到突发性大规模并发访问的状况,导致应用的负载短时间内增大数倍。按需分配资源以实现应用的自动伸缩是PaaS的核心功能,为实现这一目标,设计一种基于负载反馈的自适应动态调度系统,根据应用实例的负载状况动态自动分发访问请求,并能够在运行节点资源不足或富余时实现应用实例的自适应伸缩,从而确保平台资源的均衡高效使用[8]。

3.1 负载公式

要实现负载均衡和弹性伸缩,首先要确定实例综合负载和应用负载的值。实例综合负载反映了实例运行的虚拟机节点及实例本身的运行状况,而应用负载反映了整个应用的健康程度[9]。计算机系统中,影响性能的关键指标是CPU、内存、网络带宽和磁盘IO,据此可以定义各负载的公式如下:

(1)实例综合负载。实例综合负载包括虚拟机节点负载和实例负载,定义如下:

虚拟机节点负载:

实例负载:

实例综合负载:

其中,α、β表示两种负载在实例综合负载中的所占权重,α+β=1。

(2)应用负载。应用负载是该应用所有实例的平均值,设实例个数为n,则定义如下:

3.2 负载自适应调度策略

负载自适应模型根据实例综合负载的实时反馈分配应用访问请求,并根据应用负载状况的增减应用实例实现自适应的弹性伸缩,具体调度策略如下:(1)各实例节点根据公式(1)计算其综合负载反馈给负载均衡器及负载监视器;(2)负载均衡器为PaaS平台中每个应用维护一个实例综合负载队列,并根据负载值由小到大排序;(3)负载监视器根据公式(2)定期计算各应用负载并发送给应用控制器;(4)用户发起访问请求时,负载均衡器将请求分发到排在实例综合负载队列最前面的实例处理,由于队列本身是经过排序的,则保证了访问请求总是被负载最小的实例处理,以实现负载均衡。响应节点实时计算其综合负载值并重新反馈给负载均衡器及负载监视器;(5)应用控制器收到应用负载反馈后与预先设定的阈值比较,如果高出或低于阈值,则根据平台当前资源状况增加或删除应用实例。虚拟机节点发生变化的响应节点实时计算其综合负载值,并重新反馈给负载均衡器及负载监视器。整个策略流程如图3所示。

3.3 负载自适应调度算法

(1)访问请求负载均衡算法。

Step1:负载均衡器接收用户请求APP(Request)并解析请求的应用ID号。

Step2:根据应用ID号查找对应实例的综合负载队列,若找到则发给第一个实例作相应处理,否则返回错误信息。

Step3:实例处理用户请求并将结果返回负载均衡器,负载均衡器响应用户请求。

Step4:负载监视器每隔时间T根据公式(2)计算一次应用负载,并反馈给应用控制器作为应用负载自适应伸缩处理依据。

(2)应用自适应伸缩算法。

Step1:根据反馈的应用负载与预先设定的阈值进行比较,如果Loadapp<∂min转至Step2;如果Loadapp>∂max转至Step3;如果∂min≤Loadapp≤∂max,则转至Step4。

Step2:应用控制器查找实例综合负载队列,删除最前面的一个实例,并请求负载均衡器更新实例综合负载队列,转至Step4。

Step3:根据之前的虚拟机节点计算公式计算LoadVMmin=min{LoadVMi|0≤i≤n},在负载最小的虚拟机节点上增加一个应用实例,并请求负载均衡器更新实例综合负载队列,转至Step4。

Step4:执行完后,返回Step1重新开始。

4 结语

本文采用OpenStack与Cloudify技术相结合的方式搭建了一个PaaS云平台,在此基础上利用负载分层算法实现了应用的负载均衡与弹性自适应功能,整个平台的平均响应时间和负载能力明显优于普通物理服务器。然而,整个平台还有改进的空间,如目前的负载均衡仅适用于Web应用,对于后台服务、数据库还未实现负载均衡。而且实例节点的计算任务较重,占用了一定业务资源,如何优化计算进程也可作为日后的一个研究方向。

摘要:随着移动终端的大规模普及,现有Web应用服务常在某个时间节点遭遇大规模并发请求,此时传统的基础服务平台受规模及扩展性的制约,往往会出现响应超时甚至服务器宕机的情况,无法满足业务需求。基于云计算的PaaS技术提供了稳定运行和弹性负载的能力,可以为各类应用提供一个弹性伸缩的运行环境,使应用开发者可以专注于业务本身的逻辑实现而无需顾及基础平台的供给,以提高基础资源利用率,降低运维复杂度。充分利用各种开源平台,以OpenStack技术作为基础构建IaaS,结合Cloudify技术实现以PaaS为核心的企业私有云服务。同时针对开源云平台在业务请求负载均衡及应用平台弹性伸缩方面的缺陷,提出利用分层负载算法实现基于反馈的负载自适应功能,实现业务请求根据应用节点负载状况动态调节,应用实例根据请求并发数及资源消耗状况自动增减的弹性负载自适应体制,以构建一个稳定高效的PaaS私有云平台。

关键词:PaaS,OpenStack,Cloudify,负载自适应,云计算

参考文献

[1]英特尔开源技术中心.OpenStack设计与实现[M].北京:电子工业出版社,2015.

[2]Cloudify3.1环境搭建和插件集成[EB/OL].http://www.oschina.net/question/2355760_236935.

[3]戢友.OpenStack开源云王者归来[M].北京:清华大学出版社,2014.

[4]张子凡.OpenStack部署实践[M].北京:人民邮电出版社,2014.

[5]张小斌.OpenStack企业云平台架构与实践[M].北京:电子工业出版社,2015.

[6]Wikipedia.Cloudify[EB/OL].https://en.wikipedia.org/wiki/Cloudify.

[7]手把手安装Cloudify 3.1[EB/OL].http://www.oschina.net/question/2241484_233747.

[8]LUCAS CARLSON.PaaS程序设计[M].潘黎萍,余水清,译.北京:机械工业出版社,2014.

上一篇:狂犬病暴露的预防处置及预防接种知识下一篇:开学后的想法作文