服务器环境部署方法和装置与流程

文档序号:11519370阅读:488来源:国知局
服务器环境部署方法和装置与流程

本发明涉及服务器内部环境管理,尤其涉及一种服务器环境部署方法和装置。



背景技术:

服务器内部环境即服务器内数据和应用运行的环境,包括服务器中的各配置参数、服务协议等等,这些都对服务器内数据和应用的运行、以及与客户端的交互产生重要影响,被称为服务器内部环境。当服务器上线(如图1所示通过中央控制服务器连到策略管理平台)后,需要对上线的服务器的内部环境进行统一管理,如初始化、参数一致化等,才能统一对入网的所有客户端提供一致的服务。现有技术缺乏对上线的服务器的内部环境进行统一管理的整套技术方案。另外,现有技术需要对上线的服务器进行变动(例如,使一些新服务器上线,使一些已上线的服务器下线)、或改变服务器上已部署的策略或环境参数等时,需要人工进行,部署效率低。

因此,现有技术对于服务器的内部环境部署和管理,缺乏统一规范的方案。



技术实现要素:

本发明一个目的在于提高对于服务器的内部环境部署和管理,例如内部环境初始化等行为的规范性和统一性。

根据本发明的一方面,提供了一种服务器环境部署方法,包括:

将用安装函数写成的用于待部署服务器环境初始化的服务描述脚本打成初始化服务描述包;

将所述初始化服务描述包发布到中央控制服务器,以便待部署服务器安装的代理从中央控制服务器上拉取所述初始化服务描述包,在待部署服务器上调用安装函数安装所述初始化服务描述包中的服务描述脚本,从而执行待部署服务器环境初始化。

根据本发明的一方面,提供了一种服务器环境部署装置,包括:

用于将用安装函数写成的用于待部署服务器环境初始化的服务描述脚本打成初始化服务描述包的装置;

用于将所述初始化服务描述包发布到中央控制服务器,以便待部署服务器安装的代理从中央控制服务器上拉取所述初始化服务描述包,在待部署服务器上调用安装函数安装所述初始化服务描述包中的服务描述脚本,从而执行待部署服务器环境初始化的装置。

根据本发明的一方面,提供了一种设备,包括:

一个或多个处理器;

存储器,存储有一个或多个程序,

当所述一个或多个程序被所述一个或多个处理器执行时,实现如上所述的方法。

根据本发明的一方面,提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如上所述的方法。

本发明实施例中,对于服务器的内部环境部署和管理中的每一服务,例如内部环境初始化,都用统一的服务描述去规范它,例如对于内部环境初始化用安装函数写成服务描述脚本,并将其打包,然后将所述初始化服务描述包发布到中央控制服务器,以便待部署服务器安装的代理从中央控制服务器上拉取所述初始化服务描述包,在待部署服务器上调用安装函数安装所述初始化服务描述包中的服务描述脚本,从而执行待部署服务器环境初始化。这样,就使得对于联网的计算机的内部环境部署和管理中的每一服务,都具有规范性和统一性。

附图说明

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

图1为本发明的一个实施例应用的系统环境示意图。

图2为根据本发明的一个实施例的服务器环境部署方法的流程图。

图3为根据本发明的另一个实施例的服务器环境部署方法的流程图。

图4为根据本发明的另一个实施例的服务器环境部署方法的流程图。

图5为根据本发明的另一个实施例的服务器环境部署方法的流程图。

图6为根据本发明的一个实施例的待部署服务器环境部署装置的模块图。

图7为根据本发明的一个实施例的应用待部署服务器环境部署方法的设备硬件图。

具体实施方式

在更加详细地讨论示例性实施例之前应当提到的是,一些示例性实施例被描述成作为流程图描绘的处理或方法。虽然流程图将各项操作描述成顺序的处理,但是其中的许多操作可以被并行地、并发地或者同时实施。此外,各项操作的顺序可以被重新安排。当其操作完成时所述处理可以被终止,但是还可以具有未包括在附图中的附加步骤。所述处理可以对应于方法、函数、规程、子例程、子程序等等。

在上下文中所称“计算机设备”,也称为“电脑”,是指可以通过运行预定程序或指令来执行数值计算和/或逻辑计算等预定处理过程的智能电子设备,其可以包括处理器与存储器,由处理器执行在存储器中预存的存续指令来执行预定处理过程,或是由asic、fpga、dsp等硬件执行预定处理过程,或是由上述二者组合来实现。计算机设备包括但不限于中央控制服务器、个人电脑、笔记本电脑、平板电脑、智能手机等。

所述计算机设备包括用户设备与网络设备。其中,所述用户设备包括但不限于电脑、智能手机、pda等;所述网络设备包括但不限于单个网络中央控制服务器、多个网络中央控制服务器组成的中央控制服务器组或基于云计算(cloudcomputing)的由大量计算机或网络中央控制服务器构成的云,其中,云计算是分布式计算的一种,由一群松散耦合的计算机集组成的一个超级虚拟计算机。其中,所述计算机设备可单独运行来实现本发明,也可接入网络并通过与网络中的其他计算机设备的交互操作来实现本发明。其中,所述计算机设备所处的网络包括但不限于互联网、广域网、城域网、局域网、vpn网络等。

需要说明的是,所述用户设备、网络设备和网络等仅为举例,其他现有的或今后可能出现的计算机设备或网络如可适用于本发明,也应包含在本发明保护范围以内,并以引用方式包含于此。

后面所讨论的方法(其中一些通过流程图示出)可以通过硬件、软件、固件、中间件、微代码、硬件描述语言或者其任意组合来实施。当用软件、固件、中间件或微代码来实施时,用以实施必要任务的程序代码或代码段可以被存储在机器或计算机可读介质(比如存储介质)中。(一个或多个)处理器可以实施必要的任务。

这里所公开的具体结构和功能细节仅仅是代表性的,并且是用于描述本发明的示例性实施例的目的。但是本发明可以通过许多替换形式来具体实现,并且不应当被解释成仅仅受限于这里所阐述的实施例。

应当理解的是,虽然在这里可能使用了术语“第一”、“第二”等等来描述各个单元,但是这些单元不应当受这些术语限制。使用这些术语仅仅是为了将一个单元与另一个单元进行区分。举例来说,在不背离示例性实施例的范围的情况下,第一单元可以被称为第二单元,并且类似地第二单元可以被称为第一单元。这里所使用的术语“和/或”包括其中一个或更多所列出的相关联项目的任意和所有组合。

应当理解的是,当一个单元被称为“连接”或“耦合”到另一单元时,其可以直接连接或耦合到所述另一单元,或者可以存在中间单元。与此相对,当一个单元被称为“直接连接”或“直接耦合”到另一单元时,则不存在中间单元。应当按照类似的方式来解释被用于描述单元之间的关系的其他词语(例如“处于...之间”相比于“直接处于...之间”,“与...邻近”相比于“与...直接邻近”等等)。

这里所使用的术语仅仅是为了描述具体实施例而不意图限制示例性实施例。除非上下文明确地另有所指,否则这里所使用的单数形式“一个”、“一项”还意图包括复数。还应当理解的是,这里所使用的术语“包括”和/或“包含”规定所陈述的特征、整数、步骤、操作、单元和/或组件的存在,而不排除存在或添加一个或更多其他特征、整数、步骤、操作、单元、组件和/或其组合。

还应当提到的是,在一些替换实现方式中,所提到的功能/动作可以按照不同于附图中标示的顺序发生。举例来说,取决于所涉及的功能/动作,相继示出的两幅图实际上可以基本上同时执行或者有时可以按照相反的顺序来执行。

下面结合附图对本发明作进一步详细描述。

图1为本发明的一个实施例应用的系统环境示意图。如图1所示,本发明应用的环境包括策略管理平台1、中央控制服务器2、待部署服务器3和待部署服务器3上安装的代理4。策略管理平台1即本发明实施例中通过服务描述进行分发环境配置,对系统中大量待部署服务器3的内部环境进行初始化、一致化和服务保活等操作,从而从大量待部署服务器3进行环境的部署和更新的平台。一个策略管理平台1可同时连接多个中央控制服务器2。每个待部署服务器3即需要进行环境部署和更新的服务器。每个待部署服务器3上安装代理4。每个中央控制服务器2连接多个待部署服务器3的代理4。

当待部署服务器上线(即连到图1所示的系统的中央控制服务器2)后,需要对上线的待部署服务器的内部环境进行统一管理,如初始化、参数一致化等。现有技术缺乏对上线的待部署服务器的内部环境进行统一管理的整套技术方案。例如,想要对某台上线的待部署服务器进行初始化时,可能需要对这个待部署服务器采用单独、零散的初始化的方式,效率非常低下。现有技术缺乏对待部署服务器的内部环境进行统一部署和管理的机制。

本发明实施例中,对于连入图1所示的系统的待部署服务器3的内部环境部署和管理中的每一服务,例如内部环境初始化,都用统一的服务描述去规范它。服务描述是用一系列规定好的函数语句对服务进行描述,使得以后再需要建立服务时,套用这些函数语句就能够表述清楚该服务。例如,对于内部环境初始化,用安装函数写成服务描述脚本。用服务描述写成脚本后,将其打包,然后将打成的包发布到中央控制服务器2,以便待部署服务器3安装的代理4从中央控制服务器2上拉取所述包,在待部署服务器3上调用安装函数安装所述包中的服务描述脚本,从而执行待部署服务器环境初始化。这样,就使得对于联网的待部署服务器3的内部环境部署和管理中的每一服务,都具有规范性和统一性。

如图2所示,根据本发明的一个实施例,还提供了一种服务器环境部署方法。这里的服务器环境指待部署服务器内部环境,包括待部署服务器中的各配置参数、安装的操作系统等等,这些都对待部署服务器内数据和应用的运行产生重要影响。所述方法包括:

s210、将用安装函数写成的用于待部署服务器环境初始化的服务描述脚本打成初始化服务描述包;

s220、将所述初始化服务描述包发布到中央控制服务器,以便待部署服务器安装的代理从中央控制服务器上拉取所述初始化服务描述包,在待部署服务器上调用安装函数安装所述初始化服务描述包中的服务描述脚本,从而执行待部署服务器环境初始化。

下面对步骤s210-s220进行详细描述。

步骤s210、将用安装函数写成的用于待部署服务器环境初始化的服务描述脚本打成初始化服务描述包。

安装函数即install(),是进行初始化环境时在心跳时执行的函数,将需要的初始化逻辑写在函数中。这样,就可以直接用安装函数写成用于待部署服务器环境初始化的服务描述脚本。用install()写成的用于待部署服务器环境初始化的服务描述脚本的一个例子如:

在一个实施例中,将写成的服务描述脚本打成初始化服务描述包的方法是:将写成的服务描述脚本加上执行脚本函数所需的基础程序、以及所需的系统文件打成包。执行脚本函数所需的基础程序例如所需各种函数等。所需的系统文件是打包时自动会加上的系统文件,这对于本领域来说是公知的。打成一个统一格式的包的好处是,统一各种服务场景下分发服务描述或服务描述脚本的格式,使服务描述的分发规范化。

