CN104219290B - 一种多模块云应用弹性配置方法 - Google Patents
一种多模块云应用弹性配置方法 Download PDFInfo
- Publication number
- CN104219290B CN104219290B CN201410410226.9A CN201410410226A CN104219290B CN 104219290 B CN104219290 B CN 104219290B CN 201410410226 A CN201410410226 A CN 201410410226A CN 104219290 B CN104219290 B CN 104219290B
- Authority
- CN
- China
- Prior art keywords
- virtual machine
- cloud application
- application module
- node
- cloud
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D30/00—Reducing energy consumption in communication networks
- Y02D30/50—Reducing energy consumption in communication networks in wire-line communication networks, e.g. low power modes or reduced link rate
Abstract
本发明涉及一种多模块云应用弹性配置方法,基于现有多模块云应用网络架构,能够根据对各个虚拟机指定性能参数的实时监视,实时控制调整与虚拟机对应的云应用模块的部署与迁移,当虚拟机上空闲资源较多的情况下,服务器可以自动地修改应用拓扑结构,将云应用模块部署到同一台虚拟机上共享资源,进一步地节约计算资源;服务器也可以在虚拟机资源紧张的情况下,自动地恢复应用初始拓扑结构,将部署在同一台虚拟机上的不同云应用模块进行迁移,保证云应用模块能够及时处理应用请求的同时,有效提高了虚拟机资源的使用效率。
Description
技术领域
本发明涉及一种多模块云应用弹性配置方法,属于云计算技术领域。
背景技术
云计算的核心思想,是将大量用网络连接的计算资源统一管理和调度,构成一个计算资源池向用户提供按需服务。提供资源的网络被称为“云”。“云”中的资源在用户看来是无处不在的、可以按需获取的、无限扩展的,并且按照用多少支付多少的方式付费。
广义云计算是指服务的交付和使用模式,通过网络以按需、易扩展的方式获得所需服务。这种服务可以是IT和软件、互联网相关,也可以是其他服务。PaaS属于常见的广义云计算服务模式。PaaS将定制化研发的中间件平台(涵盖数据库和应用服务器等)作为一种服务提供给用户。PaaS的实质是将互联网的资源服务化为可编程接口,为第三方开发者提供有商业价值的资源和服务平台。有了PaaS平台的支撑,云计算的开发者就获得了大量的可编程元素,这些可编程元素有具体的业务逻辑,这就为开发带来了极大的方便,不但提高了编程效率,还节约了开发成本。同时,PaaS所提供的中间件平台为开发者开发的程序提供了应用部署所需计算资源(各种中间件),监控、管理和弹性伸缩等各种运维所需功能,大大降低了应用部署和运维所需成本。
PaaS CSP不断监控各个虚拟机上的资源消耗情况,当资源消耗过大时及时的进行虚拟机上节点的弹出以满足应用需求;当资源使用率较低时,将停止之前弹出的节点以节约资源。PaaS CSP通常可以根据应用部署模式来相应地执行应用的弹入与弹出过程。例如,应用以Declarative Mode的方式自动进行部署,则可以自动地采用Declarative Mode的方式进行应用的弹出和弹入;在Amazon EC2平台上,应用开发者通过申请虚拟机手动安装部署各个节点模版,并采用资源池的方式管理相同部署了相同节点模版的虚拟机,相应地Amazon EC2平台以资源池的方式进行节点的弹出和弹入。
现有技术中,当应用以Declarative Mode的方式进行部署时,可以类似地采用基于Declarative Mode的弹入过程,该过程为:确定需要弹入的应用模块所对应的所有节点、断开这些节点与其他不需要弹入节点之间的关系、停止上述节点、卸载上述节点、关闭上述节点所在虚拟机(如果该虚拟机上无其他不需要弹入的节点)。具体当PaaS CSP监控发现两台虚拟机上的资源使用率(CPU使用率、内存使用率等)不足,且发现两台虚拟机上正在运行的节点对应着相同的节点模版,选择弹入其中一台虚拟机上的节点,于是进行节点弹入。
现有技术中,当应用开发者要部署由多个节点模版构成的应用到Amazon EC2平台上时,将安装相同节点模版的虚拟机加入同一个资源池中,具体应用中,两台虚拟机可看作两个同构的Amazon EC2Instance,因为两台虚拟机上都安装了appContainer和Application节点模版,将这两个Instance加入到应用服务器资源池中,将其中一台虚拟机加入到数据库资源池中,并设置各个资源池的弹性规则。每个资源池都需要应用开发者设置路由模块,以建立和维护不同节点模版之间的关系。当应用服务器资源池的资源使用率超过弹性规则中设定阈值时,则复制一个相同的Instance加入到该资源池中;反之当资源池中资源利用率低于弹性规则中设定阈值时,则根据弹性规则自动删除一定数量的Instance。
采用现有技术对由多模块应用进行弹出和弹入时,都是对安装有相同节点模版的虚拟机进行增减操作。如果应用在初始部署时,不同应用模块部署到不同的虚拟机上,则弹入操作最多进行到每个应用模块各占用一台虚拟机为止。当应用访问的低谷时期,不同的应用模块占用的资源量都极小的情况下,每个应用模块占用至少一台虚拟机也会造成资源浪费。自动地将不同应用模块部署到相同虚拟机上,可以进一步释放空闲虚拟机资源。尚未有现有技术采用该种做法。
发明内容
针对上述技术问题,本发明所要解决的技术问题是提供一种基于现有多模块云应用网络架构,能够自动实现云应用模块与对应虚拟机之间的部署与迁移,有效提高虚拟机使用资源的多模块云应用弹性配置方法。
本发明为了解决上述技术问题采用以下技术方案:本发明设计了一种多模块云应用弹性配置方法,包括如下步骤:
步骤001.预设云应用描述文件,云应用描述文件包括节点模板、关系模板和弹性策略,节点模板包括节点类型、节点模板生命周期管理方法、至少两个云应用模块以及各个云应用模块之间的兼容性;服务器根据节点模板和关系模板获得应用拓扑结构;
步骤002.服务器根据节点模板生命周期管理方法,在应用拓扑结构中部署各个云应用模块,并记录各个云应用模块部署过程中的应用部署耗能,其中,云应用模块与虚拟机一一对应;
步骤003.服务器根据弹性策略中指定性能参数和该性能参数上下限阀值分别对各个虚拟机进行实时监控,判断是否存在低于性能参数下限阀值的虚拟机或者高于性能参数上限阀值的虚拟机,是则将低于性能参数下限阀值的虚拟机作为符合弹入条件的虚拟机,并进入步骤004,或者将高于性能参数上限阀值的虚拟机作为符合弹出条件的虚拟机,并进入步骤007;否则重复步骤003;
步骤004.判断符合弹入条件的虚拟机的个数是否大于等于2,是进入下一步骤;否则返回步骤003;
步骤005.判断符合弹入条件的各个虚拟机所对应的云应用模块中是否存在相同云应用模块,是则保留该相同云应用模块中的其中一个云应用模块及其对应的虚拟机,删除该相同云应用模块中的其余云应用模块及其对应的虚拟机,则此时符合弹入条件的各个虚拟机分别对应不同云应用模块,并返回步骤004;否则进入下一步骤;
步骤006.根据云应用模块之间的兼容性,判断符合弹入条件的各个虚拟机分别对应不同云应用模块中是否存在相互兼容的云应用模块,是则根据云应用模块的应用部署耗能,保留相互兼容的云应用模块中应用部署耗能最高的云应用模块及其对应的虚拟机,针对相互兼容的云应用模块中其余的云应用模块,删除该各个其余云应用模块所对应的虚拟机,并将该各个其余云应用模块重新部署与应用部署耗能最高的云应用模块所对应的虚拟机进行对应,并返回步骤003;否则返回步骤003;
步骤007.判断符合弹出条件的各个虚拟机中是否存在对应云应用模块数量等于1的虚拟机,是则分别针对各个对应云应用模块数量等于1的虚拟机,新建一个新虚拟机,并设置一个与对应云应用模块数量等于1的虚拟机所对应云应用模块相同的新云应用模块,部署新云应用模块与新虚拟机之间的对应关系,进入下一步骤;否则进入下一步骤;
步骤008.判断符合弹出条件的各个虚拟机中是否存在对应云应用模块数量大于等于2的虚拟机,是则针对对应云应用模块数量大于等于2的各个虚拟机,分别作如下操作:根据云应用模块的应用部署耗能,删除虚拟机与其所对应云应用模块中应用部署耗能最低的云应用模块之间对应关系,并新建一个新虚拟机,重新部署该应用部署耗能最低的云应用模块与新虚拟机之间的对应关系,并返回步骤003;否则返回步骤003。
作为本发明的一种优选技术方案:所述步骤001中,所述应用拓扑结构包括至少两组应用模块组,其中各组应用模块组分别包括应用模块节点、应用服务器节点和虚拟机节点,应用服务器节点分别与应用模块节点、虚拟机节点相连,应用模块节点与虚拟机节点一一对应,各组应用模块组的应用服务器节点彼此相连。
作为本发明的一种优选技术方案:所述步骤002中,所述各个云应用模块部署过程中的应用部署耗能为部署消耗时间。
作为本发明的一种优选技术方案:所述弹性策略中指定性能参数为虚拟机的CPU使用率。
作为本发明的一种优选技术方案:所述弹性策略中指定性能参数为虚拟机的内存使用率。
本发明所述一种多模块云应用弹性配置方法采用以上技术方案与现有技术相比,具有以下技术效果:本发明设计的多模块云应用弹性配置方法,基于现有多模块云应用网络架构,能够根据对各个虚拟机指定性能参数的实时监视,实时控制调整与虚拟机对应的云应用模块的部署与迁移,保证云应用模块能够及时处理应用请求的同时,有效提高了虚拟机资源的使用效率。
附图说明
图1是本发明设计多模块云应用弹性配置方法的流程示意图;
图2是本发明设计多模块云应用弹性配置方法中应用拓扑结构。
具体实施方式
下面结合说明书附图对本发明的具体实施方式作进一步详细的说明。
如图1所示,本发明设计一种多模块云应用弹性配置方法,包括如下步骤:
步骤001.预设云应用描述文件,云应用描述文件包括节点模板、关系模板和弹性策略,节点模板包括节点类型、节点模板生命周期管理方法、至少两个云应用模块以及各个云应用模块之间的兼容性;服务器根据节点模板和关系模板获得应用拓扑结构;
其中,应用拓扑结构包括至少两组应用模块组,其中各组应用模块组分别包括应用模块节点、应用服务器节点和虚拟机节点,应用服务器节点分别与应用模块节点、虚拟机节点相连,应用模块节点与虚拟机节点一一对应,各组应用模块组的应用服务器节点彼此相连。
其中,云应用描述文件按照服务器给出的规范预设构建,仅有这样,服务器才能正确解析预设云应用描述文件中的文件;
云应用描述文件中,节点模板包括节点类型、节点模板生命周期管理方法、至少两个云应用模块以及各个云应用模块之间的兼容性;节点类型包括应用模块节点(App)、应用服务器节点(App Container)和虚拟机节点(VM);关系模板指明了源节点模版和目标节点模版、关系类型、关系的管理方法等信息。相应地在部署包中会包含关系管理方法所对应的方法制品,方法制品可以是可执行文件、代码或配置文件等。关系类型和关系的管理方法的名称应该为服务器给出的规范里面约定的标准名称,例如当关系类型为ConnectTo时,其上定义的管理方法名称connect、disconnect等,这样服务器可以明确知道执行每个方法对管理关系所产生的作用,以便于服务器采用Declarative Mode的方式自动化的部署与运维。有些关系类型,例如HostedOn表示源节点模版与目标节点模版部署在一台机器上,且目标节点模版必须先部署完成生成运行环境后,才可以部署源节点模版,这种关系类型仅用于表达节点模版之间的逻辑关系,可以不给出其所对应的管理方法。
云应用描述文件中,弹性策略指明了需要监控的虚拟机指定性能参数和该性能参数上下限阀值,通过该性能参数上下限阀值作为弹入、弹出条件,其中,指定性能参数可以为虚拟机当前CPU使用率或内存占有率,
服务器根据节点模板和关系模板获得应用拓扑结构,应用拓扑结构是一个抽象的数据结构,可以采用表格的方式来表达,例如图2中的应用拓扑结构可以用如下表1来记录。
源节点模版ID | 目标节点模版ID | 关系类型 |
Application | appContainer | HostedOn |
appContainer | appVM | HostedOn |
DB | dbContainer | HostedOn |
dbContainer | dbVM | HostedOn |
appContainer | dbContainer | ConnectTo |
表1应用拓扑结构信息表
步骤002.服务器根据节点模板生命周期管理方法,在应用拓扑结构中部署各个云应用模块,并记录各个云应用模块部署过程中的应用部署耗能,其中,云应用模块与虚拟机一一对应;
其中,服务器按照Declarative Mode的方式部署各个云应用模块,服务器在部署时,需要为每个生成的节点创建唯一的节点ID并记录到数据库中。应用拓扑结构中每存在一个虚拟机类型的节点模版,服务器相应地需要创建一台虚拟机,为虚拟机创建唯一的虚拟机ID,并记录下每个虚拟机上安装的节点ID,其中,云应用模块与虚拟机一一对应。
服务器在部署每一个节点模版时,记录各个云应用模块部署过程中的应用部署耗能,可以记录部署所消耗时间、磁盘消耗等信息,用于以后弹入弹出时进行节点迁移所需代价的计算。
步骤003.服务器根据弹性策略中指定性能参数和该性能参数上下限阀值分别对各个虚拟机进行实时监控,判断是否存在低于性能参数下限阀值的虚拟机或者高于性能参数上限阀值的虚拟机,是则将低于性能参数下限阀值的虚拟机作为符合弹入条件的虚拟机,并进入步骤004,或者将高于性能参数上限阀值的虚拟机作为符合弹出条件的虚拟机,并进入步骤007;否则重复步骤003;
步骤004.判断符合弹入条件的虚拟机的个数是否大于等于2,是进入下一步骤;否则返回步骤003;
步骤005.判断符合弹入条件的各个虚拟机所对应的云应用模块中是否存在相同云应用模块,是则保留该相同云应用模块中的其中一个云应用模块及其对应的虚拟机,删除该相同云应用模块中的其余云应用模块及其对应的虚拟机,则此时符合弹入条件的各个虚拟机分别对应不同云应用模块,并返回步骤004;否则进入下一步骤;
步骤006.根据云应用模块之间的兼容性,判断符合弹入条件的各个虚拟机分别对应不同云应用模块中是否存在相互兼容的云应用模块,是则根据云应用模块的应用部署耗能,保留相互兼容的云应用模块中应用部署耗能最高的云应用模块及其对应的虚拟机,针对相互兼容的云应用模块中其余的云应用模块,删除该各个其余云应用模块所对应的虚拟机,并将该各个其余云应用模块重新部署与应用部署耗能最高的云应用模块所对应的虚拟机进行对应,并返回步骤003;否则返回步骤003;
其中,服务器首先需要判断哪些虚拟机上的节点所对应的节点模版是兼容的,仅当两台虚拟机上部署的节点模版是兼容的,才可以将其中一台上的节点所对应节点模版重新部署到另外一台上。服务器可以根据部署这些节点时所记录的应用部署耗能来判断删除哪些虚拟机和保留哪些虚拟机。例如在部署虚拟机VM1上的所有节点模版消耗了3分钟,而部署虚拟机VM2上的所有节点模版消耗了5分钟,则可以认为迁移VM2上的节点代价较大,选择VM2为保留虚拟机,而VM1为删除虚拟机。
其中,如果保留虚拟机上只部署了一个云应用模块,可以利用多租户技术例如cgroup为保留虚拟机上当前对应的云应用模块的进城/线程创建进程组(不包含操作系统默认启动进程)。如果保留虚拟机上部署对应了多个云应用模块,那么无需此操作,因为在该虚拟机上部署多个云应用模块时已经为每个云应用模块创建进程组。按照拓扑结构的顺序将待迁移的节点所对应模版以Declarative Mode的方式部署到保留虚拟机上,并创建进程组保存该过程中生成的进程/线程号;之后,服务器监控每个进程组的性能参数。
在此过程中,服务器需要记录新创建的节点ID,更新虚拟机ID所对应的节点ID,删除虚拟机ID记录。
在此步骤完成后,可以根据两个云应用模块在迁移前各自占用资源的实际情况,约定共享同一台虚拟机时各自的资源占用比例,利用多租户技术来控制这种比例,以免发生其中一个云应用模块耗尽虚拟机上所有资源的情况。例如云应用模块1原本占用虚拟机上30%的内存,云应用模块2原本占用虚拟机上20%的内存,则当两个应用模块共享同一台虚拟机时,按照3:2的比例进行资源分配(假设两个云应用模块原本占用的虚拟机系统资源配置相同)。如果云应用模块1的性能参数上限阀值为80%,而按照多租户共享约定,云应用模块1的资源消耗被控制在60%以内,即无论如何云应用模块1的内存消耗都无法超过性能参数上限阀值触发弹出,但是其又确实耗尽了所分配的资源需要进行弹出操作,这种情况下,可以约定只要云应用模块1消耗了所分配资源的比例超过原弹性策略中指定的性能参数上限阀值,则触发弹出,例如云应用模块1被分配了60%的内存资源,当其消耗了这60%的资源的80%(即48%),则认为达到弹出条件。
步骤007.判断符合弹出条件的各个虚拟机中是否存在对应云应用模块数量等于1的虚拟机,是则分别针对各个对应云应用模块数量等于1的虚拟机,新建一个新虚拟机,并设置一个与对应云应用模块数量等于1的虚拟机所对应云应用模块相同的新云应用模块,部署新云应用模块与新虚拟机之间的对应关系,进入下一步骤;否则进入下一步骤;
步骤008.判断符合弹出条件的各个虚拟机中是否存在对应云应用模块数量大于等于2的虚拟机,是则针对对应云应用模块数量大于等于2的各个虚拟机,分别作如下操作:根据云应用模块的应用部署耗能,删除虚拟机与其所对应云应用模块中应用部署耗能最低的云应用模块之间对应关系,并新建一个新虚拟机,重新部署该应用部署耗能最低的云应用模块与新虚拟机之间的对应关系,并返回步骤003;否则返回步骤003。
如图1所示,本发明设计一种多模块云应用弹性配置方法在实际应用过程中,通过如下步骤实现:
步骤001.按照TOSCA标准规范预设云应用描述文件,TOSCA规范为现有技术预设云应用描述文件,云应用描述文件包括节点模板、关系模板和弹性策略,节点模板包括节点类型、节点模板生命周期管理方法、至少两个云应用模块以及各个云应用模块之间的兼容性;服务器根据节点模板和关系模板获得应用拓扑结构;
云应用描述文件中,弹性策略指明了需要监控的虚拟机指定性能参数和该性能参数上下限阀值,通过该性能参数上下限阀值作为弹入、弹出条件,其中,指定性能参数可以为虚拟机当前CPU使用率或内存占有率,例如下表所示:
节点模版ID | 策略类型 | 监控参数 | 操作符 | 阈值 |
appVM | 弹入 | 内存 | ≤ | 0.2 |
appVM | 弹出 | 内存 | ≥ | 0.8 |
dbVM | 弹入 | 内存 | ≤ | 0.3 |
dbVM | 弹出 | 内存 | ≥ | 0.6 |
表2弹性策略表
服务器根据节点模板和关系模板获得应用拓扑结构,应用拓扑结构是一个抽象的数据结构,可以采用表格的方式来表达,例如图2中的应用拓扑结构可以用如下表来记录。
步骤002.服务器根据节点模板生命周期管理方法,在应用拓扑结构中部署各个云应用模块,并记录各个云应用模块部署过程中的应用部署耗能,其中,云应用模块与虚拟机一一对应;
其中,记录各个云应用模块部署过程中的应用部署耗能,可以记录部署所消耗时间、磁盘消耗等信息,用于以后弹入弹出时进行节点迁移所需代价的计算,例如下表所示:
节点ID | 节点模版ID | 虚拟机ID | 部署时间消耗(s) |
VM1 | appVM | vm_00001 | 60 |
VM2 | dbVM | vm_00002 | 60 |
appC1 | appContainer | vm_00001 | 120 |
dbC | dbContainer | vm_00002 | 360 |
db | DB | vm_00002 | 10 |
app1 | Application | vm_00001 | 2 |
表3节点模版部署信息表
云应用模块ID | 虚拟机ID | 占用方式 | 进程组ID | 磁盘消耗 | 剩余磁盘 |
Module1 | vm_00001 | 独占 | NULL | 1G | 19G |
Module2 | vm_00002 | 独占 | NULL | 4G | 16G |
表4应用模块部署信息表
步骤003.服务器根据弹性策略中指定性能参数和该性能参数上下限阀值分别对各个虚拟机进行实时监控,即对VM1虚拟机、VM2虚拟机进行监控,判断是否存在低于性能参数下限阀值的虚拟机或者高于性能参数上限阀值的虚拟机,是则将低于性能参数下限阀值的虚拟机作为符合弹入条件的虚拟机,并进入步骤004,或者将高于性能参数上限阀值的虚拟机作为符合弹出条件的虚拟机,并进入步骤007;否则重复步骤003;
例如实时监控中,VM1虚拟机上的内存消耗为10%,低于性能参数下限阀值20%;VM1虚拟机上的内存消耗为15%,低于性能参数下限阀值30%,进入步骤004;
步骤004.判断符合弹入条件的虚拟机的个数是否大于等于2,是进入下一步骤;否则返回步骤003;
步骤005.判断符合弹入条件的各个虚拟机所对应的云应用模块中是否存在相同云应用模块,是则保留该相同云应用模块中的其中一个云应用模块及其对应的虚拟机,删除该相同云应用模块中的其余云应用模块及其对应的虚拟机,则此时符合弹入条件的各个虚拟机分别对应不同云应用模块,此时,VM1虚拟机和VM2虚拟机上分别安装了不同的云应用模块Module1和云应用模块Module2,并返回步骤004;否则进入下一步骤;
由于VM1虚拟机和VM2虚拟机上分别安装了不同的云应用模块Module1和云应用模块Module2,依次步骤004、步骤005后再返回步骤004,再通过步骤005进入下一步骤;
步骤006.根据云应用模块之间的兼容性,判断符合弹入条件的各个虚拟机分别对应不同云应用模块中是否存在相互兼容的云应用模块,是则根据云应用模块的应用部署耗能,保留相互兼容的云应用模块中应用部署耗能最高的云应用模块及其对应的虚拟机,针对相互兼容的云应用模块中其余的云应用模块,删除该各个云应用模块所对应的虚拟机,并将该各个云应用模块重新部署与应用部署耗能最高的云应用模块所对应的虚拟机进行对应,并返回步骤003;否则返回步骤003;
其中,服务器查看表6和各个云应用模块之间的兼容性,若判断云应用模块Module1和云应用模块Module2可以部署到同一台虚拟机上且所需磁盘空间足够,部署完整的云应用模块Module1需要大约182秒,而部署完整的云应用模块Module2需要大约430秒,于是服务器将对应vm_00001的虚拟机设为删除虚拟机,将对应vm_00002的虚拟机设为保留虚拟机。
服务器利用cgroup多租户技术,为VM2虚拟机上当前所有进程(除操作系统进程)创建进程组group1,为即将部署到VM2虚拟机上的云应用模块Module1创建进程组group2,根据云应用模块Module1和云应用模块Module2原本占用各自虚拟机上内存资源比例分配共享虚拟机内存资源比例(服务器将通过多租户技术cgroup严格控制这两个应用模块在运行时所占用的资源比例),将这些信息记录到资源共享信息表中,如下表所示。
云应用模块ID | 虚拟机ID | 进程组ID | 资源类型 | 占用比例 |
Module2 | vm_00002 | group1 | 内存 | 0.6 |
Module1 | vm_00002 | group2 | 内存 | 0.4 |
表5资源共享信息表
如上表所示,因为云应用模块Module1和云应用模块Module2在未弹入之前各自占用虚拟机内存为10%和15%,所以当它们共享同一台虚拟机时,默认其可占用资源比例为2:3。
服务器在VM2虚拟机上部署云应用模块Module1的过程如下所示。
1、检查发现appVM的类型为VM,与VM2虚拟机上已经部署的dbVM类型相同,则无需重复部署appVM,为appVM创建节点ID为VM3;
2、在VM2虚拟机上部署appContainer模版,创建节点ID appC2:install/configure/start appC2;
3、建立appC2节点与dbC节点之间的连接关系:connect appC2 to dbC;
4、部署App模版,创建节点ID app2:install/start app2;
5、将1-4步骤生成的进程或线程加入到进程组group2中;
6、断开appC1节点与dbC节点之间的连接关系:disconnect appC1 to dbC;
7、停止app1:stop app1;
8、停止并卸载appC1:stop/uninstall appC1;
9、停止VM1:stop VM1;
10、检查发现VM1虚拟机上不存在正在运行的节点,删除VM1虚拟机;
11、更新相关数据库信息。
经过上述更新相关数据库信息后,得到弹入后的节点模版部署信息表如表6所示,弹入后的应用模块部署信息表如表7所示。
节点ID | 节点模版ID | 虚拟机ID | 部署时间消耗(s) |
VM3 | appVM | vm_00002 | 60 |
VM2 | dbVM | vm_00002 | 60 |
appC2 | appContainer | vm_00002 | 120 |
dbC | dbContainer | vm_00002 | 360 |
db | DB | vm_00002 | 10 |
app2 | Application | vm_00002 | 2 |
表6弹入后的节点模版部署信息表
云应用模块ID | 虚拟机ID | 占用方式 | 进程组ID | 磁盘消耗 | 剩余磁盘 |
Module1 | vm_00002 | 共享 | group2 | 1G | 15G |
Module2 | vm_00002 | 共享 | group1 | 4G | 15G |
表7弹入后的应用模块部署信息表
以上操作后返回步骤003,若一段时间后,监控发现VM2虚拟机上,云应用模块Module1所对应的group2占用了虚拟机上35%的内存资源,根据弹性策略表中appVM性能参数上限阀值为80%,而appVM所在应用模块Module1被分配了虚拟机上40%的内存资源,得到云应用模块Module1的实际弹出阈值为40%*80%=32%,而云应用模块Module1当前内存消耗已经超出该阈值,符合弹出条件,则进入如下步骤007:
步骤007.判断符合弹出条件的各个虚拟机中是否存在对应云应用模块数量等于1的虚拟机,是则分别针对各个对应云应用模块数量等于1的虚拟机,新建一个新虚拟机,并设置一个与对应云应用模块数量等于1的虚拟机所对应云应用模块相同的新云应用模块,部署新云应用模块与新虚拟机之间的对应关系,进入下一步骤;否则进入下一步骤;
步骤008.判断符合弹出条件的各个虚拟机中是否存在对应云应用模块数量大于等于2的虚拟机,是则针对对应云应用模块数量大于等于2的各个虚拟机,分别作如下操作:根据云应用模块的应用部署耗能,删除虚拟机与其所对应云应用模块中应用部署耗能最低的云应用模块之间对应关系,并新建一个新虚拟机,重新部署该应用部署耗能最低的云应用模块与新虚拟机之间的对应关系,并返回步骤003;否则返回步骤003。
即由于VM2虚拟机上部署了两个云应用模块Module1和Module2,服务器根据应用部署耗能判断将云应用模块Module1迁出的代价较小,因为只需要迁出一个云应用模块Module1,所以需要新建1台虚拟机,服务器创建虚拟机VM3,将云应用模块Module1迁出和部署到虚拟机VM3的过程如下所示。
1、在虚拟机VM3上部署appVM模版,创建节点ID VM4:start VM4
2、在虚拟机VM3上部署appContainer模版,创建节点ID appC3:install/configure/start appC3;
3、建立appC3节点与dbC节点之间的连接关系:connect appC3 to dbC;
4、在虚拟机VM3上部署App模版,创建节点ID app3:install/start app3;
5、断开appC2节点与dbC节点之间的连接关系:disconnect appC2to dbC;
6、停止app2:stop app2;
7、停止并卸载appC2:stop/uninstall appC2;
8、检查发现虚拟机VM2上还有正在运行的云应用模块Module2,而虚拟机VM2节点与正在运行的VM3节点类型都是VM,可知VM3和VM2对应相同的虚拟机实体,如果停止VM2则必然影响Module2的运行,所以无需停止VM3节点;
9、删除进程组group1;
10、更新相关数据库信息。
经过上述更新相关数据库信息后,得到弹出后的节点模版部署信息表如表8所示,弹出后的应用模块部署信息表如表9所示。
节点ID | 节点模版ID | 虚拟机ID | 部署时间消耗(s) |
VM3 | appVM | vm_00003 | 60 |
VM2 | dbVM | vm_00002 | 60 |
appC3 | appContainer | vm_00003 | 120 |
dbC | dbContainer | vm_00002 | 360 |
db | DB | vm_00002 | 10 |
app3 | App | vm_00003 | 2 |
表8弹出后的节点模版部署信息表
云应用模块ID | 虚拟机ID | 占用方式 | 进程组ID | 磁盘消耗 | 剩余磁盘 |
Module1 | vm_00003 | 独占 | NULL | 1G | 19G |
Module2 | vm_00002 | 独占 | NULL | 4G | 16G |
表9弹出后的应用模块部署信息表
因为弹出后每个云应用模块独占虚拟机,所以无需采用多租户技术,将表5清空即可。
本发明设计的多模块云应用弹性配置方法,基于现有多模块云应用网络架构,能够根据对各个虚拟机指定性能参数的实时监视,实时控制调整与虚拟机对应的云应用模块的部署与迁移,保证云应用模块能够及时处理应用请求的同时,有效提高了虚拟机资源的使用效率,即当虚拟机上空闲资源较多的情况下,服务器可以自动地修改应用拓扑结构,将云应用模块部署到同一台虚拟机上共享资源,进一步地节约计算资源;服务器也可以在虚拟机资源紧张的情况下,自动地恢复应用初始拓扑结构,将部署在同一台虚拟机上的不同云应用模块进行迁移,有效提高了虚拟机资源的使用效率。
上面结合附图对本发明的实施方式作了详细说明,但是本发明并不限于上述实施方式,在本领域普通技术人员所具备的知识范围内,还可以在不脱离本发明宗旨的前提下做出各种变化。
Claims (5)
1.一种多模块云应用弹性配置方法,其特征在于,包括如下步骤:
步骤001.预设云应用描述文件,云应用描述文件包括节点模板、关系模板和弹性策略,节点模板包括节点类型、节点模板生命周期管理方法、至少两个云应用模块以及各个云应用模块之间的兼容性;服务器根据节点模板和关系模板获得应用拓扑结构;
步骤002.服务器根据节点模板生命周期管理方法,在应用拓扑结构中部署各个云应用模块,并记录各个云应用模块部署过程中的应用部署耗能,其中,云应用模块与虚拟机一一对应;
步骤003.服务器根据弹性策略中指定性能参数和该性能参数上下限阀值分别对各个虚拟机进行实时监控,判断是否存在低于性能参数下限阀值的虚拟机或者高于性能参数上限阀值的虚拟机,是则将低于性能参数下限阀值的虚拟机作为符合弹入条件的虚拟机,并进入步骤004,或者将高于性能参数上限阀值的虚拟机作为符合弹出条件的虚拟机,并进入步骤007;否则重复步骤003;
步骤004.判断符合弹入条件的虚拟机的个数是否大于等于2,是进入下一步骤;否则返回步骤003;
步骤005.判断符合弹入条件的各个虚拟机所对应的云应用模块中是否存在相同云应用模块,是则保留该相同云应用模块中的其中一个云应用模块及其对应的虚拟机,删除该相同云应用模块中的其余云应用模块及其对应的虚拟机,则此时符合弹入条件的各个虚拟机分别对应不同云应用模块,并返回步骤004;否则进入下一步骤;
步骤006.根据云应用模块之间的兼容性,判断符合弹入条件的各个虚拟机分别对应不同云应用模块中是否存在相互兼容的云应用模块,是则根据云应用模块的应用部署耗能,保留相互兼容的云应用模块中应用部署耗能最高的云应用模块及其对应的虚拟机,针对相互兼容的云应用模块中其余的云应用模块,删除该各个其余云应用模块所对应的虚拟机,并将该各个其余云应用模块重新部署与应用部署耗能最高的云应用模块所对应的虚拟机进行对应,并返回步骤003;否则返回步骤003;
步骤007.判断符合弹出条件的各个虚拟机中是否存在对应云应用模块数量等于1的虚拟机,是则分别针对各个对应云应用模块数量等于1的虚拟机,新建一个新虚拟机,并设置一个与对应云应用模块数量等于1的虚拟机所对应云应用模块相同的新云应用模块,部署新云应用模块与新虚拟机之间的对应关系,进入下一步骤;否则进入下一步骤;
步骤008.判断符合弹出条件的各个虚拟机中是否存在对应云应用模块数量大于等于2的虚拟机,是则针对对应云应用模块数量大于等于2的各个虚拟机,分别作如下操作:根据云应用模块的应用部署耗能,删除虚拟机与其所对应云应用模块中应用部署耗能最低的云应用模块之间对应关系,并新建一个新虚拟机,重新部署该应用部署耗能最低的云应用模块与新虚拟机之间的对应关系,并返回步骤003;否则返回步骤003。
2.根据权利要求1所述一种多模块云应用弹性配置方法,其特征在于:所述步骤001中,所述应用拓扑结构包括至少两组应用模块组,其中各组应用模块组分别包括应用模块节点、应用服务器节点和虚拟机节点,应用服务器节点分别与应用模块节点、虚拟机节点相连,应用模块节点与虚拟机节点一一对应,各组应用模块组的应用服务器节点彼此相连。
3.根据权利要求1所述一种多模块云应用弹性配置方法,其特征在于:所述步骤002中,所述各个云应用模块部署过程中的应用部署耗能为部署消耗时间。
4.根据权利要求1所述一种多模块云应用弹性配置方法,其特征在于:所述弹性策略中指定性能参数为虚拟机的CPU使用率。
5.根据权利要求1所述一种多模块云应用弹性配置方法,其特征在于:所述弹性策略中指定性能参数为虚拟机的内存使用率。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410410226.9A CN104219290B (zh) | 2014-08-19 | 2014-08-19 | 一种多模块云应用弹性配置方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410410226.9A CN104219290B (zh) | 2014-08-19 | 2014-08-19 | 一种多模块云应用弹性配置方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104219290A CN104219290A (zh) | 2014-12-17 |
CN104219290B true CN104219290B (zh) | 2017-05-31 |
Family
ID=52100415
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410410226.9A Active CN104219290B (zh) | 2014-08-19 | 2014-08-19 | 一种多模块云应用弹性配置方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104219290B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107210924B (zh) * | 2014-12-29 | 2020-07-28 | 瑞典爱立信有限公司 | 用于配置通信系统的方法和设备 |
CN106227582B (zh) * | 2016-08-10 | 2019-06-11 | 华为技术有限公司 | 弹性伸缩方法及系统 |
CN107070705B (zh) * | 2017-03-23 | 2019-03-15 | 无锡华云数据技术服务有限公司 | 一种云资源的编排方法 |
CN108089914A (zh) * | 2018-01-18 | 2018-05-29 | 电子科技大学 | 一种基于能耗的云计算虚拟机部署算法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101938416A (zh) * | 2010-09-01 | 2011-01-05 | 华南理工大学 | 一种基于动态重配置虚拟资源的云计算资源调度方法 |
CN102427481A (zh) * | 2012-01-12 | 2012-04-25 | 易云捷讯科技(北京)有限公司 | 用于对云计算服务进行管理的系统及云计算管理方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
IT1394808B1 (it) * | 2009-06-04 | 2012-07-13 | Galileo Avionica S P A Ora Selex Galileo Spa | Sistema di rifornimento assistito in volo |
US8516137B2 (en) * | 2009-11-16 | 2013-08-20 | Microsoft Corporation | Managing virtual hard drives as blobs |
-
2014
- 2014-08-19 CN CN201410410226.9A patent/CN104219290B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101938416A (zh) * | 2010-09-01 | 2011-01-05 | 华南理工大学 | 一种基于动态重配置虚拟资源的云计算资源调度方法 |
CN102427481A (zh) * | 2012-01-12 | 2012-04-25 | 易云捷讯科技(北京)有限公司 | 用于对云计算服务进行管理的系统及云计算管理方法 |
Non-Patent Citations (1)
Title |
---|
STS 实现Cloud Foundry 云平台应用部署;丁振凡;《井冈山大学学报(自然科学版)》;20130930;第34卷(第5期);第45-49页 * |
Also Published As
Publication number | Publication date |
---|---|
CN104219290A (zh) | 2014-12-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108614688B (zh) | 应用于混合云环境的可视化应用编排系统及方法 | |
CN109144688B (zh) | 异构多核可重构计算平台上任务调度的方法和装置 | |
EP3200393B1 (en) | Method and device for virtual network function management | |
CN104219290B (zh) | 一种多模块云应用弹性配置方法 | |
CN105094997B (zh) | 一种云计算主机节点间物理内存共享方法和系统 | |
CN108370328B (zh) | 一种nfv mano策略描述符的管理方法及装置 | |
CN111880936B (zh) | 资源调度方法、装置、容器集群、计算机设备和存储介质 | |
CN105577475A (zh) | 自动化性能测试系统及方法 | |
CN111682973B (zh) | 一种边缘云的编排方法及系统 | |
KR102419704B1 (ko) | 보안 보호 방법 및 장치 | |
CN103428241A (zh) | 服务部署方法及系统 | |
CN103473117A (zh) | 云模式下的虚拟化方法 | |
CN104679594B (zh) | 一种中间件分布式计算方法 | |
CN105278991B (zh) | 一种云应用部署配置模型的构造方法 | |
CN111309440B (zh) | 一种多类型gpu的管理调度的方法和设备 | |
CN105704188A (zh) | 应用与服务的部署方法和装置 | |
CN104657149A (zh) | 一种存储系统的管理模块的软件框架实现方法 | |
US20150012669A1 (en) | Platform runtime abstraction | |
CN104572394A (zh) | 进程监控方法及装置 | |
CN102158490B (zh) | 基于OSGi的服务转换方法和装置 | |
CN111208975A (zh) | 并发执行服务 | |
CN105335235A (zh) | 一种基于IaaS模式的资源管理系统及方法 | |
CN105700877A (zh) | 一种应用部署方法和装置 | |
CN104572286A (zh) | 一种基于分布式内存集群的任务调度方法 | |
CN102096606A (zh) | 虚拟机迁移方法、装置和系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |