首页> 中国专利> 实现云计算环境自动化运维的二维分层方法

实现云计算环境自动化运维的二维分层方法

摘要

本发明提供一种实现云计算环境自动化运维的二维分层方法,包括步骤:步骤1:将自动化框架的横向维度分为实现层、平台层;将自动化框架的纵向维度分为规则层、流程层、节点层;步骤2:建立模块:规则实现群组、规则平台模块、流程实现群组、流程平台模块、节点实现群组、节点平台模块。本发明的有益效果:1、降低了自动化需求开发的复杂度。2、提高了开发成果利用率。3、降低了开发一个自动化需求的周期。4、降低了修改一个自动化需求的周期。5、保证了在需求不断变化过程中平台的稳定性。

著录项

  • 公开/公告号CN104516735A

    专利类型发明专利

  • 公开/公告日2015-04-15

    原文格式PDF

  • 申请/专利权人 上海宝信软件股份有限公司;

    申请/专利号CN201310462512.5

  • 申请日2013-09-30

  • 分类号G06F9/44;

  • 代理机构上海汉声知识产权代理有限公司;

  • 代理人郭国中

  • 地址 201203 上海市浦东新区张江高科技园区郭守敬路515号

  • 入库时间 2023-12-17 03:57:53

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2018-05-29

    授权

    授权

  • 2015-05-13

    实质审查的生效 IPC(主分类):G06F9/44 申请日:20130930

    实质审查的生效

  • 2015-04-15

    公开

    公开

说明书

技术领域

本发明涉及IT运维自动化领域,具体地,涉及实现云计算环境自动化运维的二维分层方法。 

背景技术

在IT运营过程中,节约成本,提高效率越来越被重视。解决这个问题的一个重要方向就是自动化。 

经检索发现如下相关文献: 

申请号为201110059386.X、名称为“云计算服务平台的虚拟计算资源动态管理系统”的中国专利文献,提出了一个分层的云计算基础架构模型,定义了三种对象来描述并管理可伸缩的虚拟机资源的状态、属性、特征和行为;可自动化物理服务器到虚拟资源池的供应;还提出了一种在线动态扩容的方法,通过实时采集系统负载状态和应用运行状况,由人工神经网络作为判断资源伸缩触发的机制,在不中断服务的情况下动态扩展虚拟机算资源。 

但目前自动化产品普遍存在以下问题。 

1、开发复杂度高。IT自动化运维需要从IT系统的信息采集入手、通过对输入数据的按既定流程的处理、最终形成回馈IT系统的状态改变。在当前一些未使用分层方案的自动化执行框架中,自动化开发人员必需同时兼顾数据采集及处理、自动化流程编排和具体对象的驱动开发的能力,会导致各个环节高度耦合、开发复杂度很高。同时,会导致同一个自动化需求的开发工作无法并行进行,从而导致开发周期变长。 

2、变更周期长。若变更相同功能而不使用二维分层技术,会导致对与此功能相关的逻辑全部检查,从而导致变更周期长。 

3、稳定性差。没有进行横向维度的分层,自动化需求的增加或修改会导致整个自动化模块的不稳定。 

4、共享性差。没有进行纵向维度的分层,导致每个需求都需要从上到下完成实现,在不同需求之间,无法共享共同的逻辑实现。 

发明内容

针对现有技术中的缺陷,本发明的目的是提供一种实现云计算环境自动化运维的二维分层方法及系统。尤其适用于在云环境下,要求快速生成指定目标系统,灵活定制自动化运维工作流程,自动化弹性伸缩关键指标,同时要求兼容各种IT设备,达到自动维护系统良好运行。 

根据本发明提供的实现云计算环境自动化运维的二维分层方法,包括如下步骤: 

步骤1:将自动化框架的横向维度分为实现层、平台层;将自动化框架的纵向维度分为规则层、流程层、节点层; 

步骤2:建立如下模块: 

-规则实现群组,位于实现层与规则层的交汇点; 

-规则平台模块,位于平台层与规则层的交汇点; 

-流程实现群组,位于实现层与流程层的交汇点; 

-流程平台模块,位于平台层与流程层的交汇点; 

-节点实现群组,位于实现层与节点层的交汇点; 

-节点平台模块,位于平台层与节点层的交汇点。 

优选地: 