步骤s220、将所述初始化服务描述包发布到中央控制服务器,以便待部署服务器安装的代理从中央控制服务器上拉取所述初始化服务描述包,在待部署服务器上调用安装函数安装所述初始化服务描述包中的服务描述脚本,从而执行待部署服务器环境初始化。

打成初始化服务描述包后,策略管理平台1将初始化服务描述包发布到中央控制服务器2。中央控制服务器下属各待部署服务器3安装的代理4从中央控制服务器2上拉取所述初始化服务描述包。由于打成的初始化服务描述包中有执行脚本函数所需的基础程序,代理4可以在待部署服务器3上调用其中的安装函数安装所述初始化服务描述包中的服务描述脚本。执行该服务描述脚本的结果就是完成了待部署服务器3环境初始化。

如果待部署服务器3以前未初始化,则直接调用安装函数安装服务描述脚本并执行后可以完成初始化。如果待部署服务器3以前初始化过,则需要先调用卸载函数uninstall()卸载待部署服务器3本身已存在的服务描述脚本。卸载函数uninstall()的一个具体例子例如:

在另一个实施例中,如图3所示,所述方法还包括:

s310、将用安装函数写成的用于使各待部署服务器环境中的参数一致化的服务描述脚本打成一致化服务描述包;

s320、将所述一致化服务描述包发布到中央控制服务器,以便待部署服务器安装的代理从中央控制服务器上拉取所述一致化服务描述包,在待部署服务器上调用安装函数安装所述一致化服务描述包中的服务描述脚本,调用检查函数检查待部署服务器的环境参数与所述一致化服务描述包中的服务描述脚本中的环境参数是否发生变化,如果发生变化,调用应用函数用所述一致化服务描述包中的服务描述脚本中的环境参数刷新待部署服务器的环境参数。

下面对步骤s310-s320进行详细描述。

步骤s310、将用安装函数写成的用于使各待部署服务器环境中的参数一致化的服务描述脚本打成一致化服务描述包。

使各待部署服务器环境中的参数一致化的含义是:在对各待部署服务器环境进行了初始化后,由于各待部署服务器在使用过程中用户可能自行调整了某些环境参数,或者待部署服务器用户下载了某些应用而应用修改了某些环境参数,经常会出现各待部署服务器环境参数又变得不一致的情况下,使各待部署服务器环境中的参数一致化即在这些环境参数不一致的情况下使它们重新变得一致。

用于使各待部署服务器环境中的参数一致化的服务描述脚本仍是用安装函数install()写成的。将使各待部署服务器环境中的参数一致化需要的逻辑写在函数中。这样,就可以直接用安装函数写成用于使各待部署服务器环境中的参数一致化的服务描述脚本。用install()写成的用于使各待部署服务器环境中的参数一致化的服务描述脚本的一个例子如:

在一个实施例中,将写成的服务描述脚本打成一致化服务描述包的方法是:将写成的服务描述脚本加上执行脚本函数所需的基础程序、以及所需的系统文件打成包。执行脚本函数所需的基础程序例如所需各种函数等。所需的系统文件是打包时自动会加上的系统文件,这对于本领域来说是公知的。打成一个统一格式的包的好处是,统一各种服务场景下分发服务描述或服务描述脚本的格式,使服务描述的分发规范化。

步骤s320、将所述一致化服务描述包发布到中央控制服务器,以便待部署服务器安装的代理从中央控制服务器上拉取所述一致化服务描述包,在待部署服务器上调用安装函数安装所述一致化服务描述包中的服务描述脚本,调用检查函数检查待部署服务器的环境参数与所述一致化服务描述包中的服务描述脚本中的环境参数是否发生变化,如果发生变化,调用应用函数用所述一致化服务描述包中的服务描述脚本中的环境参数刷新待部署服务器的环境参数。

打成一致化服务描述包后,策略管理平台1将一致化服务描述包发布到中央控制服务器2。中央控制服务器下属各待部署服务器3安装的代理4从中央控制服务器2上拉取所述一致化服务描述包。由于打成的一致化服务描述包中有执行脚本函数所需的基础程序,代理4可以在待部署服务器3上调用其中的安装函数安装所述一致化服务描述包中的服务描述脚本。然后,调用检查函数check()检查待部署服务器的环境参数与所述一致化服务描述包中的服务描述脚本中的环境参数是否发生变化。检查函数check()的一个具体的例子例如:

如果利用检查函数check()检查待部署服务器的环境参数与所述一致化服务描述包中的服务描述脚本中的环境参数是否发生变化的结果是发生了变化,则调用应用函数apply()用所述一致化服务描述包中的服务描述脚本中的环境参数刷新待部署服务器的环境参数。应用函数apply()的一个具体的例子例如:

如图4所示,在另一个实施例中,所述方法包括:

s410、将用安装函数写成的用于使待部署服务器环境中的特定服务保持启动状态的服务描述脚本打成服务保活服务描述包;

s420、将所述服务保活服务描述包发布到中央控制服务器,以便待部署服务器安装的代理从中央控制服务器上拉取所述服务保活服务描述包,在待部署服务器上调用安装函数安装所述服务保活服务描述包中的服务描述脚本,调用状态函数在待部署服务器检查服务描述脚本中需要保持启动状态的服务是否保持启动状态,并调用启动函数将需要保持启动状态而未启动的服务启动。

下面对步骤s410-s420进行详细描述。

步骤s410、将用安装函数写成的用于使待部署服务器环境中的特定服务保持启动状态的服务描述脚本打成服务保活服务描述包。

使待部署服务器环境中的特定服务保持启动状态,即服务保活,是指:待部署服务器环境中的某些服务,在使用过程中,可能被服务器的管理员关闭(例如gps功能用户可能会关闭),但某些服务可能对于平台持续提高精准服务至关重要(例如gps功能),平台可能希望每个待部署服务器的特定功能一直保持启动,因此,需要服务保活,针对某些特定服务,使其在待部署服务器环境中一致启动。

用于使待部署服务器环境中的特定服务保持启动状态的服务描述脚本仍是用安装函数install()写成的。将使待部署服务器环境中的特定服务保持启动状态需要的逻辑写在函数中。这样,就可以直接用安装函数写成用于使待部署服务器环境中的特定服务保持启动状态的服务描述脚本。

在一个实施例中,将写成的服务描述脚本打成服务保活服务描述包的方法是:将写成的服务描述脚本加上执行脚本函数所需的基础程序、以及所需的系统文件打成包。执行脚本函数所需的基础程序例如所需各种函数等。所需的系统文件是打包时自动会加上的系统文件,这对于本领域来说是公知的。打成一个统一格式的包的好处是,统一各种服务场景下分发服务描述或服务描述脚本的格式,使服务描述的分发规范化。

步骤s420、将所述服务保活服务描述包发布到中央控制服务器,以便待部署服务器安装的代理从中央控制服务器上拉取所述服务保活服务描述包,在待部署服务器上调用安装函数安装所述服务保活服务描述包中的服务描述脚本,调用状态函数在待部署服务器检查服务描述脚本中需要保持启动状态的服务是否保持启动状态,并调用启动函数将需要保持启动状态而未启动的服务启动。

打成服务保活服务描述包后,策略管理平台1将服务保活服务描述包发布到中央控制服务器2。中央控制服务器下属各待部署服务器3安装的代理4从中央控制服务器2上拉取所述服务保活服务描述包。由于打成的服务保活服务描述包中有执行脚本函数所需的基础程序,代理4可以在待部署服务器3上调用其中的安装函数安装所述服务保活服务描述包中的服务描述脚本。然后,调用状态函数status()在待部署服务器检查服务描述脚本中需要保持启动状态的服务是否保持启动状态,如果未保持在启动状态,调用启动函数start()将需要保持启动状态而未启动的服务启动。另外,调用状态函数status()也可以在待部署服务器检查服务描述脚本中不需要保持启动状态的服务是否在不启动状态,如果在启动状态,也可以调用停止函数stop()将这些服务关闭。

本发明实施例中,对于服务器的内部环境部署和管理中的每一服务,例如内部环境初始化、一致化、服务保活,都用统一的服务描述去规范它,例如用安装函数写成服务描述脚本,并将其打包,然后将所述服务描述包发布到中央控制服务器,以便待部署服务器安装的代理从中央控制服务器上拉取所述服务描述包,在待部署服务器上调用安装函数安装所述服务描述包中的服务描述脚本,从而执行待部署服务器环境初始化、一致化或服务保活。这样,就使得对于联网的待部署服务器的内部环境部署和管理中的每一服务,都具有规范性和统一性。

本发明实施例中,将服务描述包分布到中央控制服务器进而让待部署服务器安装的代理拉取可以采用http方式和p2p方式两种。对于比较小的包,http方式比较简单有效;对于比较大的包,例如几个g比特的包,例如baseenv的服务分发,可以采用p2p方式分发。

另外,可以在中央控制服务器设置专用区域,即索引区,用于存放各服务描述包(一致化服务描述包、初始化服务描述包、服务保活服务描述包)放置在中央控制服务器的位置信息,以便待部署服务器安装的代理按照该位置信息从中央控制服务器上拉取各服务描述包。该索引区还可以放置各服务描述包的版本号。下面是索引区存放的内容的一个例子:

上面的例子按一致化服务描述包、初始化服务描述包、服务保活服务描述包的顺序描述了各服务描述包在中央控制服务器上存放的地址和版本号。代理4从中央控制服务器2拉取服务描述包时,先从该索引区获得其要拉取的服务描述包(例如初始化服务描述包)在中央控制服务器上存放的地址,再按该地址找到该服务描述包进行拉取,达到了方便代理拉取服务描述包的作用。

上述方法主要用于对联网的待部署服务器的内部环境进行统一部署,例如统一初始化、一致化等。但统一部署后,还是会有一些新的待部署服务器需要加入网络(上线),一些已上线的待部署服务器需要退出网络(下线)、或者对待部署服务器安装的服务描述脚本进行变动等,现有技术对于这样的情形,需要人工进行,执行效率低。本发明实施例还能针对新的待部署服务器上线、一些已上线的待部署服务器下线、或者对待部署服务器安装的服务描述脚本进行变动等情形,提高其执行效率。

如图5所示,根据本发明的一个实施例,该方法还可以包括:

s510、接收对待部署服务器进行变动的目标描述;

s520、将所述目标描述拆解成多个任务单,每个任务单包括一个任务,每个任务包括多个子任务;

s530、让所述多个任务单包括的各任务进入任务队列排队;

s540、为排队的各任务分别分配一个进程,其中,一个进程中有多个线程,调度进入进程的任务中的各子任务分别进入该进程中的多个线程之一,在每个线程中,将进入线程的子任务放入中央控制服务器,由该子任务相关的待部署服务器上的代理拉取该子任务到所述待部署服务器上执行。

下面对步骤s510-s540进行详细描述。

步骤s510、接收对待部署服务器进行变动的目标描述。

在一个实施例中,对待部署服务器进行变动包括以下中的至少一个:对待部署服务器上安装的服务描述脚本进行变动、对是否将待部署服务器连到中央控制服务器进行变动、对待部署服务器所述的分组进行变动。

