企业级云计算平台服务编排技术的设计与实现
2021-10-12王骏翔徐一言
王骏翔, 徐一言
(中远海运科技股份有限公司, 上海 200135)
0 引 言
近年来,随着IaaS(Infrastructure-as-a-Service)基础架构层的服务器虚拟化技术的不断发展,如何进一步对传统服务资源进行有效整合和再利用得到了研究人员的广泛关注和深入研究。随着企业级云计算平台的迅速发展,围绕云计算基础资源的管理类平台的设计与优化在一定程度上提高了企业在IaaS基础设施即服务层面的纳管和交付能力,大幅提升了信息化管理部门在传统虚拟化和物理环境方面的工作效率,但面对复杂的应用业务场景,如何进一步提升异构环境和多元化应用基础环境的交付能力成为了难点问题。
对于已完成云基础资源纳管和交付的“上云”企业而言,迫切需要构建一套灵活度高、易扩展和耦合度低的“新一代”云计算管理平台。采用服务编排技术,在云资源自动交付的基础上,结合云应用的前后置关系和服务校验等,提升云计算在多元化和异构环境下的业务快速交付能力。
本文利用面向对象的设计思想,结合跨平台、多语言的研发手段,设计一套适用于大型集团型企业的云计算服务编排技术。对该技术的设计目标和设计原则进行阐述,对其功能和适用场景进行设计。根据该技术在某大型航运企业的应用情况,验证其能较好地解决云资源服务部门对复杂云资源场景的快速交付问题,为类似工程的开展提供参考。
1 设计目标和设计原则
1.1 设计目标
目前,已有的云计算管理平台基本上都能提供传统单一场景下的云基础资源服务,并实现单一云资源编排功能,但缺乏在具体业务场景下对一组云应用服务对象进行编排的能力,主要表现在:
1) 在多云异构基础环境下,灵活定制应用组模板;
2) 在多云异构基础环境下,快速完成一组单层或多层架构的虚拟资源交付的服务编排设计;
3) 针对一组单层或多层架构的云资源横向伸缩扩展的能力。
本文主要根据不同云平台服务对象所需云服务的差异性,实现一种多云环境的云服务编排,满足以下2个核心场景需求:
1) 根据自定义产品、负载均衡和亲和性等,建立基于单层或多层结构的云应用组服务;结合云应用组的业务关联情况和交付顺序完成对服务编排的建模。
2) 在服务编排的基础上,利用负载均衡技术获得灵活调度云资源横向伸缩扩展的能力。
1.2 设计原则
1.2.1 面向对象的设计思路
面向对象是目前普遍采用的一种软件开发设计思路,其目的是清晰、精确地定义问题领域,以类和继承为构造机制,充分利用接口和多态提升灵活性,认识、理解、刻划客观世界,设计和构建相应的软件系统。对于本文所述云计算服务编排技术方案而言,面向对象的设计思路除了体现在核心功能代码的应用上以外,还主要体现在模块的功能设计上。传统企业的云平台资源交付着眼于单一云资源和业务场景的功能实现,主要利用传统云资源镜像或模板、定制化Shell和PowerShell等脚本配合交付。云计算资源的服务编排和弹性伸缩是在实现云基础资源自动交付的基础上,结合云业务应用逻辑关系和多种资源基础环境配置设计的云服务交付模式,其中多种资源在多云环境下的服务编排和业务关联性是影响较大的因素。本文所述技术方案在设计初期就已考虑到这些因素,在整体架构和功能设计中充分结合实际交付和配置中的难点和重复性进行技术突破,并以面向对象的设计原则逐步实现和调试相关技术,以满足企业在云计算交付模式下的多元化业务需求。
1.2.2 原子性设计思路
在设计功能模块时,对业务场景的对象元素进行细化,将业务操作划分为原子性功能,以此为基础构成业务组件,进而形成模块和子系统,同时将业务操作之间的约束逻辑化。该设计思路的优点主要包括:
1) 能提高代码的重复利用率;
2) 适应变化的灵活性,易于在后期进行调试优化;
3) 当某一功能服务的内部结构和实现逐渐发生变化时,不影响其他模块的服务能力。
在设计技术方案时,考虑到企业在云计算业务方面的技术迭代和系统的易扩展性等特点,拆分解耦实现云资源服务编排和弹性伸缩的模块,虽然两者中有部分模块重叠,但在接口调度和实现层都采用原子性设计方式,保证各自模块的完整性。此外,在服务编排中的单一云资源交付中也是如此。这样,在最终交付时既能保证企业云平台现有功能模块的完整性,又能满足对多元化云资源交付和编排的需求。
2 技术方案设计
在本文所述技术方案中,从企业级云计算管理平台的业务和功能场景出发,以多云管理环境下的企业云计算资源服务编排和资源动态弹性伸缩为目标,采用面向对象的设计思想,利用Java、JavaScript和HTML5等J2EE技术,结合Python和Shell等自动化辅助脚本实现统一功能。该技术方案适用于多云管理平台的异构云基础环境,具有较强的灵活性和动态扩展性。
2.1 云资源服务编排设计[2]
针对企业多层级跨云基础资源业务场景,实现1次编排建模多次交付的功能,主要满足某类场景下多种基础云计算平台的资源应用需求(如MySQL主从、ELK和Tomcat+Nginx等)。
在设计云资源服务编排时,主要关注多云异构环境,在功能设计方面需满足不同种类的云基础环境(如企业私有云、公有云和行业专有云等)的要求。为实现1次建模多次跨平台复用的功能,在单一云资源编排模型中采用适配多种异构云主机的同时,通过接口下发PowerShell、Shell和Python等脚本模块,完成单一云主机的资源编排交付。此外,在单一云主机资源编排交付的基础上,通过时序控制和拆分单一云资源交付的标签状态,实现云应用组交付功能,为用户提供灵活的多云资源编排功能。
在实现服务编排时,首先在云计算管理平台的逻辑层创建应用组,通过选择云服务目录中已发布的多种基础云计算平台的资源、单个或多个产品,获得其部署云虚拟主机的必要参数。其次,在设置中添加应用组亲和性策略等,设置完毕之后,可配置应用组基础信息,包括云虚拟主机数量、是否添加负载均衡产品等。在应用组创建完成之后,选择使用云主机的待选IP(Internet Protocal)或VIP(Virtual Internet Protocol),按照创建的顺序设置后置执行的脚本。最后,完成一个服务编排。图1为服务编排技术逻辑图。
图1 服务编排技术逻辑图
2.2 云资源弹性伸缩设计
利用云资源的服务编排,结合应用级负载均衡技术,实现在多云环境下应用负载均衡的弹性伸缩,可灵活地根据系统负载和预设时间规则对编排的云主机进行增加、减少和变更配置等操作。该设计的技术特征在于既能针对新建资源,又能覆盖存量资源;通过利用应用级负载均衡技术,结合基础云资源的克隆和服务编排,可灵活实现弹性伸缩的目标。
在弹性伸缩设计中,重点关注对应用负载均衡的调度、配置和更新设计,在新建、克隆云管理平台适配基础云资源的同时,通过将伸缩资源的IP和服务信息准确更新至现有的应用负载均衡中尤为重要。本文利用平台标准交付的应用负载均衡环境和适用于用户自定义的配置文件的路径进行适配,满足复杂情况下的业务弹性伸缩需求。
基于现有的云计算管理平台的纳管能力,用户选择云主机发起增加、减少或配置变更申请,填写Nginx应用负载均衡的配置文件地址,平台调用云平台接口,完成对应的克隆、删除和配置更改工作,并在Nginx应用负载均衡配置文件中加入或删除云主机IP,执行reload 命令启用新的配置。最终,完成云主机弹性伸缩。图2为云资源弹性伸缩技术逻辑图。
图2 云资源弹性伸缩技术逻辑图
3 技术实现及应用
3.1 企业云计算现状
某大型集团型航运企业于2008年引入服务器虚拟化技术,通过集约化理念陆续实现了企业传统硬件服务器运营向云计算初期阶段“虚拟化”的转变。该企业面对“数字化”转型的需求,以企业数据中心为基础,在解决企业境内数据中心“点多、面广、人少”、虚拟化种类繁多和服务标准不统一等问题的需求下,于2019年建设了一套企业级云计算管理平台,用于集成人员、流程、信息和自动化工具,主要功能包括自助服务、变更审批、资源管理、公有云纳管和云分析等。
在实际应用该平台过程中发现,在众多云基础资源的交付中,存在着异构基础资源和多元化应用群组云资源交付的问题,缺乏根据某个云服务对象,围绕其业务需求实现整体编排的能力。
在系统分析企业的实际需求之后,围绕当前企业应用的云计算管理平台,在多云异构基础环境下,主要针对以下2种技术进行算法和功能的实现与优化:
1) 快速完成一组单层或多层架构的虚拟资源交付的服务编排设计;
2) 在服务编排的基础上,灵活调度云资源,使其横向伸缩扩展。
下面对这2种核心技术功能模块的实现进行详细阐述。
3.2 技术功能实现
3.2.1 基于服务编排实现异构环境多云资源的交付
将服务编排功能作为自助交互的功能交付,在执行部署时,根据用户申请中填写的信息参数,按照服务编排中的机器产生顺序调用多云基础资源环境接口,创建云主机,配置基础环境等。在云主机创建完成之后,获取所有云主机信息和IP映射关系,开始执行后续编排脚本(编排脚本中含有建立多云主机之间的关系和设置VIP)。云平台服务编排实现截图见图3。
图3 云平台服务编排实现截图
部分功能实现代码如下:
3.2.2 基于服务编排和负载均衡技术实现云资源弹性伸缩的交付
在基于服务编排和负载均衡技术的工作原理上,相关功能主要由以下几部分配合实现:
1) 云主机增加。
(1) 填写弹性伸缩订单,选择伸缩的机器,填写Nginx服务器配置文件的地址。
(2) 订单开始处理,调用云基础资源平台的接口,克隆需要伸缩的机器。
(3) 机器克隆完成,获取该机器的IP。将该IP自动加入Nginx配置文件中,调用Nginx配置 reload 命令,启用新的Nginx配置,同时执行克隆机器需执行的脚本(一般包含应用启动命令)。
(4) 云主机增加完成。
2) 云主机减少。
(1) 填写弹性伸缩订单,选择伸缩的机器,填写Nginx服务器配置文件的地址。
(2) 订单开始处理,调用云基础资源平台的接口,删除对应的机器。
(3) 机器删除完成,获取该机器的IP。将该IP加入Nginx配置文件中,移除调用Nginx配置 reload 命令,启用新的Nginx配置。
(4) 云主机减少完成。
3) 云主机配置变更。
(1) 填写弹性伸缩订单,选择伸缩的机器;
(2) 调用云基础资源平台的配置变更接口,变更机器的配置,如CPU(Central Processing Unit)内存;
(3) 变更完成之后,执行变更机器的后置脚本(一般包含应用启动命令);
(4) 云主机配置变更完成。
云平台弹性伸缩技术实现截图见图4。
图4 云平台弹性伸缩技术实现截图
部分功能实现代码如下:
4 结 语
本文实现了一种在多云环境中应用的服务编排技术,能满足企业在云计算平台上,在复杂的业务交付场景下,利用1次应用服务级编排建模多次交付的云服务功能需求;同时,基于服务编排的弹性伸缩技术能满足企业对业务资源伸缩的灵活性需求。
表1为企业级云计算平台服务编排技术应用前后对比。从表1中可看出,基于企业级云计算平台的服务编排技术的实现是多云环境下实现云资源统一交付和资源弹性伸缩的关键环节,可为企业在上云后的多元化云业务交付场景提供必要的技术平台支撑。
表1 企业级云计算平台服务编排技术应用前后对比