所述实现层,用于在自动化整体环境不间断运行过程中,增加或修改用户需求; 

所述平台层,用于为实现层的逻辑提供运行平台; 

所述规则层,用于通过用户提供的原始数据源,确定使用的流程及相应的参数; 

所述流程层,用于管理流程定义和调度流程实例; 

所述节点层,用于协助流程驱动各种对象设备,让对各种设备的操作封装成节点形式,供流程统一调用。 

优选地,所述规则实现群组,具体为:以脚本语言描述用户需求,抽象成用于启动流程实例的规则;其中,首先规则可以选出所需的自动化流程,然后规则通过启动规则平台模块提供的数据源接口,计算流程所需的参数,最后根据规则计算出的数据,规则平台模块通过启动流程实例接口启动流程。 

优选地,所述规则平台模块,具体为:为启动规则脚本提供运行环境,提供脚本语言对应的运行容器;封装用户提供的数据源,为脚本提供统一的数据源接口;封装执行引擎层提供的各种启动流程实例的方法,为脚本提供统一的流程实例调用 接口。 

优选地,所述流程实现群组,具体为:通过统一流程描述语言实现用户的自动化流程需求设计;流程定义中,实现并行、串行、嵌套、循环、判断、同步、异步、定时这些各种逻辑组件;编排出自动化流程。 

优选地,所述流程平台模块,具体为:管理流程定义和调度流程实例;对多个流程实例实现并行执行,对单个流程实例内实现并行、串行、同步、异步、判断、循环和嵌套结构;满足对各种流程行为表达的执行。 

优选地,所述节点实现群组,具体为:根据用户具体的设备,使用脚本语言开发出驱动设备的统一节点,供流程调用,从而达到流程能真正直接驱动目标对象;提供了通用组件的实现。 

优选地,节点平台模块,具体为:为开发的节点组件提供运行环境、以及节点被流程调用的统一实现。 

优选地,还包括如下步骤: 

步骤3:根据用户需求修改规则实现群组、流程实现群组、节点实现群组; 

步骤4:使用步骤2中已建立的所述规则平台模块、流程平台模块、节点平台模块支持通过步骤3修改后的规则实现群组、流程实现群组、节点实现群组。 

与现有技术相比,本发明具有如下的有益效果: 

1、降低了自动化需求开发的复杂度。 

2、提高了开发成果利用率。 

3、降低了开发一个自动化需求的周期。 

4、降低了修改一个自动化需求的周期。 

5、保证了在需求不断变化过程中平台的稳定性。 

附图说明

通过阅读参照以下附图对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显: 

图1为自动化框架二维分层结构图; 

图2为横向维度分层示意图; 

图3为纵向维度分层示意图; 

图4为二维分层中各模块及模块内部调用关系图。 

具体实施方式

下面结合具体实施例对本发明进行详细说明。以下实施例将有助于本领域的技术人员进一步理解本发明,但不以任何形式限制本发明。应当指出的是,对本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进。这些都属于本发明的保护范围。 

目前,对有规律且需要重复的操作实现自动化,提高IT环境创建及运维的效率,对自动化执行框架提出了很高的要求。自动化执行框架不仅要能够动态编排,而且要能够尽量方便自动化脚本的开发维护、适应变更,提高自动化整体实现的稳定性和可维护性。 

1、概述 

如图1所示,在本发明提出的二维分层技术方案中,横向维度分为两层:实现层、平台层;纵向维度分为三层:规则层、流程层、节点层。 

两个维度的交汇点分别形成了规则实现群组(各种需求的规则脚本)、规则平台模块、流程实现群组(各种需求的自定义流程)、流程平台模块、节点实现群组(各种设备操作的实现)、节点平台模块。每个模块均有对应的开发工具辅助对应的开发人员进行开发。三个平台层模块(规则平台模块、流程平台模块、节点平台模块)开发完成后,一般不再需要更改,新的需求均在实现层模块中完成。 

2、横向分层 

横向维度解决的是逻辑稳定度的分离。通过模块嵌入实现,即非稳定逻辑规则嵌入稳定模块,稳定模块为非稳定规则提供宿主环境。 

●横向维度的实现层: 

此层主要功能是实现用户的各种具体需求,做到需求的敏捷开发。并且可以做到在自动化整体环境不间断运行过程中,增加新的或修改老的需求。 