对待部署服务器上安装的服务描述脚本进行变动是指:对联网的待部署服务器的内部环境利用如上所述的方法进行统一部署(例如统一初始化、一致化等)后,由于种种原因(例如发现以前为待部署服务器部署的描述脚本有错误,或者需要对为待部署服务器部署的描述脚本进行升级),需要对部署在待部署服务器上的服务描述脚本进行变动。这种变动包括增加、删除、改变中的至少一个。例如,在待部署服务器增加新的服务描述脚本、删除待部署服务器上已经部署的某些服务描述脚本、将待部署服务器上已经部署的某些服务描述脚本的内容改成新的内容。

对是否将待部署服务器连到中央控制服务器进行变动是指:对联网的待部署服务器的内部环境利用如上所述的方法进行统一部署(例如统一初始化、一致化等)后,发现又需要将某一原本不连接到中央控制服务器的待部署服务器连接到中央控制服务器,或者某一已连接到中央控制服务器并部署了服务描述脚本的待部署服务器已经不再需要连接到中央控制服务器,则需要对是否将待部署服务器连到中央控制服务器进行变动。这种变动包括增加、删除、改变中的至少一个。例如,将某一原本不连接到中央控制服务器的待部署服务器连接到中央控制服务器(上线),将某一已连接到中央控制服务器的待部署服务器与中央控制服务器断开(下线),或将原连接到某一中央控制服务器的待部署服务器改连接到另一中央控制服务器。

分组是指在图1所示的网络中待部署服务器所属的组。在图1所示的网络中,出于对具有类似属性的待部署服务器进行分类的需求考虑,需要将具有类似属性的待部署服务器分成一组。例如,企业服务器分成一组,家庭服务器分成一组。这是考虑到企业用户和家庭用户等在环境部署或服务器变动管理上可能具有不同的特点和需求。对待部署服务器所属的分组进行变动是指:对待部署服务器所述的分组进行增加、删除、改变中的至少一个。例如,原来只有企业服务器和家庭服务器两种分组,现在增加机关团体服务器这种分组;原来有企业服务器、家庭服务器、机关团体服务器三种分组,将机关团体服务器这种分组删除;原来某待部署服务器属于企业服务器,现将其改为属于家庭服务器。

对待部署服务器进行变动的目标描述是指策略管理平台1上的管理员关于对待部署服务器上安装的服务描述脚本进行变动、对是否将待部署服务器连到中央控制服务器进行变动、对待部署服务器所述的分组进行变动的需求的描述。例如,管理员需要分2天增加100台待部署服务器上线,其中第一天上线40台,第二天上线60台,则该描述可能包括:2天(可能还包括具体哪两天)、第一天增加40台上线、第二天增加60台上线、这40台和60台待部署服务器的标识。再如,管理员需要在3天内改变1000台已上线的待部署服务器上安装的服务描述脚本并对这1000台待部署服务器所属的分组进行更改,其中第一天改变200台,第二天改变300台,第三天改变500台,则该描述包括:3天(可能还包括具体哪3天)、第一天改变200台、第二天改变300台、第三天改变500台、这200、300、500台待部署服务器的标识、将其上的哪部分服务描述替换成什么样的服务描述、这200、300、500台待部署服务器要更改成的分组。一般可以通过让管理员填写页面的输入框的形式。在向管理员显示的页面呈现若干输入框,分别用于管理员输入以上目标描述中所需要的内容,管理员填写后,填写的内容编译成机器可理解的语言,就成为所述目标描述。

步骤s520、将所述目标描述拆解成多个任务单,每个任务单包括一个任务,每个任务包括多个子任务。

在目标描述包括对待部署服务器上安装的服务描述脚本进行变动的目标描述、对是否将待部署服务器连到中央控制服务器进行变动的目标描述、对待部署服务器所属的分组进行变动的目标描述中的至少两种的情况下,可以针对对待部署服务器上安装的服务描述脚本进行变动的目标描述、对是否将待部署服务器连到中央控制服务器进行变动的目标描述、对待部署服务器所属的分组进行变动的目标描述分别拆成不同的任务单。例如,将对待部署服务器上安装的服务描述脚本进行变动的目标描述拆成一个任务单,对待部署服务器上安装的服务描述脚本进行变动的任务为任务单中的任务;将对是否将待部署服务器连到中央控制服务器进行变动的目标描述拆成一个任务单,对是否将待部署服务器连到中央控制服务器进行变动的任务为任务单中的任务;将对待部署服务器所属的分组进行变动的目标描述拆成一个任务单,对待部署服务器所属的分组进行变动的任务为任务单中的任务。

将对待部署服务器上安装的服务描述脚本进行变动的目标描述涉及的任务、对是否将待部署服务器连到中央控制服务器进行变动的目标描述涉及的任务、对待部署服务器所述的分组进行变动的目标描述涉及的任务分别放在从先到后依次执行的不同任务单中的好处是实现任务互斥,保证任务执行的一致性,防止例如正在对某一待部署服务器上安装的服务描述脚本进行更新时发生使该待部署服务器下线的冲突情况,保持不同层级的任务都得到有序的执行,而不会发生冲突,造成错误。

在目标描述包含若干批次的工作的描述、且必须在一个批次的工作执行完后才能进行下一个批次的工作时,可以将每个批次的工作放在一个任务单中,作为一个任务。例如,在目标描述包括2天(可能还包括具体哪两天)、第一天增加40台上线、第二天增加60台上线、这40台和60台待部署服务器的标识的情况下,将第一天增加40台上线拆成第一个任务单,这40台上线作为一个任务;将第二天增加60台上线拆成晚于第一个任务单执行的第二个任务单,这60台上线作为一个任务。

任务中每涉及一个服务器的工作作为一个子任务。

以上述将第一天增加40台上线拆成第一个任务单、将第二天增加60台上线拆成晚于第一个任务单执行的第二个任务单为例。对于第一天的40台上线,这40台每一台的上线作为一个子任务,一共40个子任务;对于第二天的60台上线,这60台每一台的上线作为一个子任务,一共60个子任务。

步骤s530、让所述多个任务单包括的各任务进入任务队列排队。

在一个实施例中,该步骤包括:按照事先确定的顺序,让所述多个任务单包括的各任务进入任务队列排队。

例如,在将对待部署服务器上安装的服务描述脚本进行变动的目标描述拆成一个任务单、将对是否将待部署服务器连到中央控制服务器进行变动的目标描述拆成一个任务单、将对待部署服务器所属的分组进行变动的目标描述拆成一个任务单的情况下,事先确定的顺序是:让对待部署服务器上安装的服务描述脚本进行变动的目标描述拆成的任务单中的任务排在最前面,让将对是否将待部署服务器连到中央控制服务器进行变动的目标描述拆成的任务单中的任务排在其次,让将对待部署服务器所属的分组进行变动的目标描述拆成的任务单中的任务排在最后。当然,也可以事先确定其它的顺序。这样,各任务在任务队列排队的顺序就是它们执行的顺序。

再例如,在上述将第一天增加40台上线拆成第一个任务单、将第二天增加60台上线拆成晚于第一个任务单执行的第二个任务单的例子中,事先确定的顺序是:让第一天增加40台上线的任务单中的任务排在前面,让第二天增加60台上线的任务单中的任务排在前面。

步骤s540、为排队的各任务分别分配一个进程,其中,一个进程中有多个线程,调度进入进程的任务中的各子任务分别进入该进程中的多个线程之一,在每个线程中,将进入线程的子任务放入中央控制服务器,由该子任务相关的待部署服务器上的代理拉取该子任务到所述待部署服务器上执行。

以上述将第一天增加40台上线拆成第一个任务单、将第二天增加60台上线拆成晚于第一个任务单执行的第二个任务单为例。对于第一天的40台上线,这40台每一台的上线作为一个子任务,一共40个子任务,分别表示为t1、t2……t50。对应的进程中有5个线程p1-p5。先调度子任务t1、t2、t3、t4、t5分别进入进程p1、p2、p3、p4、p5。在五个线程中哪个线程先执行完,都调度下一个子任务进入该线程。例如,线程p3先执行完子任务t3,就调度后面的子任务t6进入p3。接着,线程p2又执行完子任务t2,就调度后面的子任务t7进入p2。这样,就利用线程并行化,使得处理能力最大化,大大提高了任务单中任务执行效率。

在任务线程中,将进入线程的任务放入中央控制服务器2,由该子任务相关的待部署服务器3上的代理4拉取该进入该子任务到所述待部署服务器3上执行。例如,子任务t1是对待部署服务器c1进行上线,负责连接待部署服务器c1的中央控制服务器是s1。在子任务t1进入线程p1后,就将子任务t1放入中央控制服务器s1,由待部署服务器c1上的代理a1从中央控制服务器s1上拉取该子任务t1到待部署服务器c1上执行。

通过步骤s510-s540的自动化过程,解决了一些新的待部署服务器需要加入网络(上线)、一些已上线的待部署服务器需要退出网络(下线)、或者对待部署服务器安装的服务描述脚本进行变动等情形下现有技术需要人工一一执行、效率低下的问题。本发明通过自动将对待部署服务器进行变动的目的描述拆解成任务单,并让任务单的任务排队,任务的子任务自动进入并行的线程执行,提高了对待部署服务器进行变动的处理效率,同时提高了协同化处理程度。

在一个实施例中,本步骤包括:排队顺序在先的任务在进程中执行完后,排队顺序在后的任务才能进入进程执行。

例如,在上述将第一天增加40台上线拆成第一个任务单、将第二天增加60台上线拆成晚于第一个任务单执行的第二个任务单的例子中,在任务队列中,让第一天增加40台上线的任务单中的任务排在前面,让第二天增加60台上线的任务单中的任务排在前面。在40台上线的任务执行完后,60台上线的任务才能进入进程执行。

通过这种方式,解决了灰度变更等问题。灰度变更即分次分批的变更。例如,要对所有上线待部署服务器上安装的服务描述脚本进行20%、50%、100%的变更,即先将所有上线待部署服务器中的20%待部署服务器安装的服务描述脚本进行变更,观察这20%待部署服务器的反应。如果反应良好,就将所有上线待部署服务器中的50%待部署服务器安装的服务描述脚本进行变更,即追加30%待部署服务器安装的服务描述脚本进行变更。如果这50%待部署服务器仍然反应良好,就将所有上线待部署服务器安装的服务描述脚本进行变更,即追加50%待部署服务器安装的服务描述脚本进行变更。灰度上线作为灰度变更的一种特例,是指分次分批的上线。例如,要对进行20%、50%、100%的待部署服务器上线,即先将要上线的所有待部署服务器的20%待部署服务器上线,观察这20%待部署服务器的反应。如果反应良好,就将要上线的所有待部署服务器的50%待部署服务器上线,即追加30%的待部署服务器上线。如果是50%的待部署服务器仍然反应良好,就将要上线的所有待部署服务器上线,即追加50%的待部署服务器上线。

例如,要上线50台服务器、在2016年12月26日、2016年12月27日、2016年12月28日进行20%、50%、100%的灰度上线。也就是说,先将要上线的所有待部署服务器50台的20%上线,即10台上线,作为第一个任务单,其任务在任务队列中排在最前面。如果反应良好,再追加30%的待部署服务器,即15台上线,作为第二个任务单,其任务在任务队列中排在中间。如果仍然反应良好,就将要上线的所有待部署服务器50台上线,即再追加25台上线,作为第三个任务单,其任务在任务队列中排在最后。先调度10台上线的任务进入对应进程,全部执行完后,15台上线的任务才能进入对应进程,全部执行完后,25台台上线的任务才能进入对应进程。

上述流程的好处是使灰度变更(灰度上线是灰度变更的特例)能够自动化执行,提高灰度变更的效率。现有技术中,灰度变更需要管理员人为操控,选出一个任务进行执行,等该任务中的子任务都执行完后,再选出一个任务进行执行,以此类推,由此达到灰度变更的目的。本发明通过上述流程,让灰度变更的过程自动化,提高了灰度变更的效率。

如图6所示,根据本发明的一个实施例,还提供了一种服务器环境部署装置700。这里的服务器环境指待部署服务器内部环境,包括待部署服务器中的各配置参数、安装的操作系统等等,这些都对待部署服务器内数据和应用的运行产生重要影响。所述装置700包括:

用于将用安装函数写成的用于待部署服务器环境初始化的服务描述脚本打成初始化服务描述包的装置(下简称“第一打包装置”)710;

用于将所述初始化服务描述包发布到中央控制服务器,以便待部署服务器安装的代理从中央控制服务器上拉取所述初始化服务描述包,在待部署服务器上调用安装函数安装所述初始化服务描述包中的服务描述脚本,从而执行待部署服务器环境初始化的装置(下简称“第一发布装置”)720。

下面对装置710和720进行详细描述。

第一打包装置710用于将用安装函数写成的用于待部署服务器环境初始化的服务描述脚本打成初始化服务描述包。

安装函数即install(),是进行初始化环境时在心跳时执行的函数,将需要的初始化逻辑写在函数中。这样,就可以直接用安装函数写成用于待部署服务器环境初始化的服务描述脚本。用install()写成的用于待部署服务器环境初始化的服务描述脚本的一个例子如:

在一个实施例中,将写成的服务描述脚本打成初始化服务描述包的方法是:将写成的服务描述脚本加上执行脚本函数所需的基础程序、以及所需的系统文件打成包。执行脚本函数所需的基础程序例如所需各种函数等。所需的系统文件是打包时自动会加上的系统文件,这对于本领域来说是公知的。打成一个统一格式的包的好处是,统一各种服务场景下分发服务描述或服务描述脚本的格式,使服务描述的分发规范化。

第一发布装置720用于将所述初始化服务描述包发布到中央控制服务器,以便待部署服务器安装的代理从中央控制服务器上拉取所述初始化服务描述包,在待部署服务器上调用安装函数安装所述初始化服务描述包中的服务描述脚本,从而执行待部署服务器环境初始化。

打成初始化服务描述包后,策略管理平台1将初始化服务描述包发布到中央控制服务器2。中央控制服务器下属各待部署服务器3安装的代理4从中央控制服务器2上拉取所述初始化服务描述包。由于打成的初始化服务描述包中有执行脚本函数所需的基础程序,代理4可以在待部署服务器3上调用其中的安装函数安装所述初始化服务描述包中的服务描述脚本。执行该服务描述脚本的结果就是完成了待部署服务器3环境初始化。

如果待部署服务器3以前未初始化,则直接调用安装函数安装服务描述脚本并执行后可以完成初始化。如果待部署服务器3以前初始化过,则需要先调用卸载函数uninstall()卸载待部署服务器3本身已存在的服务描述脚本。卸载函数uninstall()的一个具体例子例如:

在另一个实施例中,所述装置700还包括:

用于将用安装函数写成的用于使各待部署服务器环境中的参数一致化的服务描述脚本打成一致化服务描述包的装置(下简称“第二打包装置”);

用于将所述一致化服务描述包发布到中央控制服务器,以便待部署服务器安装的代理从中央控制服务器上拉取所述一致化服务描述包,在待部署服务器上调用安装函数安装所述一致化服务描述包中的服务描述脚本,调用检查函数检查待部署服务器的环境参数与所述一致化服务描述包中的服务描述脚本中的环境参数是否发生变化,如果发生变化,调用应用函数用所述一致化服务描述包中的服务描述脚本中的环境参数刷新待部署服务器的环境参数的装置(下简称“第二发布装置”)。

第二打包装置用于将用安装函数写成的用于使各待部署服务器环境中的参数一致化的服务描述脚本打成一致化服务描述包。

使各待部署服务器环境中的参数一致化的含义是:在对各待部署服务器环境进行了初始化后,由于各待部署服务器在使用过程中用户可能自行调整了某些环境参数,或者待部署服务器用户下载了某些应用而应用修改了某些环境参数,经常会出现各待部署服务器环境参数又变得不一致的情况下,使各待部署服务器环境中的参数一致化即在这些环境参数不一致的情况下使它们重新变得一致。

用于使各待部署服务器环境中的参数一致化的服务描述脚本仍是用安装函数install()写成的。将使各待部署服务器环境中的参数一致化需要的逻辑写在函数中。这样,就可以直接用安装函数写成用于使各待部署服务器环境中的参数一致化的服务描述脚本。用install()写成的用于使各待部署服务器环境中的参数一致化的服务描述脚本的一个例子如:

在一个实施例中,将写成的服务描述脚本打成一致化服务描述包的方法是:将写成的服务描述脚本加上执行脚本函数所需的基础程序、以及所需的系统文件打成包。执行脚本函数所需的基础程序例如所需各种函数等。所需的系统文件是打包时自动会加上的系统文件,这对于本领域来说是公知的。打成一个统一格式的包的好处是,统一各种服务场景下分发服务描述或服务描述脚本的格式,使服务描述的分发规范化。

第二发布装置用于将所述一致化服务描述包发布到中央控制服务器,以便待部署服务器安装的代理从中央控制服务器上拉取所述一致化服务描述包,在待部署服务器上调用安装函数安装所述一致化服务描述包中的服务描述脚本,调用检查函数检查待部署服务器的环境参数与所述一致化服务描述包中的服务描述脚本中的环境参数是否发生变化,如果发生变化,调用应用函数用所述一致化服务描述包中的服务描述脚本中的环境参数刷新待部署服务器的环境参数。

打成一致化服务描述包后,策略管理平台1将一致化服务描述包发布到中央控制服务器2。中央控制服务器下属各待部署服务器3安装的代理4从中央控制服务器2上拉取所述一致化服务描述包。由于打成的一致化服务描述包中有执行脚本函数所需的基础程序,代理4可以在待部署服务器3上调用其中的安装函数安装所述一致化服务描述包中的服务描述脚本。然后,调用检查函数check()检查待部署服务器的环境参数与所述一致化服务描述包中的服务描述脚本中的环境参数是否发生变化。检查函数check()的一个具体的例子例如:

如果利用检查函数check()检查待部署服务器的环境参数与所述一致化服务描述包中的服务描述脚本中的环境参数是否发生变化的结果是发生了变化,则调用应用函数apply()用所述一致化服务描述包中的服务描述脚本中的环境参数刷新待部署服务器的环境参数。应用函数apply()的一个具体的例子例如:

在另一个实施例中,所述装置700包括:

用于将用安装函数写成的用于使待部署服务器环境中的特定服务保持启动状态的服务描述脚本打成服务保活服务描述包的装置(下简称“第三打包装置”);

用于将所述服务保活服务描述包发布到中央控制服务器,以便待部署服务器安装的代理从中央控制服务器上拉取所述服务保活服务描述包,在待部署服务器上调用安装函数安装所述服务保活服务描述包中的服务描述脚本,调用状态函数在待部署服务器检查服务描述脚本中需要保持启动状态的服务是否保持启动状态,并调用启动函数将需要保持启动状态而未启动的服务启动的装置(下简称“第三发布装置”)。

第三打包装置用于将用安装函数写成的用于使待部署服务器环境中的特定服务保持启动状态的服务描述脚本打成服务保活服务描述包。

使待部署服务器环境中的特定服务保持启动状态,即服务保活,是指:待部署服务器环境中的某些服务,在使用过程中,可能被服务器的管理员关闭(例如gps功能用户可能会关闭),但某些服务可能对于平台持续提高精准服务至关重要(例如gps功能),平台可能希望每个待部署服务器的特定功能一直保持启动,因此,需要服务保活,针对某些特定服务,使其在待部署服务器环境中一致启动。

用于使待部署服务器环境中的特定服务保持启动状态的服务描述脚本仍是用安装函数install()写成的。将使待部署服务器环境中的特定服务保持启动状态需要的逻辑写在函数中。这样,就可以直接用安装函数写成用于使待部署服务器环境中的特定服务保持启动状态的服务描述脚本。

在一个实施例中,将写成的服务描述脚本打成服务保活服务描述包的方法是:将写成的服务描述脚本加上执行脚本函数所需的基础程序、以及所需的系统文件打成包。执行脚本函数所需的基础程序例如所需各种函数等。所需的系统文件是打包时自动会加上的系统文件,这对于本领域来说是公知的。打成一个统一格式的包的好处是,统一各种服务场景下分发服务描述或服务描述脚本的格式,使服务描述的分发规范化。

第三发布装置用于将所述服务保活服务描述包发布到中央控制服务器,以便待部署服务器安装的代理从中央控制服务器上拉取所述服务保活服务描述包,在待部署服务器上调用安装函数安装所述服务保活服务描述包中的服务描述脚本,调用状态函数在待部署服务器检查服务描述脚本中需要保持启动状态的服务是否保持启动状态,并调用启动函数将需要保持启动状态而未启动的服务启动。

打成服务保活服务描述包后,策略管理平台1将服务保活服务描述包发布到中央控制服务器2。中央控制服务器下属各待部署服务器3安装的代理4从中央控制服务器2上拉取所述服务保活服务描述包。由于打成的服务保活服务描述包中有执行脚本函数所需的基础程序,代理4可以在待部署服务器3上调用其中的安装函数安装所述服务保活服务描述包中的服务描述脚本。然后,调用状态函数status()在待部署服务器检查服务描述脚本中需要保持启动状态的服务是否保持启动状态,如果未保持在启动状态,调用启动函数start()将需要保持启动状态而未启动的服务启动。另外,调用状态函数status()也可以在待部署服务器检查服务描述脚本中不需要保持启动状态的服务是否在不启动状态,如果在启动状态,也可以调用停止函数stop()将这些服务关闭。

本发明实施例中,对于服务器的内部环境部署和管理中的每一服务,例如内部环境初始化、一致化、服务保活,都用统一的服务描述去规范它,例如用安装函数写成服务描述脚本,并将其打包,然后将所述服务描述包发布到中央控制服务器,以便待部署服务器安装的代理从中央控制服务器上拉取所述服务描述包,在待部署服务器上调用安装函数安装所述服务描述包中的服务描述脚本,从而执行待部署服务器环境初始化、一致化或服务保活。这样,就使得对于联网的待部署服务器的内部环境部署和管理中的每一服务,都具有规范性和统一性。

本发明实施例中,将服务描述包分布到中央控制服务器进而让待部署服务器安装的代理拉取可以采用http方式和p2p方式两种。对于比较小的包,http方式比较简单有效;对于比较大的包,例如几个g比特的包,例如baseenv的服务分发,可以采用p2p方式分发。