●横向维度平台层: 

此层主要功能是为实现层的逻辑提供运行平台。开发完毕后,则不会随着用户需求的变化而变化 

3、纵向分层 

纵向维度解决的是逻辑复杂度的分解。通过分层调用实现。即上层调用下层,每层的逻辑完全面向接口实现。 

●纵向维度的规则层: 

此层主要功能是通过用户提供的原始数据源,计算出用哪些参数启动哪些流程。 

●纵向维度的流程层: 

此层主要功能是管理流程定义和调度流程实例。 

●纵向维度的节点层: 

此层主要功能是协助流程驱动各种对象设备。让对各种设备的操作封装成节点形式,供流程统一调用。 

4、模块实现 

两维度交织形成六个模块,相互调用关系如图1所示。 

●规则实现群组: 

以脚本语言描述用户需求,抽象成用于启动流程实例的规则。首先规则可以选出所需的自动化流程,然后规则通过启动规则平台模块提供的数据源接口,计算流程所需的参数。最后根据规则计算出的数据,规则平台模块通过启动流程实例接口启动流程。 

●规则平台模块: 

为启动规则脚本提供运行环境。提供脚本语言对应的运行容器(groovy运行环境);封装用户提供的数据源,为脚本提供统一的数据源接口;封装执行引擎层提供的各种启动流程实例的方法,为脚本提供统一的流程实例调用接口。具体运作如下:数据访问控制模块通过数据访问驱动获取原始数据,并提供接口,供数据缓存功能调用。数据缓存让数据传给规则脚本,规则脚本加工原始数据,输出启动流程所需要的数据。最后数据访问控制模块使用规则脚本产生的数据,通过流程状态机客户端启动流程实例。 

●流程实现群组 

群组内是一个个满足具体用户需求的自动化流程定义。通过统一流程描述语言实现用户的自动化流程需求设计。流程定义中,可以实现并行、串行、嵌套、循环、判断、同步、异步、定时等各种逻辑组件。可以编排出各种自动化流程。 

●流程平台模块 

管理流程定义和调度流程实例。对多个流程实例可以实现并行执行,对单个流程实例内可实现并行、串行、同步、异步、判断、循环和嵌套结构。能满足对各种流程行为表达的执行。具体运作如下:流程状态机接收到启动具体流程命令后,通过XPDL解析器解析流程定义文件,得到流程具体定义文件。流程状态机再根据定义文件中的描述,调用节点组件层提供的节点组件管理器接口。 

●节点实现群组 

节点组件实现群组是具备具体资源操作功能的节点的集合。根据用户具体的设备, 使用脚本语言开发出驱动该设备的统一节点,供流程调用。从而达到流程能真正直接驱动目标对象。另外节点组件实现模块提供了通用组件的实现。比如文件系统操作,命令行操作等。 

●节点平台模块 

为开发的节点组件提供运行环境。如脚本语言对应的容器。节点被流程调用的统一实现。具体运作如下:节点组件管理器收到流程平台模块启动节点的命令后,调用节点对应的脚本实现。脚本通过节点组件管理器提供的统一的参数获取接口,得到脚本运行时需要的参数。脚本再通过运行环境调用设备控制驱动接口,来完成具体的动作。 

5、应用示例 

通过vmware公司提供的vCenter创建一个虚拟机。该虚拟机配置来源于云计算平台的配置管理数据库。 

在规则实现群组中,使用groovy脚本通过启动规则平台模块拿出虚拟机的相关的配置元数据(流程名称:创建虚拟机;cpu个数:2;内存大小:8G;宿主服务器:Dell PowerEdge R910)。从而做出使用“创建虚拟机”流程的决策。接着再根据元数据算出创建虚拟机流程所需要的参数。最后启动流程实例。 

在规则平台模块中,使用java语言编写框架,为groovy脚本提供运行环境。数据访问控制模块为groovy脚本提供统一的查询数据源接口,方便规则实现模块中的groovy脚本取原始数据。数据访问控制模块提供统一的启动流程实例的接口,使用groovy脚本运算好的数据启动流程实例。规则平台模块中的实现都是与具体业务无关的。 

在流程实现群组中,根据用户需求分析,需要先登陆到vCenter创建出一个虚拟机,接着要创建一个用于存储数据的虚拟磁盘,最后向虚拟机挂载此虚拟磁盘。流程实现中,使用XPDL(XML Process Definition Language)开发出此流程。并让流程定义发布到流程平台模块中。 