另外,可以在中央控制服务器设置专用区域,即索引区,用于存放各服务描述包(一致化服务描述包、初始化服务描述包、服务保活服务描述包)放置在中央控制服务器的位置信息,以便待部署服务器安装的代理按照该位置信息从中央控制服务器上拉取各服务描述包。该索引区还可以放置各服务描述包的版本号。下面是索引区存放的内容的一个例子:

上面的例子按一致化服务描述包、初始化服务描述包、服务保活服务描述包的顺序描述了各服务描述包在中央控制服务器上存放的地址和版本号。代理4从中央控制服务器2拉取服务描述包时,先从该索引区获得其要拉取的服务描述包(例如初始化服务描述包)在中央控制服务器上存放的地址,再按该地址找到该服务描述包进行拉取,达到了方便代理拉取服务描述包的作用。

上述装置主要用于对联网的待部署服务器的内部环境进行统一部署,例如统一初始化、一致化等。但统一部署后,还是会有一些新的待部署服务器需要加入网络(上线),一些已上线的待部署服务器需要退出网络(下线)、或者对待部署服务器安装的服务描述脚本进行变动等,现有技术对于这样的情形,需要人工进行,执行效率低。本发明实施例还能针对新的待部署服务器上线、一些已上线的待部署服务器下线、或者对待部署服务器安装的服务描述脚本进行变动等情形,提高其执行效率。

根据本发明的一个实施例,该装置700还可以包括:

用于接收对待部署服务器进行变动的目标描述的装置(下简称“目标描述接收装置”);

用于将所述目标描述拆解成多个任务单的装置(下简称“任务单拆解装置”),每个任务单包括一个任务,每个任务包括多个子任务;

用于让所述多个任务单包括的各任务进入任务队列排队的装置(下简称“排队装置”);

用于为排队的各任务分别分配一个进程的装置(下简称“进程分配装置”),其中,一个进程中有多个线程,调度进入进程的任务中的各子任务分别进入该进程中的多个线程之一,在每个线程中,将进入线程的子任务放入中央控制服务器,由该子任务相关的待部署服务器上的代理拉取该子任务到所述待部署服务器上执行。

目标描述接收装置用于接收对待部署服务器进行变动的目标描述。

在一个实施例中,对待部署服务器进行变动包括以下中的至少一个:对待部署服务器上安装的服务描述脚本进行变动、对是否将待部署服务器连到中央控制服务器进行变动、对待部署服务器所述的分组进行变动。

对待部署服务器上安装的服务描述脚本进行变动是指:对联网的待部署服务器的内部环境利用如上所述的方法进行统一部署(例如统一初始化、一致化等)后,由于种种原因(例如发现以前为待部署服务器部署的描述脚本有错误,或者需要对为待部署服务器部署的描述脚本进行升级),需要对部署在待部署服务器上的服务描述脚本进行变动。这种变动包括增加、删除、改变中的至少一个。例如,在待部署服务器增加新的服务描述脚本、删除待部署服务器上已经部署的某些服务描述脚本、将待部署服务器上已经部署的某些服务描述脚本的内容改成新的内容。

对是否将待部署服务器连到中央控制服务器进行变动是指:对联网的待部署服务器的内部环境利用如上所述的方法进行统一部署(例如统一初始化、一致化等)后,发现又需要将某一原本不连接到中央控制服务器的待部署服务器连接到中央控制服务器,或者某一已连接到中央控制服务器并部署了服务描述脚本的待部署服务器已经不再需要连接到中央控制服务器,则需要对是否将待部署服务器连到中央控制服务器进行变动。这种变动包括增加、删除、改变中的至少一个。例如,将某一原本不连接到中央控制服务器的待部署服务器连接到中央控制服务器(上线),将某一已连接到中央控制服务器的待部署服务器与中央控制服务器断开(下线),或将原连接到某一中央控制服务器的待部署服务器改连接到另一中央控制服务器。

分组是指在图1所示的网络中待部署服务器所属的组。在图1所示的网络中,出于对具有类似属性的待部署服务器进行分类的需求考虑,需要将具有类似属性的待部署服务器分成一组。例如,企业服务器分成一组,家庭服务器分成一组。这是考虑到企业用户和家庭用户等在环境部署或服务器变动管理上可能具有不同的特点和需求。对待部署服务器所属的分组进行变动是指:对待部署服务器所述的分组进行增加、删除、改变中的至少一个。例如,原来只有企业服务器和家庭服务器两种分组,现在增加机关团体服务器这种分组;原来有企业服务器、家庭服务器、机关团体服务器三种分组,将机关团体服务器这种分组删除;原来某待部署服务器属于企业服务器,现将其改为属于家庭服务器。

对待部署服务器进行变动的目标描述是指策略管理平台1上的管理员关于对待部署服务器上安装的服务描述脚本进行变动、对是否将待部署服务器连到中央控制服务器进行变动、对待部署服务器所述的分组进行变动的需求的描述。例如,管理员需要分2天增加100台待部署服务器上线,其中第一天上线40台,第二天上线60台,则该描述可能包括:2天(可能还包括具体哪两天)、第一天增加40台上线、第二天增加60台上线、这40台和60台待部署服务器的标识。再如,管理员需要在3天内改变1000台已上线的待部署服务器上安装的服务描述脚本并对这1000台待部署服务器所属的分组进行更改,其中第一天改变200台,第二天改变300台,第三天改变500台,则该描述包括:3天(可能还包括具体哪3天)、第一天改变200台、第二天改变300台、第三天改变500台、这200、300、500台待部署服务器的标识、将其上的哪部分服务描述替换成什么样的服务描述、这200、300、500台待部署服务器要更改成的分组。一般可以通过让管理员填写页面的输入框的形式。在向管理员显示的页面呈现若干输入框,分别用于管理员输入以上目标描述中所需要的内容,管理员填写后,填写的内容编译成机器可理解的语言,就成为所述目标描述。

任务单拆解装置用于将所述目标描述拆解成多个任务单,每个任务单包括一个任务,每个任务包括多个子任务。

在目标描述包括对待部署服务器上安装的服务描述脚本进行变动的目标描述、对是否将待部署服务器连到中央控制服务器进行变动的目标描述、对待部署服务器所属的分组进行变动的目标描述中的至少两种的情况下,可以针对对待部署服务器上安装的服务描述脚本进行变动的目标描述、对是否将待部署服务器连到中央控制服务器进行变动的目标描述、对待部署服务器所属的分组进行变动的目标描述分别拆成不同的任务单。例如,将对待部署服务器上安装的服务描述脚本进行变动的目标描述拆成一个任务单,对待部署服务器上安装的服务描述脚本进行变动的任务为任务单中的任务;将对是否将待部署服务器连到中央控制服务器进行变动的目标描述拆成一个任务单,对是否将待部署服务器连到中央控制服务器进行变动的任务为任务单中的任务;将对待部署服务器所属的分组进行变动的目标描述拆成一个任务单,对待部署服务器所属的分组进行变动的任务为任务单中的任务。

将对待部署服务器上安装的服务描述脚本进行变动的目标描述涉及的任务、对是否将待部署服务器连到中央控制服务器进行变动的目标描述涉及的任务、对待部署服务器所述的分组进行变动的目标描述涉及的任务分别放在从先到后依次执行的不同任务单中的好处是实现任务互斥,保证任务执行的一致性,防止例如正在对某一待部署服务器上安装的服务描述脚本进行更新时发生使该待部署服务器下线的冲突情况,保持不同层级的任务都得到有序的执行,而不会发生冲突,造成错误。

在目标描述包含若干批次的工作的描述、且必须在一个批次的工作执行完后才能进行下一个批次的工作时,可以将每个批次的工作放在一个任务单中,作为一个任务。例如,在目标描述包括2天(可能还包括具体哪两天)、第一天增加40台上线、第二天增加60台上线、这40台和60台待部署服务器的标识的情况下,将第一天增加40台上线拆成第一个任务单,这40台上线作为一个任务;将第二天增加60台上线拆成晚于第一个任务单执行的第二个任务单,这60台上线作为一个任务。

任务中每涉及一个服务器的工作作为一个子任务。

以上述将第一天增加40台上线拆成第一个任务单、将第二天增加60台上线拆成晚于第一个任务单执行的第二个任务单为例。对于第一天的40台上线,这40台每一台的上线作为一个子任务,一共40个子任务;对于第二天的60台上线,这60台每一台的上线作为一个子任务,一共60个子任务。

排队装置用于让所述多个任务单包括的各任务进入任务队列排队。

在一个实施例中,排队装置进一步用于:按照事先确定的顺序,让所述多个任务单包括的各任务进入任务队列排队。

例如,在将对待部署服务器上安装的服务描述脚本进行变动的目标描述拆成一个任务单、将对是否将待部署服务器连到中央控制服务器进行变动的目标描述拆成一个任务单、将对待部署服务器所属的分组进行变动的目标描述拆成一个任务单的情况下,事先确定的顺序是:让对待部署服务器上安装的服务描述脚本进行变动的目标描述拆成的任务单中的任务排在最前面,让将对是否将待部署服务器连到中央控制服务器进行变动的目标描述拆成的任务单中的任务排在其次,让将对待部署服务器所属的分组进行变动的目标描述拆成的任务单中的任务排在最后。当然,也可以事先确定其它的顺序。这样,各任务在任务队列排队的顺序就是它们执行的顺序。

再例如,在上述将第一天增加40台上线拆成第一个任务单、将第二天增加60台上线拆成晚于第一个任务单执行的第二个任务单的例子中,事先确定的顺序是:让第一天增加40台上线的任务单中的任务排在前面,让第二天增加60台上线的任务单中的任务排在前面。

进程分配装置用于为排队的各任务分别分配一个进程,其中,一个进程中有多个线程,调度进入进程的任务中的各子任务分别进入该进程中的多个线程之一,在每个线程中,将进入线程的子任务放入中央控制服务器,由该子任务相关的待部署服务器上的代理拉取该子任务到所述待部署服务器上执行。

以上述将第一天增加40台上线拆成第一个任务单、将第二天增加60台上线拆成晚于第一个任务单执行的第二个任务单为例。对于第一天的40台上线,这40台每一台的上线作为一个子任务,一共40个子任务,分别表示为t1、t2……t50。对应的进程中有5个线程p1-p5。先调度子任务t1、t2、t3、t4、t5分别进入进程p1、p2、p3、p4、p5。在五个线程中哪个线程先执行完,都调度下一个子任务进入该线程。例如,线程p3先执行完子任务t3,就调度后面的子任务t6进入p3。接着,线程p2又执行完子任务t2,就调度后面的子任务t7进入p2。这样,就利用线程并行化,使得处理能力最大化,大大提高了任务单中任务执行效率。

在任务线程中,将进入线程的任务放入中央控制服务器2,由该子任务相关的待部署服务器3上的代理4拉取该进入该子任务到所述待部署服务器3上执行。例如,子任务t1是对待部署服务器c1进行上线,负责连接待部署服务器c1的中央控制服务器是s1。在子任务t1进入线程p1后,就将子任务t1放入中央控制服务器s1,由待部署服务器c1上的代理a1从中央控制服务器s1上拉取该子任务t1到待部署服务器c1上执行。

通过上述自动化过程,解决了一些新的待部署服务器需要加入网络(上线)、一些已上线的待部署服务器需要退出网络(下线)、或者对待部署服务器安装的服务描述脚本进行变动等情形下现有技术需要人工一一执行、效率低下的问题。本发明通过自动将对待部署服务器进行变动的目的描述拆解成任务单,并让任务单的任务排队,任务的子任务自动进入并行的线程执行,提高了对待部署服务器进行变动的处理效率,同时提高了协同化处理程度。

在一个实施例中,本装置进一步用于:排队顺序在先的任务在进程中执行完后,排队顺序在后的任务才能进入进程执行。

例如,在上述将第一天增加40台上线拆成第一个任务单、将第二天增加60台上线拆成晚于第一个任务单执行的第二个任务单的例子中,在任务队列中,让第一天增加40台上线的任务单中的任务排在前面,让第二天增加60台上线的任务单中的任务排在前面。在40台上线的任务执行完后,60台上线的任务才能进入进程执行。

通过这种方式,解决了灰度变更等问题。灰度变更即分次分批的变更。例如,要对所有上线待部署服务器上安装的服务描述脚本进行20%、50%、100%的变更,即先将所有上线待部署服务器中的20%待部署服务器安装的服务描述脚本进行变更,观察这20%待部署服务器的反应。如果反应良好,就将所有上线待部署服务器中的50%待部署服务器安装的服务描述脚本进行变更,即追加30%待部署服务器安装的服务描述脚本进行变更。如果这50%待部署服务器仍然反应良好,就将所有上线待部署服务器安装的服务描述脚本进行变更,即追加50%待部署服务器安装的服务描述脚本进行变更。灰度上线作为灰度变更的一种特例,是指分次分批的上线。例如,要对进行20%、50%、100%的待部署服务器上线,即先将要上线的所有待部署服务器的20%待部署服务器上线,观察这20%待部署服务器的反应。如果反应良好,就将要上线的所有待部署服务器的50%待部署服务器上线,即追加30%的待部署服务器上线。如果是50%的待部署服务器仍然反应良好,就将要上线的所有待部署服务器上线,即追加50%的待部署服务器上线。

例如,要上线50台服务器、在2016年12月26日、2016年12月27日、2016年12月28日进行20%、50%、100%的灰度上线。也就是说,先将要上线的所有待部署服务器50台的20%上线,即10台上线,作为第一个任务单,其任务在任务队列中排在最前面。如果反应良好,再追加30%的待部署服务器,即15台上线,作为第二个任务单,其任务在任务队列中排在中间。如果仍然反应良好,就将要上线的所有待部署服务器50台上线,即再追加25台上线,作为第三个任务单,其任务在任务队列中排在最后。先调度10台上线的任务进入对应进程,全部执行完后,15台上线的任务才能进入对应进程,全部执行完后,25台台上线的任务才能进入对应进程。

上述流程的好处是使灰度变更(灰度上线是灰度变更的特例)能够自动化执行,提高灰度变更的效率。现有技术中,灰度变更需要管理员人为操控,选出一个任务进行执行,等该任务中的子任务都执行完后,再选出一个任务进行执行,以此类推,由此达到灰度变更的目的。本发明通过上述流程,让灰度变更的过程自动化,提高了灰度变更的效率。

图7示出了适于用来实现本发明实施方式的示例性设备12的框图。图7显示的设备12仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。

如图7所示,设备12以通用计算设备的形式表现。设备12的组件可以包括但不限于:一个或者多个处理器或者处理单元16,系统存储器28,连接不同系统组件(包括系统存储器28和处理单元16)的总线18。

总线18表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(isa)总线,微通道体系结构(mac)总线,增强型isa总线、视频电子标准协会(vesa)局域总线以及外围组件互连(pci)总线。

设备12典型地包括多种计算机系统可读介质。这些介质可以是任何能够被设备12访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。

系统存储器28可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(ram)30和/或高速缓存存储器32。计算机系统/中央控制服务器12可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机系统存储介质。仅作为举例,存储系统34可以用于读写不可移动的、非易失性磁介质(图7未显示,通常称为“硬盘驱动器”)。尽管图7中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如cd-rom,dvd-rom或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线18相连。存储器28可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本发明各实施例的功能。

具有一组(至少一个)程序模块42的程序/实用工具40,可以存储在例如存储器28中,这样的程序模块42包括——但不限于——操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块42通常执行本发明所描述的实施例中的功能和/或方法。

设备12也可以与一个或多个外部设备14(例如键盘、指向设备、显示器24等)通信,还可与一个或者多个使得用户能与该设备12交互的设备通信,和/或与使得该设备12能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(i/o)接口22进行。并且,设备12还可以通过网络适配器20与一个或者多个网络(例如局域网(lan),广域网(wan)和/或公共网络,例如因特网)通信。如图所示,网络适配器20通过总线18与设备12的其它模块通信。应当明白,尽管图中未示出,可以结合设备12使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、raid系统、磁带驱动器以及数据备份存储系统等。

处理单元16通过运行存储在系统存储器28中的程序,从而执行各种功能应用以及数据处理,例如实现一种服务器环境部署方法。这里的服务器环境指待部署服务器内部环境,包括待部署服务器中的各配置参数、安装的操作系统等等,这些都对待部署服务器内数据和应用的运行产生重要影响。所述方法包括:

将用安装函数写成的用于待部署服务器环境初始化的服务描述脚本打成初始化服务描述包;

将所述初始化服务描述包发布到中央控制服务器,以便待部署服务器安装的代理从中央控制服务器上拉取所述初始化服务描述包,在待部署服务器上调用安装函数安装所述初始化服务描述包中的服务描述脚本,从而执行待部署服务器环境初始化。

下面对这些步骤进行详细描述。

首先,将用安装函数写成的用于待部署服务器环境初始化的服务描述脚本打成初始化服务描述包。

安装函数即install(),是进行初始化环境时在心跳时执行的函数,将需要的初始化逻辑写在函数中。这样,就可以直接用安装函数写成用于待部署服务器环境初始化的服务描述脚本。用install()写成的用于待部署服务器环境初始化的服务描述脚本的一个例子如:

在一个实施例中,将写成的服务描述脚本打成初始化服务描述包的方法是:将写成的服务描述脚本加上执行脚本函数所需的基础程序、以及所需的系统文件打成包。执行脚本函数所需的基础程序例如所需各种函数等。所需的系统文件是打包时自动会加上的系统文件,这对于本领域来说是公知的。打成一个统一格式的包的好处是,统一各种服务场景下分发服务描述或服务描述脚本的格式,使服务描述的分发规范化。

接着,将所述初始化服务描述包发布到中央控制服务器,以便待部署服务器安装的代理从中央控制服务器上拉取所述初始化服务描述包,在待部署服务器上调用安装函数安装所述初始化服务描述包中的服务描述脚本,从而执行待部署服务器环境初始化。

打成初始化服务描述包后,策略管理平台1将初始化服务描述包发布到中央控制服务器2。中央控制服务器下属各待部署服务器3安装的代理4从中央控制服务器2上拉取所述初始化服务描述包。由于打成的初始化服务描述包中有执行脚本函数所需的基础程序,代理4可以在待部署服务器3上调用其中的安装函数安装所述初始化服务描述包中的服务描述脚本。执行该服务描述脚本的结果就是完成了待部署服务器3环境初始化。

如果待部署服务器3以前未初始化,则直接调用安装函数安装服务描述脚本并执行后可以完成初始化。如果待部署服务器3以前初始化过,则需要先调用卸载函数uninstall()卸载待部署服务器3本身已存在的服务描述脚本。卸载函数uninstall()的一个具体例子例如:

在另一个实施例中,所述方法还包括:

将用安装函数写成的用于使各待部署服务器环境中的参数一致化的服务描述脚本打成一致化服务描述包;

将所述一致化服务描述包发布到中央控制服务器,以便待部署服务器安装的代理从中央控制服务器上拉取所述一致化服务描述包,在待部署服务器上调用安装函数安装所述一致化服务描述包中的服务描述脚本,调用检查函数检查待部署服务器的环境参数与所述一致化服务描述包中的服务描述脚本中的环境参数是否发生变化,如果发生变化,调用应用函数用所述一致化服务描述包中的服务描述脚本中的环境参数刷新待部署服务器的环境参数。

下面对这些步骤进行详细描述。

首先,将用安装函数写成的用于使各待部署服务器环境中的参数一致化的服务描述脚本打成一致化服务描述包。

使各待部署服务器环境中的参数一致化的含义是:在对各待部署服务器环境进行了初始化后,由于各待部署服务器在使用过程中用户可能自行调整了某些环境参数,或者待部署服务器用户下载了某些应用而应用修改了某些环境参数,经常会出现各待部署服务器环境参数又变得不一致的情况下,使各待部署服务器环境中的参数一致化即在这些环境参数不一致的情况下使它们重新变得一致。

用于使各待部署服务器环境中的参数一致化的服务描述脚本仍是用安装函数install()写成的。将使各待部署服务器环境中的参数一致化需要的逻辑写在函数中。这样,就可以直接用安装函数写成用于使各待部署服务器环境中的参数一致化的服务描述脚本。用install()写成的用于使各待部署服务器环境中的参数一致化的服务描述脚本的一个例子如:

在一个实施例中,将写成的服务描述脚本打成一致化服务描述包的方法是:将写成的服务描述脚本加上执行脚本函数所需的基础程序、以及所需的系统文件打成包。执行脚本函数所需的基础程序例如所需各种函数等。所需的系统文件是打包时自动会加上的系统文件,这对于本领域来说是公知的。打成一个统一格式的包的好处是,统一各种服务场景下分发服务描述或服务描述脚本的格式,使服务描述的分发规范化。

接着,将所述一致化服务描述包发布到中央控制服务器,以便待部署服务器安装的代理从中央控制服务器上拉取所述一致化服务描述包,在待部署服务器上调用安装函数安装所述一致化服务描述包中的服务描述脚本,调用检查函数检查待部署服务器的环境参数与所述一致化服务描述包中的服务描述脚本中的环境参数是否发生变化,如果发生变化,调用应用函数用所述一致化服务描述包中的服务描述脚本中的环境参数刷新待部署服务器的环境参数。

打成一致化服务描述包后,策略管理平台1将一致化服务描述包发布到中央控制服务器2。中央控制服务器下属各待部署服务器3安装的代理4从中央控制服务器2上拉取所述一致化服务描述包。由于打成的一致化服务描述包中有执行脚本函数所需的基础程序,代理4可以在待部署服务器3上调用其中的安装函数安装所述一致化服务描述包中的服务描述脚本。然后,调用检查函数check()检查待部署服务器的环境参数与所述一致化服务描述包中的服务描述脚本中的环境参数是否发生变化。检查函数check()的一个具体的例子例如:

如果利用检查函数check()检查待部署服务器的环境参数与所述一致化服务描述包中的服务描述脚本中的环境参数是否发生变化的结果是发生了变化,则调用应用函数apply()用所述一致化服务描述包中的服务描述脚本中的环境参数刷新待部署服务器的环境参数。应用函数apply()的一个具体的例子例如:

在另一个实施例中,所述方法包括:

将用安装函数写成的用于使待部署服务器环境中的特定服务保持启动状态的服务描述脚本打成服务保活服务描述包;