在流程平台模块中,使用java语言为流程运行搭建环境。通过XPDL解析器处理XPDL的流程描述文件,并让处理理后的流程定义数据传给流程状态机。流程状态机根据XPDL解析器提供的数据,指定流程实例启动后的流转方向。流转到节点时,流程状态机通过节点管理客户端启动节点,执行操作。只要XPDL文件符合语法规范,流程平台都能进行流程实例的管理,如实例的启动、停止、挂起、取消。流程平台模块主要是对流程定义和实例的管理,与流程定义内部的具体细节无关。 

在节点实现群组中,由于操作vCenter是一个非通用操作,所以需要封装出一个专用节点。使用Ruby脚本开发出通过vCenter创建虚拟机操作的节点,供流程调用。Ruby脚本通过节点管理器提供获取节点参数接口,得到驱动对象的原始数据,加工后通过调用Ruby运行环境提供的设备控制驱动接口,真接操作设备。创建虚拟磁盘与挂载虚拟磁盘的操作均是使用SSH连接到设备运行命令完成,所以使用通用的命令行通用组件即可驱动设备完成操作。 

在节点平台模块中,它是节点正常的被流程驱动的容器。此模块以java语言编写节点框架。框架中的节点管理器为Ruby脚本提供统一的参数获取接口。框架同时为节点实现群组中的Ruby脚本提供运行环境,并通过运行环境调用设备控制驱动。此模块与节点的具体实现内容无关。 

由于平台层的三个模块都是一次开发后,即可实现多次利用。所以无需修改。 

6、实验数据: 

使用二维分层技术前后对比。 

假设开发一个自动化需求对应的6模块功能各需要1单位工作量。 

开发第一个全新的自动化需求时,是否使用二维分层技术均为6单位工作量。但从开发第二条全新的自动化需求起,不使用二维分层技术开发每条全新的自动化需求仍需要6单位工作量,但使用二维分层技术只需要3单位工作量。 

假设修改一个自动化需求对应的6模块功能各需要0.5单位工作量。 

修改一个自动化需求时,若自动化实现没有使用二维分层技术,那么需要3单位工作量;若自动化实现使用二维分层技术,那么平均需要0.67单位工作量。(计算方法:一次需求变更可能需要实现层的三个模块中的一个或两个或三个的修改,所以平均下来(0.5+1.0+1.5)/3) 

由于在纵向分层中,每次实现都是面向接口的。所以即使在完全不同自动化需求中,也可能会有重复的原子需求。这样就可能会进一步降低工作量。(比如之前有一个单节点自动化的需求,又有一个集群自动化的需求。集群中的节点要求与单节点自动化需求的一致,那么就可以在集群自动化的实现中重用单节点自动化的实现) 

以宝钢云中心为例,横向维度平台层的三个模块已开发完毕,新的自动化需求,只需完成横向维度实现层的开发。设平台层与实现层工作量是1:1,那么现在由于使用了横向维度的分层,完成每个新需求工作量都减少为不使用横向维度分层的一半。目前有自动化需求34个。其中完全是由以前需求组合成的有6个(这些一般都是复杂的需求), 有部分是使用以前需求成果的有10个。所有流程中的总节点数为150个左右,其中自定义节点实现类型的有1个,被重用12次;通用节点实现类型中的邮件节点,被重用62次;命令行节点,被重用52次。这些重用现象都得益于纵向分层的结构。 

在宝钢云管理平台中,使用二维分层结构完成一个全新的自动化的需求大概在5个人天,包括规则实现的脚本开发(1人天),流程实现中的流程定义开发(1人天),节点实现的脚本开发(1人天/节点,假设有两个自定义节点,所以需要2人天),整体调试上线(1人天)。另外这些全新开发的规则脚本,流程定义和自定义节点都有可能被以后的新需求使用,从而减少工作量。如果采用并行开发,那么使用4个人,可在1天完成除整体调试上线外的其它工作,所以总体进度可缩短为2天。 

以上对本发明的具体实施例进行了描述。需要理解的是,本发明并不局限于上述特定实施方式,本领域技术人员可以在权利要求的范围内做出各种变形或修改,这并不影响本发明的实质内容。 

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号