将所述服务保活服务描述包发布到中央控制服务器,以便待部署服务器安装的代理从中央控制服务器上拉取所述服务保活服务描述包,在待部署服务器上调用安装函数安装所述服务保活服务描述包中的服务描述脚本,调用状态函数在待部署服务器检查服务描述脚本中需要保持启动状态的服务是否保持启动状态,并调用启动函数将需要保持启动状态而未启动的服务启动。

下面对这些步骤进行详细描述。

首先,将用安装函数写成的用于使待部署服务器环境中的特定服务保持启动状态的服务描述脚本打成服务保活服务描述包。

使待部署服务器环境中的特定服务保持启动状态,即服务保活,是指:待部署服务器环境中的某些服务,在使用过程中,可能被服务器的管理员关闭(例如gps功能用户可能会关闭),但某些服务可能对于平台持续提高精准服务至关重要(例如gps功能),平台可能希望每个待部署服务器的特定功能一直保持启动,因此,需要服务保活,针对某些特定服务,使其在待部署服务器环境中一致启动。

用于使待部署服务器环境中的特定服务保持启动状态的服务描述脚本仍是用安装函数install()写成的。将使待部署服务器环境中的特定服务保持启动状态需要的逻辑写在函数中。这样,就可以直接用安装函数写成用于使待部署服务器环境中的特定服务保持启动状态的服务描述脚本。

在一个实施例中,将写成的服务描述脚本打成服务保活服务描述包的方法是:将写成的服务描述脚本加上执行脚本函数所需的基础程序、以及所需的系统文件打成包。执行脚本函数所需的基础程序例如所需各种函数等。所需的系统文件是打包时自动会加上的系统文件,这对于本领域来说是公知的。打成一个统一格式的包的好处是,统一各种服务场景下分发服务描述或服务描述脚本的格式,使服务描述的分发规范化。

接着,将所述服务保活服务描述包发布到中央控制服务器,以便待部署服务器安装的代理从中央控制服务器上拉取所述服务保活服务描述包,在待部署服务器上调用安装函数安装所述服务保活服务描述包中的服务描述脚本,调用状态函数在待部署服务器检查服务描述脚本中需要保持启动状态的服务是否保持启动状态,并调用启动函数将需要保持启动状态而未启动的服务启动。

打成服务保活服务描述包后,策略管理平台1将服务保活服务描述包发布到中央控制服务器2。中央控制服务器下属各待部署服务器3安装的代理4从中央控制服务器2上拉取所述服务保活服务描述包。由于打成的服务保活服务描述包中有执行脚本函数所需的基础程序,代理4可以在待部署服务器3上调用其中的安装函数安装所述服务保活服务描述包中的服务描述脚本。然后,调用状态函数status()在待部署服务器检查服务描述脚本中需要保持启动状态的服务是否保持启动状态,如果未保持在启动状态,调用启动函数start()将需要保持启动状态而未启动的服务启动。另外,调用状态函数status()也可以在待部署服务器检查服务描述脚本中不需要保持启动状态的服务是否在不启动状态,如果在启动状态,也可以调用停止函数stop()将这些服务关闭。

本发明实施例中,对于服务器的内部环境部署和管理中的每一服务,例如内部环境初始化、一致化、服务保活,都用统一的服务描述去规范它,例如用安装函数写成服务描述脚本,并将其打包,然后将所述服务描述包发布到中央控制服务器,以便待部署服务器安装的代理从中央控制服务器上拉取所述服务描述包,在待部署服务器上调用安装函数安装所述服务描述包中的服务描述脚本,从而执行待部署服务器环境初始化、一致化或服务保活。这样,就使得对于联网的待部署服务器的内部环境部署和管理中的每一服务,都具有规范性和统一性。

本发明实施例中,将服务描述包分布到中央控制服务器进而让待部署服务器安装的代理拉取可以采用http方式和p2p方式两种。对于比较小的包,http方式比较简单有效;对于比较大的包,例如几个g比特的包,例如baseenv的服务分发,可以采用p2p方式分发。

另外,可以在中央控制服务器设置专用区域,即索引区,用于存放各服务描述包(一致化服务描述包、初始化服务描述包、服务保活服务描述包)放置在中央控制服务器的位置信息,以便待部署服务器安装的代理按照该位置信息从中央控制服务器上拉取各服务描述包。该索引区还可以放置各服务描述包的版本号。下面是索引区存放的内容的一个例子:

上面的例子按一致化服务描述包、初始化服务描述包、服务保活服务描述包的顺序描述了各服务描述包在中央控制服务器上存放的地址和版本号。代理4从中央控制服务器2拉取服务描述包时,先从该索引区获得其要拉取的服务描述包(例如初始化服务描述包)在中央控制服务器上存放的地址,再按该地址找到该服务描述包进行拉取,达到了方便代理拉取服务描述包的作用。

上述方法主要用于对联网的待部署服务器的内部环境进行统一部署,例如统一初始化、一致化等。但统一部署后,还是会有一些新的待部署服务器需要加入网络(上线),一些已上线的待部署服务器需要退出网络(下线)、或者对待部署服务器安装的服务描述脚本进行变动等,现有技术对于这样的情形,需要人工进行,执行效率低。本发明实施例还能针对新的待部署服务器上线、一些已上线的待部署服务器下线、或者对待部署服务器安装的服务描述脚本进行变动等情形,提高其执行效率。

根据本发明的一个实施例,该方法还可以包括:

接收对待部署服务器进行变动的目标描述;

将所述目标描述拆解成多个任务单,每个任务单包括一个任务,每个任务包括多个子任务;

让所述多个任务单包括的各任务进入任务队列排队;

为排队的各任务分别分配一个进程,其中,一个进程中有多个线程,调度进入进程的任务中的各子任务分别进入该进程中的多个线程之一,在每个线程中,将进入线程的子任务放入中央控制服务器,由该子任务相关的待部署服务器上的代理拉取该子任务到所述待部署服务器上执行。

下面对这些步骤进行详细描述。

首先,接收对待部署服务器进行变动的目标描述。

在一个实施例中,对待部署服务器进行变动包括以下中的至少一个:对待部署服务器上安装的服务描述脚本进行变动、对是否将待部署服务器连到中央控制服务器进行变动、对待部署服务器所述的分组进行变动。

对待部署服务器上安装的服务描述脚本进行变动是指:对联网的待部署服务器的内部环境利用如上所述的方法进行统一部署(例如统一初始化、一致化等)后,由于种种原因(例如发现以前为待部署服务器部署的描述脚本有错误,或者需要对为待部署服务器部署的描述脚本进行升级),需要对部署在待部署服务器上的服务描述脚本进行变动。这种变动包括增加、删除、改变中的至少一个。例如,在待部署服务器增加新的服务描述脚本、删除待部署服务器上已经部署的某些服务描述脚本、将待部署服务器上已经部署的某些服务描述脚本的内容改成新的内容。

对是否将待部署服务器连到中央控制服务器进行变动是指:对联网的待部署服务器的内部环境利用如上所述的方法进行统一部署(例如统一初始化、一致化等)后,发现又需要将某一原本不连接到中央控制服务器的待部署服务器连接到中央控制服务器,或者某一已连接到中央控制服务器并部署了服务描述脚本的待部署服务器已经不再需要连接到中央控制服务器,则需要对是否将待部署服务器连到中央控制服务器进行变动。这种变动包括增加、删除、改变中的至少一个。例如,将某一原本不连接到中央控制服务器的待部署服务器连接到中央控制服务器(上线),将某一已连接到中央控制服务器的待部署服务器与中央控制服务器断开(下线),或将原连接到某一中央控制服务器的待部署服务器改连接到另一中央控制服务器。

分组是指在图1所示的网络中待部署服务器所属的组。在图1所示的网络中,出于对具有类似属性的待部署服务器进行分类的需求考虑,需要将具有类似属性的待部署服务器分成一组。例如,企业服务器分成一组,家庭服务器分成一组。这是考虑到企业用户和家庭用户等在环境部署或服务器变动管理上可能具有不同的特点和需求。对待部署服务器所属的分组进行变动是指:对待部署服务器所述的分组进行增加、删除、改变中的至少一个。例如,原来只有企业服务器和家庭服务器两种分组,现在增加机关团体服务器这种分组;原来有企业服务器、家庭服务器、机关团体服务器三种分组,将机关团体服务器这种分组删除;原来某待部署服务器属于企业服务器,现将其改为属于家庭服务器。

对待部署服务器进行变动的目标描述是指策略管理平台1上的管理员关于对待部署服务器上安装的服务描述脚本进行变动、对是否将待部署服务器连到中央控制服务器进行变动、对待部署服务器所述的分组进行变动的需求的描述。例如,管理员需要分2天增加100台待部署服务器上线,其中第一天上线40台,第二天上线60台,则该描述可能包括:2天(可能还包括具体哪两天)、第一天增加40台上线、第二天增加60台上线、这40台和60台待部署服务器的标识。再如,管理员需要在3天内改变1000台已上线的待部署服务器上安装的服务描述脚本并对这1000台待部署服务器所属的分组进行更改,其中第一天改变200台,第二天改变300台,第三天改变500台,则该描述包括:3天(可能还包括具体哪3天)、第一天改变200台、第二天改变300台、第三天改变500台、这200、300、500台待部署服务器的标识、将其上的哪部分服务描述替换成什么样的服务描述、这200、300、500台待部署服务器要更改成的分组。一般可以通过让管理员填写页面的输入框的形式。在向管理员显示的页面呈现若干输入框,分别用于管理员输入以上目标描述中所需要的内容,管理员填写后,填写的内容编译成机器可理解的语言,就成为所述目标描述。

接着,将所述目标描述拆解成多个任务单,每个任务单包括一个任务,每个任务包括多个子任务。

在目标描述包括对待部署服务器上安装的服务描述脚本进行变动的目标描述、对是否将待部署服务器连到中央控制服务器进行变动的目标描述、对待部署服务器所属的分组进行变动的目标描述中的至少两种的情况下,可以针对对待部署服务器上安装的服务描述脚本进行变动的目标描述、对是否将待部署服务器连到中央控制服务器进行变动的目标描述、对待部署服务器所属的分组进行变动的目标描述分别拆成不同的任务单。例如,将对待部署服务器上安装的服务描述脚本进行变动的目标描述拆成一个任务单,对待部署服务器上安装的服务描述脚本进行变动的任务为任务单中的任务;将对是否将待部署服务器连到中央控制服务器进行变动的目标描述拆成一个任务单,对是否将待部署服务器连到中央控制服务器进行变动的任务为任务单中的任务;将对待部署服务器所属的分组进行变动的目标描述拆成一个任务单,对待部署服务器所属的分组进行变动的任务为任务单中的任务。

将对待部署服务器上安装的服务描述脚本进行变动的目标描述涉及的任务、对是否将待部署服务器连到中央控制服务器进行变动的目标描述涉及的任务、对待部署服务器所述的分组进行变动的目标描述涉及的任务分别放在从先到后依次执行的不同任务单中的好处是实现任务互斥,保证任务执行的一致性,防止例如正在对某一待部署服务器上安装的服务描述脚本进行更新时发生使该待部署服务器下线的冲突情况,保持不同层级的任务都得到有序的执行,而不会发生冲突,造成错误。

在目标描述包含若干批次的工作的描述、且必须在一个批次的工作执行完后才能进行下一个批次的工作时,可以将每个批次的工作放在一个任务单中,作为一个任务。例如,在目标描述包括2天(可能还包括具体哪两天)、第一天增加40台上线、第二天增加60台上线、这40台和60台待部署服务器的标识的情况下,将第一天增加40台上线拆成第一个任务单,这40台上线作为一个任务;将第二天增加60台上线拆成晚于第一个任务单执行的第二个任务单,这60台上线作为一个任务。

任务中每涉及一个服务器的工作作为一个子任务。

以上述将第一天增加40台上线拆成第一个任务单、将第二天增加60台上线拆成晚于第一个任务单执行的第二个任务单为例。对于第一天的40台上线,这40台每一台的上线作为一个子任务,一共40个子任务;对于第二天的60台上线,这60台每一台的上线作为一个子任务,一共60个子任务。

接着,让所述多个任务单包括的各任务进入任务队列排队。

在一个实施例中,按照事先确定的顺序,让所述多个任务单包括的各任务进入任务队列排队。

例如,在将对待部署服务器上安装的服务描述脚本进行变动的目标描述拆成一个任务单、将对是否将待部署服务器连到中央控制服务器进行变动的目标描述拆成一个任务单、将对待部署服务器所属的分组进行变动的目标描述拆成一个任务单的情况下,事先确定的顺序是:让对待部署服务器上安装的服务描述脚本进行变动的目标描述拆成的任务单中的任务排在最前面,让将对是否将待部署服务器连到中央控制服务器进行变动的目标描述拆成的任务单中的任务排在其次,让将对待部署服务器所属的分组进行变动的目标描述拆成的任务单中的任务排在最后。当然,也可以事先确定其它的顺序。这样,各任务在任务队列排队的顺序就是它们执行的顺序。

再例如,在上述将第一天增加40台上线拆成第一个任务单、将第二天增加60台上线拆成晚于第一个任务单执行的第二个任务单的例子中,事先确定的顺序是:让第一天增加40台上线的任务单中的任务排在前面,让第二天增加60台上线的任务单中的任务排在前面。

接着,为排队的各任务分别分配一个进程,其中,一个进程中有多个线程,调度进入进程的任务中的各子任务分别进入该进程中的多个线程之一,在每个线程中,将进入线程的子任务放入中央控制服务器,由该子任务相关的待部署服务器上的代理拉取该子任务到所述待部署服务器上执行。

以上述将第一天增加40台上线拆成第一个任务单、将第二天增加60台上线拆成晚于第一个任务单执行的第二个任务单为例。对于第一天的40台上线,这40台每一台的上线作为一个子任务,一共40个子任务,分别表示为t1、t2……t50。对应的进程中有5个线程p1-p5。先调度子任务t1、t2、t3、t4、t5分别进入进程p1、p2、p3、p4、p5。在五个线程中哪个线程先执行完,都调度下一个子任务进入该线程。例如,线程p3先执行完子任务t3,就调度后面的子任务t6进入p3。接着,线程p2又执行完子任务t2,就调度后面的子任务t7进入p2。这样,就利用线程并行化,使得处理能力最大化,大大提高了任务单中任务执行效率。

在任务线程中,将进入线程的任务放入中央控制服务器2,由该子任务相关的待部署服务器3上的代理4拉取该进入该子任务到所述待部署服务器3上执行。例如,子任务t1是对待部署服务器c1进行上线,负责连接待部署服务器c1的中央控制服务器是s1。在子任务t1进入线程p1后,就将子任务t1放入中央控制服务器s1,由待部署服务器c1上的代理a1从中央控制服务器s1上拉取该子任务t1到待部署服务器c1上执行。

通过上述自动化过程,解决了一些新的待部署服务器需要加入网络(上线)、一些已上线的待部署服务器需要退出网络(下线)、或者对待部署服务器安装的服务描述脚本进行变动等情形下现有技术需要人工一一执行、效率低下的问题。本发明通过自动将对待部署服务器进行变动的目的描述拆解成任务单,并让任务单的任务排队,任务的子任务自动进入并行的线程执行,提高了对待部署服务器进行变动的处理效率,同时提高了协同化处理程度。

在一个实施例中,排队顺序在先的任务在进程中执行完后,排队顺序在后的任务才能进入进程执行。

例如,在上述将第一天增加40台上线拆成第一个任务单、将第二天增加60台上线拆成晚于第一个任务单执行的第二个任务单的例子中,在任务队列中,让第一天增加40台上线的任务单中的任务排在前面,让第二天增加60台上线的任务单中的任务排在前面。在40台上线的任务执行完后,60台上线的任务才能进入进程执行。

通过这种方式,解决了灰度变更等问题。灰度变更即分次分批的变更。例如,要对所有上线待部署服务器上安装的服务描述脚本进行20%、50%、100%的变更,即先将所有上线待部署服务器中的20%待部署服务器安装的服务描述脚本进行变更,观察这20%待部署服务器的反应。如果反应良好,就将所有上线待部署服务器中的50%待部署服务器安装的服务描述脚本进行变更,即追加30%待部署服务器安装的服务描述脚本进行变更。如果这50%待部署服务器仍然反应良好,就将所有上线待部署服务器安装的服务描述脚本进行变更,即追加50%待部署服务器安装的服务描述脚本进行变更。灰度上线作为灰度变更的一种特例,是指分次分批的上线。例如,要对进行20%、50%、100%的待部署服务器上线,即先将要上线的所有待部署服务器的20%待部署服务器上线,观察这20%待部署服务器的反应。如果反应良好,就将要上线的所有待部署服务器的50%待部署服务器上线,即追加30%的待部署服务器上线。如果是50%的待部署服务器仍然反应良好,就将要上线的所有待部署服务器上线,即追加50%的待部署服务器上线。

例如,要上线50台服务器、在2016年12月26日、2016年12月27日、2016年12月28日进行20%、50%、100%的灰度上线。也就是说,先将要上线的所有待部署服务器50台的20%上线,即10台上线,作为第一个任务单,其任务在任务队列中排在最前面。如果反应良好,再追加30%的待部署服务器,即15台上线,作为第二个任务单,其任务在任务队列中排在中间。如果仍然反应良好,就将要上线的所有待部署服务器50台上线,即再追加25台上线,作为第三个任务单,其任务在任务队列中排在最后。先调度10台上线的任务进入对应进程,全部执行完后,15台上线的任务才能进入对应进程,全部执行完后,25台台上线的任务才能进入对应进程。

上述流程的好处是使灰度变更(灰度上线是灰度变更的特例)能够自动化执行,提高灰度变更的效率。现有技术中,灰度变更需要管理员人为操控,选出一个任务进行执行,等该任务中的子任务都执行完后,再选出一个任务进行执行,以此类推,由此达到灰度变更的目的。本发明通过上述流程,让灰度变更的过程自动化,提高了灰度变更的效率。

另外,根据本发明的一个实施例,还提出了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现:

将用安装函数写成的用于待部署服务器环境初始化的服务描述脚本打成初始化服务描述包;

将所述初始化服务描述包发布到中央控制服务器,以便待部署服务器安装的代理从中央控制服务器上拉取所述初始化服务描述包,在待部署服务器上调用安装函数安装所述初始化服务描述包中的服务描述脚本,从而执行待部署服务器环境初始化。

可选地,该程序被处理器执行时还实现:

将用安装函数写成的用于使各待部署服务器环境中的参数一致化的服务描述脚本打成一致化服务描述包;

将所述一致化服务描述包发布到中央控制服务器,以便待部署服务器安装的代理从中央控制服务器上拉取所述一致化服务描述包,在待部署服务器上调用安装函数安装所述一致化服务描述包中的服务描述脚本,调用检查函数检查待部署服务器的环境参数与所述一致化服务描述包中的服务描述脚本中的环境参数是否发生变化,如果发生变化,调用应用函数用所述一致化服务描述包中的服务描述脚本中的环境参数刷新待部署服务器的环境参数。

可选地,该程序被处理器执行时还实现:

将用安装函数写成的用于使待部署服务器环境中的特定服务保持启动状态的服务描述脚本打成服务保活服务描述包;

将所述服务保活服务描述包发布到中央控制服务器,以便待部署服务器安装的代理从中央控制服务器上拉取所述服务保活服务描述包,在待部署服务器上调用安装函数安装所述服务保活服务描述包中的服务描述脚本,调用状态函数在待部署服务器检查服务描述脚本中需要保持启动状态的服务是否保持启动状态,并调用启动函数将需要保持启动状态而未启动的服务启动。

可选地,该程序被处理器执行时还实现:

接收对待部署服务器进行变动的目标描述;

将所述目标描述拆解成多个任务单,每个任务单包括一个任务,每个任务包括多个子任务;

让所述多个任务单包括的各任务进入任务队列排队;

为排队的各任务分别分配一个进程,其中,一个进程中有多个线程,调度进入进程的任务中的各子任务分别进入该进程中的多个线程之一,在每个线程中,将进入线程的子任务放入中央控制服务器,由该子任务相关的待部署服务器上的代理拉取该子任务到所述待部署服务器上执行。

所述让所述多个任务单包括的各任务进入任务队列排队包括:按照事先确定的顺序,让所述多个任务单包括的各任务进入任务队列排队;

所述为排队的各任务分别分配一个进程的步骤包括:排队顺序在先的任务在进程中执行完后,排队顺序在后的任务才能进入进程执行。

可选地,对待部署服务器进行变动包括以下中的至少一个:对待部署服务器上安装的服务描述脚本进行变动、对是否将待部署服务器连到中央控制服务器进行变动、对待部署服务器所属的分组进行变动。所述让所述多个任务单包括的各任务进入任务队列排队的步骤包括:将对待部署服务器上安装的服务描述脚本进行变动的目标描述涉及的任务先放入任务队列,然后将对是否将待部署服务器连到中央控制服务器进行变动的目标描述涉及的任务再放入任务队列,再将对待部署服务器所属的分组进行变动的目标描述涉及的任务放入任务队列。

可选地,所述变动包括增加、删除、改变中的至少一个。

可选地,在中央控制服务器设有索引区,用于存放各服务描述包放置在中央控制服务器的位置信息,以便待部署服务器安装的代理按照该位置信息从中央控制服务器上拉取各服务描述包。

需要注意的是,本发明可在软件和/或软件与硬件的组合体中被实施,例如,本发明的各个装置可采用专用集成电路(asic)或任何其他类似硬件设备来实现。在一个实施例中,本发明的软件程序可以通过处理器执行以实现上文所述步骤或功能。同样地,本发明的软件程序(包括相关的数据结构)可以被存储到计算机可读记录介质中,例如,ram存储器,磁或光驱动器或软磁盘及类似设备。另外,本发明的一些步骤或功能可采用硬件来实现,例如,作为与处理器配合从而执行各个步骤或功能的电路。

对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化涵括在本发明内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。此外,显然“包括”一词不排除其他单元或步骤,单数不排除复数。系统权利要求中陈述的多个单元或装置也可以由一个单元或装置通过软件或者硬件来实现。第一,第二等词语用来表示名称,而并不表示任何特定的顺序。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1