CN106227582A - 弹性伸缩方法及*** - Google Patents
弹性伸缩方法及*** Download PDFInfo
- Publication number
- CN106227582A CN106227582A CN201610657659.3A CN201610657659A CN106227582A CN 106227582 A CN106227582 A CN 106227582A CN 201610657659 A CN201610657659 A CN 201610657659A CN 106227582 A CN106227582 A CN 106227582A
- Authority
- CN
- China
- Prior art keywords
- virtual machine
- management system
- resource management
- group
- dormancy
- 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.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45562—Creating, deleting, cloning virtual machine instances
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45575—Starting, stopping, suspending or resuming virtual machine instances
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种弹性伸缩方法及***,属于通信领域。所述方法包括:采集对伸缩池所支持的应用的监控数据;其中,伸缩池中包括至少一个伸缩组,每一个伸缩组包括至少一个预先创建的虚拟机,且每一个虚拟机上预先部署有一种应用;根据监控数据对各个伸缩组进行伸缩决策;当决策扩容目标伸缩组内的虚拟机时,从目标伸缩组所包括的处于休眠状态的虚拟机中选择第一虚拟机,并唤醒第一虚拟机。本发明解决了现有技术提供的弹性伸缩方案无法满足快速伸展的需求的问题;通过预创建虚拟机和预部署应用,唤醒处于休眠状态的虚拟机即可实现应用节点的快速伸展,达到了提高应用节点的伸缩速度,满足快速伸展的需求的技术效果。
Description
技术领域
本发明涉及通信领域,特别涉及一种弹性伸缩方法及***。
背景技术
随着各行业应用的云化逐步深入,弹性伸缩(Auto Scaling)特性成了应用云化的重要特性之一。应用的弹性伸缩特性是指应用根据业务流量的大小,按需申请资源以增加或减少运行应用的节点数。
现有技术提供的弹性伸缩方案如下:在初始部署完成时,伸缩池内的宿主机上没有运行任何虚拟机(Virtual Machine,VM)。在运行时,当应用的业务流量上升时,云平台从伸缩池中选择宿主机,并在该宿主机上创建虚拟机,而后在创建完成的虚拟机上部署和配置应用。另外,需要对应用进行改造,以使得应用在伸展时能够自动加载和生效配置数据,从而确保应用能够正常提供业务。对于配置数据复杂的应用来说,应用需要较大改造才能实现在伸展时自动加载和生效配置数据。
对于某些行业的应用来说,例如电信、金融、企业的应用,对弹性伸缩的速度有着较高的要求。应用节点在伸展时需要快速的安装部署,如果伸展时间过长,则会错失业务流量峰值时间窗,达不到按需使用的目的。例如,短信中心的话务量可以在5分钟之内增长3至5倍,如果伸展一个应用节点的时间超过3分钟,则已基本错失业务流量峰值时间窗。
然而,现有技术提供的弹性伸缩方案,无法满足快速伸展的需求。
发明内容
为了解决现有技术提供的弹性伸缩方案无法满足快速伸展的需求的问题,本发明实施例提供了一种弹性伸缩方法及***。
一方面,本发明实施例提供了一种弹性伸缩方法,该方法包括:采集对伸缩池所支持的应用的监控数据;其中,伸缩池中包括至少一个伸缩组,每一个伸缩组包括至少一个预先创建的虚拟机,且每一个虚拟机上预先部署有一种应用;根据监控数据对各个伸缩组进行伸缩决策;当决策扩容目标伸缩组内的虚拟机时,从目标伸缩组所包括的处于休眠状态的虚拟机中选择第一虚拟机,并唤醒第一虚拟机。
本发明实施例提供的方案,通过在伸缩池中预先创建虚拟机,并在每一个虚拟机上预先部署应用,当决策扩容目标伸缩组内的虚拟机时,从目标伸缩组所包括的处于休眠状态的虚拟机中选择第一虚拟机,并唤醒该第一虚拟机;解决了现有技术提供的弹性伸缩方案,无法满足快速伸展的需求的问题;通过预创建虚拟机和预部署应用,唤醒处于休眠状态的虚拟机即可实现应用节点的快速伸展,达到了提高应用节点的伸缩速度,满足快速伸展的需求的技术效果。
可选地,第一虚拟机是第一宿主机上处于休眠状态且属于目标伸缩组的虚拟机。第一宿主机是伸缩池中当前空闲资源最多,并存在处于休眠状态且属于目标伸缩组的虚拟机的宿主机。
在一个可能的设计中,当决策扩容目标伸缩组内的虚拟机时,从目标伸缩组所包括的处于休眠状态的虚拟机中选择第一虚拟机,并唤醒第一虚拟机,包括:当决策扩容目标伸缩组内的虚拟机时,P层资源管理***向I层资源管理***发送唤醒指令,该唤醒指令用于指示I层资源管理***唤醒处于休眠状态且属于目标伸缩组的虚拟机;I层资源管理***在接收到唤醒指令之后,从伸缩池中选择第一虚拟机,并唤醒第一虚拟机。
在一个示例中,I层资源管理***在接收到唤醒指令之后,从所述伸缩池中选择第一虚拟机,并唤醒第一虚拟机,包括:I层资源管理***在接收到唤醒指令之后,从伸缩池中选择处于休眠状态且属于目标伸缩组的虚拟机,并唤醒被选择的虚拟机;I层资源管理***在接收到P层资源管理***发送的迁移指令之后,检测被唤醒的虚拟机是否位于第一宿主机之上;若被唤醒的所述虚拟机不位于第一宿主机之上,则I层资源管理***将被唤醒的虚拟机从原始宿主机迁移至第一宿主机。
通过上述方式,在伸展时,从当前空闲资源最多的宿主机中选择处于休眠状态的虚拟机进行伸展,使得伸缩池中的各个宿主机的负载相对均衡。
在一个可能的设计中,根据监控数据对各个伸缩组进行伸缩决策之后,还包括:当决策减容目标伸缩组内的虚拟机时,从目标伸缩组所包括的处于唤醒状态的虚拟机中选择第二虚拟机,并休眠第二虚拟机。其中,第二虚拟机是第二宿主机上处于唤醒状态且属于目标伸缩组的虚拟机。第二宿主机是伸缩池中当前空闲资源最少,并存在处于唤醒状态且属于目标伸缩组的虚拟机的宿主机。
通过上述方式,在收缩时,从当前空闲资源最少的宿主机中选择处于唤醒状态的虚拟机进行收缩,使得伸缩池中的各个宿主机的负载相对均衡。
在一个示例中,如果I层资源管理***提供自动从当前空闲资源最少的宿主机中选择处于唤醒状态的虚拟机休眠的功能,则当决策减容目标伸缩组内的虚拟机时,从目标伸缩组所包括的处于唤醒状态的虚拟机中选择第二虚拟机,并休眠第二虚拟机,包括:当决策减容目标伸缩组内的虚拟机时,P层资源管理***向I层资源管理***发送第一休眠指令,第一休眠指令用于指示I层资源管理***休眠处于唤醒状态且属于目标伸缩组的虚拟机;I层资源管理***在接收到第一休眠指令之后,从伸缩池中选择第二宿主机;I层资源管理***从第二宿主机上选择第二虚拟机,并休眠第二虚拟机。
在另一示例中,如果I层资源管理***提供查询各个宿主机的当前空闲资源的接口,则当决策减容目标伸缩组内的虚拟机时,从目标伸缩组所包括的处于唤醒状态的虚拟机中选择第二虚拟机,并休眠第二虚拟机,包括:当决策减容目标伸缩组内的虚拟机时,P层资源管理***从I层资源管理***查询获取伸缩池中各个宿主机的当前空闲资源;P层资源管理***根据各个宿主机的当前空闲资源,选择第二宿主机;P层资源管理***向I层资源管理***发送第二休眠指令,第二休眠指令中携带第二宿主机的标识,第二休眠指令用于指示I层资源管理***休眠第二宿主机上处于唤醒状态且属于目标伸缩组的虚拟机;I层资源管理***在接收到第二休眠指令之后,从第二宿主机上选择第二虚拟机,并休眠第二虚拟机。
在又一示例中,如果I层资源管理***既不支持上述第一个示例中的功能,也不支持上述第二个示例中的功能,则当决策减容目标伸缩组内的虚拟机时,从目标伸缩组所包括的处于唤醒状态的虚拟机中选择第二虚拟机,并休眠第二虚拟机,包括:当决策减容目标伸缩组内的虚拟机时,P层资源管理***从目标伸缩组所包括的处于唤醒状态的虚拟机中选择最早启动的虚拟机作为第二虚拟机;P层资源管理***向I层资源管理***发送第三休眠指令,第三休眠指令中携带第二虚拟机的标识,第三休眠指令用于指示I层资源管理***休眠第二虚拟机;I层资源管理***在接收到第三休眠指令之后,休眠第二虚拟机。
本发明实施例提供了上述三种方式,实现从当前空闲资源最少的宿主机中选择处于唤醒状态的虚拟机休眠。在实际应用中,可根据I层资源管理***所支持的功能,选择任一种方式。
在一个可能的设计中,采集对伸缩池所支持的应用的监控数据,包括:P层资源管理***采集伸缩池所支持的应用的运行数据,运行数据用于指示应用的运行状况;和/或,P层资源管理***接收I层资源管理***发送的伸缩池所支持的应用的性能数据,性能数据用于指示应用的资源占用状况。
通过上述方式,P层资源管理***可结合获取到的应用的运行数据和性能数据两方面信息进行伸缩决策,以使得决策结果更为准确。
在一个可能的设计中,采集对伸缩池所支持的应用的监控数据之前,还包括:在获取到虚拟机创建指示之后,在共享存储上预创建目标数量的虚拟机;根据获取到的应用部署请求,分别在每一个虚拟机上预部署一种应用,并预配置应用;休眠暂时不用的虚拟机。
通过预创建虚拟机、预部署应用以及预配置应用,免去了对应用实现在伸展时自动加载和生效配置数据的要求,减少了应用的改造工作量。另外,由于各个虚拟机创建在共享存储上,虚拟机在休眠时所占用的资源会自动释放,以使得其它应用和虚拟机可以抢占其释放的资源,达到了按需、合理地利用资源的目的。
另一方面,本发明实施例提供了一种弹性伸缩***,该***具有实现上述方法示例的功能。所述功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。所述硬件或软件包括一个或多个与上述功能相对应的模块。
又一方面,本发明实施例提供了一种控制节点,控制节点的结构中包括处理器、发射器和接收器,所述控制节点被配置为支持执行上述方法中相应的功能。所述发射器和接收器用于支持控制节点与其它设备之间的通信。进一步地,控制节点还可以包括存储器,所述存储器用于与处理器耦合,其保存控制节点必要的程序指令和数据。
又一方面,本发明实施例提供了一种计算机存储介质,用于储存为上述用于控制节点所用的计算机软件指令,其包含用于执行上述方面所设计的程序。
相较于现有技术,本发明实施例提供的方案中,通过在伸缩池中预先创建虚拟机,并在每一个虚拟机上预先部署应用,当决策扩容目标伸缩组内的虚拟机时,从目标伸缩组所包括的处于休眠状态的虚拟机中选择第一虚拟机,并唤醒该第一虚拟机;解决了现有技术提供的弹性伸缩方案,无法满足快速伸展的需求的问题;通过预创建虚拟机和预部署应用,唤醒处于休眠状态的虚拟机即可实现应用节点的快速伸展,达到了提高应用节点的伸缩速度,满足快速伸展的需求的技术效果。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是根据一示例性实施例示出的一种***架构的示意图;
图2是本发明提供的技术方案的实施示意图;
图3是根据一示例性实施例示出的一种弹性伸缩方法的流程图;
图4是根据另一示例性实施例示出的一种弹性伸缩方法的流程图;
图5是根据又一示例性实施例示出的一种弹性伸缩方法的流程图;
图6是根据一示例性实施例示出的一种弹性伸缩***的框图;
图7是根据另一示例性实施例示出的一种弹性伸缩***的框图;
图8是根据另一示例性实施例示出的一种弹性伸缩***的框图;
图9是根据一示例性实施例示出的一种控制节点的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
云环境具有软件即服务(Software as a Service,SaaS)、平台即服务(Platformas a Service,PaaS)和基础设备即服务(Infrastructure as a Service,IaaS)三大服务模式。PaaS和IaaS可以直接通过面向服务的体系结构(Service-Oriented Architecture,SOA)或网络服务器向平台用户提供服务,也可以作为SaaS模式的支撑平台间接向最终用户服务。
图1是根据一示例性实施例示出的一种***架构的示意图。如图1所示,该***架构包括:硬件层11、I层平台12和P层平台13。
硬件层11中部署物理设备,包括计算、存储和网络设备。
I层平台(IaaS Platform)12,指在云环境中,负责设备资源虚拟化,并进行资源调度管理的平台。典型的I层平台有OpenStack+kvm、vCloud+vCenter等。I层平台12的虚拟化管理程序(vitualization hypervisor)用于实现设备的虚拟化。
P层平台(PaaS Platform)13,指在云环境中,负责应用的生命周期管理(开发、部署、监控、伸缩等)的平台。典型的P层平台有Google GAE、CloudFoundry等。其中,申请和释放虚拟机,由P层平台13调用I层平台12提供的应用程序编程接口(ApplicationProgramming Interface,API)发起请求,并由I层平台12执行。
应用(Application,App)运行在创建好的虚拟机上。
图2示出了本发明提供的技术方案的实施示意图。
在初始部署阶段,由运维人员在宿主机上预创建目标数量的虚拟机,并完成应用的预部署和预配置。比如,分别在宿主机Host1和Host2中预创建4个虚拟机,并分别在每一个虚拟机上预部署一种应用,如图2所示,在虚拟机VM1、VM3、VM5和VM6上预部署App1,在虚拟机VM2、VM4、VM7和VM8上预部署APP2。
在调测完成后,休眠暂时不同的虚拟机,释放宿主机的资源。
在运行阶段,由P层平台对应用进行关键绩效指标(Key Performance Indicator,KPI)和状态监控,并决策是否需要伸展或收缩,并由P层平台发起唤醒或休眠虚拟机的请求到I层平台进行伸缩控制,I层平台执行资源优选。在本发明实施例中,唤醒虚拟机即启动运行虚拟机,休眠虚拟机即停止运行虚拟机。
下述为本发明方法实施例,各步骤的执行主体可以是控制节点,该控制节点用于控制伸缩池内的应用节点进行弹性伸缩。其中,应用节点是指在云环境中,运行了应用程序的虚拟机实例。可选地,控制节点可以由一台设备实现,也可由多台设备交互配合实现。控制节点可以部署在图1所示***架构中的P层平台,也可部署在I层平台,或者采用分布式方式部署在P层平台和I层平台。控制节点可以是具备计算和处理能力的设备,如服务器。
图3是根据一示例性实施例示出的一种弹性伸缩方法的流程图。该方法可以包括如下步骤:
步骤301,采集对伸缩池所支持的应用的监控数据。其中,伸缩池中包括至少一个伸缩组,每一个伸缩组包括至少一个预先创建的虚拟机,且每一个虚拟机上预先部署有一种应用。
步骤302,根据监控数据对各个伸缩组进行伸缩决策。
步骤303,当决策扩容目标伸缩组内的虚拟机时,从目标伸缩组所包括的处于休眠状态的虚拟机中选择第一虚拟机,并唤醒第一虚拟机。
综上所述,本实施例提供的方法,通过在伸缩池中预先创建虚拟机,并在每一个虚拟机上预先部署应用,当决策扩容目标伸缩组内的虚拟机时,从目标伸缩组所包括的处于休眠状态的虚拟机中选择第一虚拟机,并唤醒该第一虚拟机;解决了现有技术提供的弹性伸缩方案,无法满足快速伸展的需求的问题;通过预创建虚拟机和预部署应用,唤醒处于休眠状态的虚拟机即可实现应用节点的快速伸展,达到了提高应用节点的伸缩速度,满足快速伸展的需求的技术效果。
图4是根据另一示例性实施例示出的一种弹性伸缩方法的流程图。该方法可以包括如下步骤:
步骤401,在获取到虚拟机创建指示之后,在共享存储上预创建目标数量的虚拟机。
运维人员发起虚拟机创建指示,例如该虚拟机创建指示用于指示控制节点创建目标数量的虚拟机。控制节点在获取到虚拟机创建指示之后,根据该指示在I层平台创建目标数量的虚拟机。
另外,虚拟机创建在共享存储上,以便后续在唤醒或休眠虚拟机时,动态抢占和释放资源。
步骤402,根据获取到的应用部署请求,分别在每一个虚拟机上预部署一种应用,并预配置上述应用。
运维人员发起应用部署请求,例如该应用部署请求用于请求控制节点在指定虚拟机上部署指定应用。控制节点根据获取到的应用部署请求,完成应用的预部署。运维人员可手动或采用部署工具在各个虚拟机上部署应用。
应用的预配置包括应用本身的配置和虚拟机的IP(Internet Protocol,互联网协议)配置等。应用完成预配置之后,其所在的虚拟机所对应的虚拟机文件中会保存有相关的配置数据,以便于后续在唤醒虚拟机时直接从中获取配置数据。运维人员可手动或采用部署工具在安装有应用的虚拟机上配置应用。
此外,预部署的应用节点的数量根据相应业务在将来一段时间内可能需要的最大数量确定。例如,假设根据历史业务统计结果,预估将来一段时间内可能需要的App1对应的应用节点的最大数量为4,App2对应的应用节点的最大数量为6,则预创建10个虚拟机,在其中4个虚拟机上预部署App1,并在另外6个虚拟机上预部署App2。
在完成上述预创建、预部署和预配置之后,形成伸缩池。伸缩池中包括至少一个伸缩组,每一个伸缩组包括至少一个预先创建的虚拟机,且每一个虚拟机上预先部署有一种应用。伸缩组是一组功能相同的虚拟机集合。也即,伸缩池中部署有同一种应用的虚拟机构成一个伸缩组。例如,结合参考图2,在初始部署阶段,伸缩池中包括两个伸缩组,其中,第一伸缩组为部署有App1的虚拟机,包括VM1、VM3、VM5和VM6,第二伸缩组为部署有App2的虚拟机,包括VM2、VM4、VM7和VM8。
步骤403,休眠暂时不用的虚拟机。
控制节点根据当前的业务需求,确定需要使用的虚拟机,并休眠暂时不用的虚拟机。虚拟机休眠之后,其原先占用的资源会自动释放。
步骤404,采集对伸缩池所支持的应用的监控数据。
控制节点采集对伸缩池所支持的应用的监控数据。可选地,监控数据包括应用的运行数据和应用的性能数据。应用的运行数据用于指示应用的运行状况,如应用的当前状态和KPI。应用的性能数据用于指示应用的资源占用状况,如CPU、内存、网络等资源的占用状况。
步骤405,根据监控数据对各个伸缩组进行伸缩决策。
控制节点根据采集到的各种应用的监控数据,分别对各个伸缩组进行伸缩决策。例如,当目标应用的运行数据指示当前业务繁忙和/或目标应用的性能数据指示资源占用率高于第一门限值时,决策伸展该目标应用所对应的伸缩组内的应用节点的数量。又例如,当目标应用的运行数据指示当前业务空闲和/或目标应用的性能数据指示资源占用率低于第二门限值时,决策收缩该目标应用所对应的伸缩组内的应用节点的数量。
在本发明实施例中,对根据监控数据对各个伸缩组进行伸缩决策的具体策略不作限定,其可以根据实际需求预先配置。另外,在本发明实施例中,通过结合应用的运行数据和性能数据两方面信息进行伸缩决策,从而能够感知应用真正的忙闲,使得决策结果更为准确。
步骤406,当决策扩容目标伸缩组内的虚拟机时,从目标伸缩组所包括的处于休眠状态的虚拟机中选择第一虚拟机,并唤醒第一虚拟机。
例如,结合参考图2,仍然以第一伸缩组为部署有App1的虚拟机,第二伸缩组为部署有App2的虚拟机为例。假设当前第一伸缩组中处于唤醒状态的虚拟机为VM1和VM5,如图2所示,VM1位于Host1,VM5位于Host2。当决策扩容第一伸缩组内的虚拟机时,第一伸缩组中当前处于休眠状态的虚拟机包括VM3和VM6,控制节点从VM3和VM6中选择一个虚拟机并唤醒。
可选地,第一虚拟机是第一宿主机上处于休眠状态且属于目标伸缩组的虚拟机。第一宿主机是伸缩池中当前空闲资源最多,并存在处于休眠状态且属于目标伸缩组的虚拟机的宿主机。也即,在伸展时,从当前空闲资源最多的宿主机中选择处于休眠状态的虚拟机唤醒。例如,如图2所示,当决策扩容第一伸缩组内的虚拟机时,假设Host1的当前空闲资源多于Host2,则控制节点选择唤醒VM3。
步骤407,当决策减容目标伸缩组内的虚拟机时,从目标伸缩组所包括的处于唤醒状态的虚拟机中选择第二虚拟机,并休眠第二虚拟机。
例如,结合参考图2,仍然以第一伸缩组为部署有App1的虚拟机,第二伸缩组为部署有App2的虚拟机为例。假设当前第二伸缩组中处于唤醒状态的虚拟机为VM2和VM7,如图2所示,VM2位于Host1,VM7位于Host2。当决策减容第二伸缩组内的虚拟机时,控制节点从VM2和VM7中选择一个虚拟机并休眠。
可选地,第二虚拟机是第二宿主机上处于唤醒状态且属于目标伸缩组的虚拟机。第二宿主机是伸缩池中当前空闲资源最少,并存在处于唤醒状态且属于目标伸缩组的虚拟机的宿主机。也即,在收缩时,从当前空闲资源最少的宿主机中选择处于唤醒状态的虚拟机休眠。例如,如图2所示,当决策减容第二伸缩组内的虚拟机时,假设Host1的当前空闲资源多于Host2,则控制节点选择休眠VM7。
此外,宿主机的当前空闲资源,可用从内存、CPU等资源中的任意一种或多种组合的角度进行衡量。
综上所述,本实施例提供的方法,通过在伸缩池中预先创建虚拟机,并在每一个虚拟机上预先部署应用,当决策扩容目标伸缩组内的虚拟机时,从目标伸缩组所包括的处于休眠状态的虚拟机中选择第一虚拟机,并唤醒该第一虚拟机;解决了现有技术提供的弹性伸缩方案,无法满足快速伸展的需求的问题;通过预创建虚拟机和预部署应用,唤醒处于休眠状态的虚拟机即可实现应用节点的快速伸展,达到了提高应用节点的伸缩速度,满足快速伸展的需求的技术效果。
另外,在伸展时,从当前空闲资源最多的宿主机中选择处于休眠状态的虚拟机唤醒;在收缩时,从当前空闲资源最少的宿主机中选择处于唤醒状态的虚拟机休眠,使得伸缩池中的各个宿主机的负载相对均衡。
另外,通过预创建虚拟机、预部署应用以及预配置应用,免去了对应用实现在伸展时自动加载和生效配置数据的要求,减少了应用的改造工作量。
另外,由于各个虚拟机创建在共享存储上,虚拟机在休眠时所占用的资源会自动释放,以使得其它应用和虚拟机可以抢占其释放的资源,达到了按需、合理地利用资源的目的。
图5是根据又一示例性实施例示出的一种弹性伸缩方法的流程图。在本实施例中,I层资源管理***相当于图2所示***架构中的I层平台,P层资源管理***相当于图2所示***架构中的P层平台。该方法可以包括如下步骤:
步骤501,在获取到虚拟机创建指示之后,I层资源管理***在共享存储上预创建目标数量的虚拟机。
步骤502,I层资源管理***根据获取到的应用部署请求,分别在每一个虚拟机上预部署一种应用,并预配置上述应用。
步骤503,I层资源管理***休眠暂时不用的虚拟机。
在初始部署阶段,运维人员预先在I层资源管理***创建虚拟机,并完成应用的预部署和预配置。之后,运维人员调测所有的虚拟机和应用可用之后,I层资源管理***休眠暂时不用的虚拟机。
步骤504,P层资源管理***采集对伸缩池所支持的应用的监控数据。
在本实施例中,用于伸缩决策的控制节点位于P层资源管理***。P层资源管理***可采用如下两种方式采集监控数据:
第一,P层资源管理***采集伸缩池所支持的应用的运行数据;
应用的运行数据用于指示应用的运行状况,如应用的当前状态和KPI。应用的运行数据由P层资源管理***主动采集。
第二,P层资源管理***接收I层资源管理***发送的伸缩池所支持的应用的性能数据。
应用的性能数据用于指示应用的资源占用状况,如CPU、内存、网络等资源的占用状况。应用的性能数据由I层资源管理***采集,并上报给P层资源管理***。
步骤505,P层资源管理***根据监控数据对各个伸缩组进行伸缩决策。
P层资源管理***可结合获取到的应用的运行数据和性能数据两方面信息进行伸缩决策,以使得决策结果更为准确。
步骤506,当决策扩容目标伸缩组内的虚拟机时,P层资源管理***向I层资源管理***发送唤醒指令。
唤醒指令用于指示I层资源管理***唤醒处于休眠状态且属于目标伸缩组的虚拟机。例如,唤醒指令中可携带目标伸缩组的标识或目标伸缩组所对应的应用的标识,以此告知I层资源管理***需要对哪个伸缩组进行扩容。
相应地,I层资源管理***接收P层资源管理***发送的唤醒指令。I层资源管理***在接收到唤醒指令之后,从目标伸缩组所包括的处于休眠状态的虚拟机中选择第一虚拟机,并唤醒第一虚拟机。
在一个示例中,采用如下步骤507至步骤509提供的方式,实现从当前空闲资源最多的宿主机中选择处于休眠状态的虚拟机唤醒。
步骤507,I层资源管理***在接收到唤醒指令之后,从伸缩池中选择处于休眠状态且属于目标伸缩组的虚拟机,并唤醒被选择的虚拟机。
例如,结合参考图2,仍然以第一伸缩组为部署有App1的虚拟机,第二伸缩组为部署有App2的虚拟机为例。假设当前第一伸缩组中处于唤醒状态的虚拟机为VM1和VM5,如图2所示,VM1位于Host1,VM5位于Host2。当P层资源管理***决策扩容第一伸缩组内的虚拟机时,P层资源管理***向I层资源管理***发送唤醒指令,I层资源管理***接收到唤醒指令之后,获取第一伸缩组中当前处于休眠状态的虚拟机(包括VM3和VM6),I层资源管理***从中选择任意一个虚拟机唤醒。例如,I层资源管理***选择唤醒VM3。
步骤508,I层资源管理***在接收到P层资源管理***发送的迁移指令之后,检测被唤醒的虚拟机是否位于第一宿主机之上。
P层资源管理***在向I层资源管理***发出唤醒指令之后,还向I层资源管理***发送迁移指令。迁移指令用于指示I层资源管理***将被唤醒的虚拟机迁移至第一宿主机;其中,第一宿主机是伸缩池中当前空闲资源最多,并存在处于休眠状态且属于目标伸缩组的虚拟机的宿主机。I层资源管理***在接收到迁移指令之后,检测被唤醒的虚拟机是否位于第一宿主机之上。例如,如图2所示,假设Host2为当前空闲资源最多,并存在处于休眠状态且属于第一伸缩组的虚拟机的宿主机。则I层资源管理***在接收到迁移指令之后,检测在步骤507中被唤醒的虚拟机是否位于Host2。
步骤509,若被唤醒的虚拟机不位于第一宿主机之上,则I层资源管理***将被唤醒的虚拟机从原始宿主机迁移至第一宿主机。
例如,I层资源管理***在步骤507中唤醒VM3,VM3位于Host1而非位于Host2,则I层资源管理***将VM3从Host1迁移至Host2,以使得伸缩池中的各个宿主机的负载相对均衡。
另外,若被唤醒的虚拟机位于第一宿主机之上,则I层资源管理***不执行虚拟机迁移操作。
当P层资源管理***决策减容目标伸缩组内的虚拟机时,可采用如下任意一种方式,实现从当前空闲资源最少的宿主机中选择处于唤醒状态的虚拟机休眠。
在第一种可能的实施方式中,如果I层资源管理***提供自动从当前空闲资源最少的宿主机中选择处于唤醒状态的虚拟机休眠的功能,则包括如下步骤510至步骤512:
步骤510,当决策减容目标伸缩组内的虚拟机时,P层资源管理***向I层资源管理***发送第一休眠指令。
第一休眠指令用于指示I层资源管理***休眠处于唤醒状态且属于目标伸缩组的虚拟机。例如,第一休眠指令中可携带目标伸缩组的标识或目标伸缩组所对应的应用的标识,以此告知I层资源管理***需要对哪个伸缩组进行减容。
相应地,I层资源管理***接收P层资源管理***发送的第一休眠指令。
步骤511,I层资源管理***在接收到第一休眠指令之后,从伸缩池中选择第二宿主机。
第二宿主机是伸缩池中当前空闲资源最少,并存在处于唤醒状态且属于目标伸缩组的虚拟机的宿主机。
例如,结合参考图2,仍然以第一伸缩组为部署有App1的虚拟机,第二伸缩组为部署有App2的虚拟机为例。假设当前第二伸缩组中处于唤醒状态的虚拟机为VM2和VM7,如图2所示,VM2位于Host1,VM7位于Host2。当决策减容第二伸缩组内的虚拟机时,P层资源管理***向I层资源管理***发送第一休眠指令,I层资源管理***在接收到第一休眠指令之后,获取Host1和Host2的当前空闲资源。假设Host1的当前空闲资源多于Host2,则I层资源管理***选择Host2。
步骤512,I层资源管理***从第二宿主机上选择第二虚拟机,并休眠第二虚拟机。
第二虚拟机是第二宿主机上处于唤醒状态且属于目标伸缩组的虚拟机。
在第二种可能的实施方式中,如果I层资源管理***提供查询各个宿主机的当前空闲资源的接口,则包括如下步骤513至步骤516:
步骤513,当决策减容目标伸缩组内的虚拟机时,P层资源管理***从I层资源管理***查询获取伸缩池中各个宿主机的当前空闲资源。
例如,当P层资源管理***决策减容目标伸缩组内的虚拟机时,P层资源管理***调用I层资源管理***提供的上述接口,向I层资源管理***发送查询请求,该查询请求用于请求获取伸缩池中各个宿主机的当前空闲资源。相应地,I层资源管理***接收到查询请求之后,向P层资源管理***发送伸缩池中各个宿主机的当前空闲资源。
步骤514,P层资源管理***根据各个宿主机的当前空闲资源,选择第二宿主机。
第二宿主机是伸缩池中当前空闲资源最少,并存在处于唤醒状态且属于目标伸缩组的虚拟机的宿主机。
步骤515,P层资源管理***向I层资源管理***发送第二休眠指令。
第二休眠指令中携带第二宿主机的标识,第二休眠指令用于指示I层资源管理***休眠第二宿主机上处于唤醒状态且属于目标伸缩组的虚拟机。可选地,第二休眠指令中还可携带目标伸缩组的标识或目标伸缩组所对应的应用的标识,以此告知I层资源管理***需要对哪个伸缩组进行减容。或者,第二休眠指令中还可被选择休眠的第二虚拟机的标识,以此告知I层资源管理***需要休眠哪个虚拟机。其中,第二虚拟机是第二宿主机上处于唤醒状态且属于目标伸缩组的虚拟机。
步骤516,I层资源管理***在接收到第二休眠指令之后,从第二宿主机上选择第二虚拟机,并休眠第二虚拟机。
在第三种可能的实施方式中,如果I层资源管理***既不支持上述第一种可能的实施方式中的功能,也不支持上述第二种可能的实施方式中的功能,则包括如下步骤517至步骤519:
步骤517,当决策减容目标伸缩组内的虚拟机时,P层资源管理***从目标伸缩组所包括的处于唤醒状态的虚拟机中选择最早启动的虚拟机作为第二虚拟机。
步骤518,P层资源管理***向I层资源管理***发送第三休眠指令。
第三休眠指令中携带第二虚拟机的标识,第三休眠指令用于指示I层资源管理***休眠第二虚拟机。
步骤519,I层资源管理***在接收到第三休眠指令之后,休眠第二虚拟机。
考虑到最早启动的虚拟机所在的宿主机有很大概率是当前空闲资源最少的宿主机,因此选择最早启动的虚拟机作为第二虚拟机休眠,可以在很大程度上满足优选需求。
综上所述,本实施例提供的方法,通过在伸缩池中预先创建虚拟机,并在每一个虚拟机上预先部署应用,当决策扩容目标伸缩组内的虚拟机时,从目标伸缩组所包括的处于休眠状态的虚拟机中选择第一虚拟机,并唤醒该第一虚拟机;解决了现有技术提供的弹性伸缩方案,无法满足快速伸展的需求的问题;通过预创建虚拟机和预部署应用,唤醒处于休眠状态的虚拟机即可实现应用节点的快速伸展,达到了提高应用节点的伸缩速度,满足快速伸展的需求的技术效果。
另外,在伸展时,采用热迁移方式将虚拟机迁移至当前空闲资源最多的宿主机之上,以使得伸缩池中的各个宿主机的负载相对均衡。
另外,本实施例还提供了三种方式,实现从当前空闲资源最少的宿主机中选择处于唤醒状态的虚拟机休眠。在实际应用中,可根据I层资源管理***所支持的功能,选择任一种方式。
在一个典型的应用场景中,对于传统的电性业务使能部件短消息服务中心(ShortMessage Service Center,SMSC)来说,由于短信业务流量可能在数分钟内增长2至10倍,因此外部需求是:运营商要求SMSC能够在3分钟内伸展出新的应用节点。而由于SMSC的可伸缩模块的若干配置参数都是私有配置,即与模块实例相关,如本节点的网元ID、主用的计费节点等,内部需求之一是:SMSC要求不进行改造自动配置加载就能实现业务伸展时自动上线;另外由于SMSC的虚拟机镜像模板较大,为100G左右,因此在创建虚拟机时耗时在20至30分钟,如果在运行态伸展时才创建虚拟机,则无法在3分钟内伸展出应用节点,因此内部需求之二是:SMSC要求不在伸展时创建虚拟机,而是启动实现部署调测完毕的虚拟机。
本发明提供的技术方案能够很好地满足上述需求。运维人员按照要求实现业务上线前的虚拟机预创建、业务预部署和预配置;P层平台实现了业务监控和伸缩决策,并调用I层平台实现业务伸展时启动虚拟机、业务收缩时停止虚拟机;I层平台实现资源优选,当接收到P层平台启动虚拟机的请求后,在伸缩池中寻找空闲资源(CPU和/或内存)最多的宿主机上启动虚拟机,当接收到P层平台停止虚拟机的请求后(其中带有需要停止的虚拟机的标识),停止相应的虚拟机。
下述为本发明***实施例,对于本发明***实施例中未披露的细节,请参照本发明方法实施例。
图6是根据一示例性实施例示出的一种弹性伸缩***的框图,该***可以包括:采集模块610、决策模块620和唤醒模块630。
采集模块610,用于采集对伸缩池所支持的应用的监控数据。其中,所述伸缩池中包括至少一个伸缩组,每一个伸缩组包括至少一个预先创建的虚拟机,且每一个虚拟机上预先部署有一种应用。
决策模块620,用于根据所述监控数据对各个所述伸缩组进行伸缩决策。
唤醒模块630,用于当决策扩容目标伸缩组内的虚拟机时,从所述目标伸缩组所包括的处于休眠状态的虚拟机中选择第一虚拟机,并唤醒所述第一虚拟机。
综上所述,本实施例提供的***,通过在伸缩池中预先创建虚拟机,并在每一个虚拟机上预先部署应用,当决策扩容目标伸缩组内的虚拟机时,从目标伸缩组所包括的处于休眠状态的虚拟机中选择第一虚拟机,并唤醒该第一虚拟机;解决了现有技术提供的弹性伸缩方案,无法满足快速伸展的需求的问题;通过预创建虚拟机和预部署应用,唤醒处于休眠状态的虚拟机即可实现应用节点的快速伸展,达到了提高应用节点的伸缩速度,满足快速伸展的需求的技术效果。
在一个示例中,所述第一虚拟机是第一宿主机上处于休眠状态且属于所述目标伸缩组的虚拟机。所述第一宿主机是所述伸缩池中当前空闲资源最多,并存在处于休眠状态且属于所述目标伸缩组的虚拟机的宿主机。
在基于图6所示实施例提供的一个可选实施例中,如图7所示,所述***还包括:休眠模块640。
所述休眠模块640,用于当决策减容所述目标伸缩组内的虚拟机时,从所述目标伸缩组所包括的处于唤醒状态的虚拟机中选择第二虚拟机,并休眠所述第二虚拟机。
其中,所述第二虚拟机是第二宿主机上处于唤醒状态且属于所述目标伸缩组的虚拟机;所述第二宿主机是所述伸缩池中当前空闲资源最少,并存在处于唤醒状态且属于所述目标伸缩组的虚拟机的宿主机。
在基于图6所示实施例提供的另一可选实施例中,如图7所示,所述***还包括:预处理模块650。
所述预处理模块650,具体用于:在获取到虚拟机创建指示之后,在共享存储上预创建目标数量的虚拟机;根据获取到的应用部署请求,分别在每一个虚拟机上预部署一种应用,并预配置所述应用;休眠暂时不用的虚拟机。
图8是根据另一示例性实施例示出的一种弹性伸缩***的框图,该***包括:P层资源管理***81和I层资源管理***82。
P层资源管理***81包括:采集模块811、决策模块812和唤醒指令发送模块813。
采集模块811,用于采集对伸缩池所支持的应用的监控数据。其中,所述伸缩池中包括至少一个伸缩组,每一个伸缩组包括至少一个预先创建的虚拟机,且每一个虚拟机上预先部署有一种应用。
决策模块812,用于根据所述监控数据对各个所述伸缩组进行伸缩决策。
唤醒指令发送模块813,用于当决策扩容目标伸缩组内的虚拟机时,向所述I层资源管理***82发送唤醒指令,所述唤醒指令用于指示所述I层资源管理***82唤醒处于休眠状态且属于所述目标伸缩组的虚拟机。
I层资源管理***82包括:唤醒指令接收模块821和虚拟机唤醒模块822。
唤醒指令接收模块821,用于接收所述唤醒指令。
虚拟机唤醒模块822,用于从所述伸缩池中选择第一虚拟机,并唤醒所述第一虚拟机。
可选地,所述第一虚拟机是第一宿主机上处于休眠状态且属于所述目标伸缩组的虚拟机。所述第一宿主机是所述伸缩池中当前空闲资源最多,并存在处于休眠状态且属于所述目标伸缩组的虚拟机的宿主机。
在一个示例中,所述虚拟机唤醒模块822,具体用于:从所述伸缩池中选择处于休眠状态且属于所述目标伸缩组的虚拟机,并唤醒被选择的所述虚拟机;在所述唤醒指令接收模块821接收到所述P层资源管理***81发送的迁移指令之后,检测被唤醒的所述虚拟机是否位于所述第一宿主机之上;若被唤醒的所述虚拟机不位于所述第一宿主机之上,则将被唤醒的所述虚拟机从原始宿主机迁移至所述第一宿主机。所述P层资源管理***81的唤醒指令发送模块813还用于向所述I层资源管理***82发送所述迁移指令。
在一种可能的实施方式中,如图8所示,P层资源管理***81还包括:休眠指令发送模块814。I层资源管理***82还包括:休眠指令接收模块823和虚拟机休眠模块824。
休眠指令发送模块814,用于当决策减容所述目标伸缩组内的虚拟机时,向所述I层资源管理***82发送第一休眠指令,所述第一休眠指令用于指示所述I层资源管理***休眠处于唤醒状态且属于所述目标伸缩组的虚拟机。
休眠指令接收模块823,用于接收所述第一休眠指令。
虚拟机休眠模块824,用于从所述伸缩池中选择所述第二宿主机,从所述第二宿主机上选择第二虚拟机,并休眠所述第二虚拟机。
可选地,所述第二虚拟机是第二宿主机上处于唤醒状态且属于所述目标伸缩组的虚拟机。所述第二宿主机是所述伸缩池中当前空闲资源最少,并存在处于唤醒状态且属于所述目标伸缩组的虚拟机的宿主机。
在另一可能的实施方式中,P层资源管理***81还包括:查询模块(图中未示出)、选择模块(图中未示出)和休眠指令发送模块。I层资源管理***82还包括:休眠指令接收模块和虚拟机休眠模块。
查询模块,用于当决策减容所述目标伸缩组内的虚拟机时,从所述I层资源管理***82查询获取所述伸缩池中各个宿主机的当前空闲资源。
选择模块,用于根据所述各个宿主机的当前空闲资源,选择所述第二宿主机。所述第二宿主机是所述伸缩池中当前空闲资源最少,并存在处于唤醒状态且属于所述目标伸缩组的虚拟机的宿主机。
休眠指令发送模块,用于向所述I层资源管理***82发送第二休眠指令,所述第二休眠指令中携带所述第二宿主机的标识,所述第二休眠指令用于指示所述I层资源管理***休眠所述第二宿主机上处于唤醒状态且属于所述目标伸缩组的虚拟机。
休眠指令接收模块,用于接收所述第二休眠指令。
虚拟机休眠模块,用于从所述第二宿主机上选择第二虚拟机,并休眠所述第二虚拟机。所述第二虚拟机是第二宿主机上处于唤醒状态且属于所述目标伸缩组的虚拟机。
在又一可能的实施方式中,P层资源管理***81还包括:选择模块(图中未示出)和休眠指令发送模块。I层资源管理***82还包括:休眠指令接收模块和虚拟机休眠模块。
选择模块,用于当决策减容所述目标伸缩组内的虚拟机时,从所述目标伸缩组所包括的处于唤醒状态的虚拟机中选择最早启动的虚拟机作为第二虚拟机。
休眠指令发送模块,用于向所述I层资源管理***82发送第三休眠指令,所述第三休眠指令中携带所述第二虚拟机的标识,所述第三休眠指令用于指示所述I层资源管理***休眠所述第二虚拟机。
休眠指令接收模块,用于接收所述第三休眠指令。
虚拟机休眠模块,用于休眠所述第二虚拟机。
在一个示例中,所述采集模块811,具体用于:采集所述伸缩池所支持的应用的运行数据,所述运行数据用于指示应用的运行状况;和/或,接收I层资源管理***82发送的所述伸缩池所支持的应用的性能数据,所述性能数据用于指示应用的资源占用状况。
可选地,如图8所示,所述I层资源管理***82还包括:预处理模块825。所述预处理模块825,具体用于:在获取到虚拟机创建指示之后,在共享存储上预创建目标数量的虚拟机;根据获取到的应用部署请求,分别在每一个虚拟机上预部署一种应用,并预配置所述应用;休眠暂时不用的虚拟机。
综上所述,本实施例提供的***,通过在伸缩池中预先创建虚拟机,并在每一个虚拟机上预先部署应用,当决策扩容目标伸缩组内的虚拟机时,从目标伸缩组所包括的处于休眠状态的虚拟机中选择第一虚拟机,并唤醒该第一虚拟机;解决了现有技术提供的弹性伸缩方案,无法满足快速伸展的需求的问题;通过预创建虚拟机和预部署应用,唤醒处于休眠状态的虚拟机即可实现应用节点的快速伸展,达到了提高应用节点的伸缩速度,满足快速伸展的需求的技术效果。
需要说明的是,上述实施例提供的***在实现其功能时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的***与方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
上述主要从控制节点的角度对本发明实施例提供的方案进行了介绍。可以理解的是,控制节点为了实现上述功能,其包含了执行各个功能相应的硬件结构和/或软件模块。结合本发明中所公开的实施例描述的各示例的模块及算法步骤,本发明实施例能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。本领域技术人员可以对每个特定的应用来使用不同的方法来实现所描述的功能,但是这种实现不应认为超出本发明实施例的技术方案的范围。
图9是根据一示例性实施例示出的一种控制节点的结构示意图。例如,该控制节点可以是服务器,用于实现上述方法示例的功能。控制节点900可以包括:发射器/接收器901和处理器902。
发射器/接收器901用于支持控制节点900与外部设备之间收发信息。处理器902用于实现控制节点900的各项功能,比如伸缩决策、资源优选等。所述处理器902还用于执行上述图3至图5所示实施例中的各个步骤,或者本发明所描述的技术方案的其它步骤。
进一步地,控制节点900还可以包括存储器903,存储器903用于存储控制节点900的程序代码和数据。
此外,控制节点900还可以包括总线904。所述存储器903和所述发射器/接收器901通过总线904与所述处理器902相连。
可以理解的是,图9仅仅示出了控制节点900的简化设计。在实际应用中,控制节点900可以包含任意数量的发射器,接收器,处理器,存储器等,而所有可以实现本发明实施例的设备都在本发明实施例的保护范围之内。
应当理解的是,在本文中提及的“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (20)
1.一种弹性伸缩方法,其特征在于,所述方法包括:
采集对伸缩池所支持的应用的监控数据;其中,所述伸缩池中包括至少一个伸缩组,每一个伸缩组包括至少一个预先创建的虚拟机,且每一个虚拟机上预先部署有一种应用;
根据所述监控数据对各个所述伸缩组进行伸缩决策;
当决策扩容目标伸缩组内的虚拟机时,从所述目标伸缩组所包括的处于休眠状态的虚拟机中选择第一虚拟机,并唤醒所述第一虚拟机。
2.根据权利要求1所述的方法,其特征在于,所述第一虚拟机是第一宿主机上处于休眠状态且属于所述目标伸缩组的虚拟机;所述第一宿主机是所述伸缩池中当前空闲资源最多,并存在处于休眠状态且属于所述目标伸缩组的虚拟机的宿主机。
3.根据权利要求2所述的方法,其特征在于,所述当决策扩容目标伸缩组内的虚拟机时,从所述目标伸缩组所包括的处于休眠状态的虚拟机中选择第一虚拟机,并唤醒所述第一虚拟机,包括:
当决策扩容所述目标伸缩组内的虚拟机时,P层资源管理***向I层资源管理***发送唤醒指令,所述唤醒指令用于指示所述I层资源管理***唤醒处于休眠状态且属于所述目标伸缩组的虚拟机;
所述I层资源管理***在接收到所述唤醒指令之后,从所述伸缩池中选择所述第一虚拟机,并唤醒所述第一虚拟机。
4.根据权利要求3所述的方法,其特征在于,所述I层资源管理***在接收到所述唤醒指令之后,从所述伸缩池中选择所述第一虚拟机,并唤醒所述第一虚拟机,包括:
所述I层资源管理***在接收到所述唤醒指令之后,从所述伸缩池中选择处于休眠状态且属于所述目标伸缩组的虚拟机,并唤醒被选择的所述虚拟机;
所述I层资源管理***在接收到所述P层资源管理***发送的迁移指令之后,检测被唤醒的所述虚拟机是否位于所述第一宿主机之上;
若被唤醒的所述虚拟机不位于所述第一宿主机之上,则所述I层资源管理***将被唤醒的所述虚拟机从原始宿主机迁移至所述第一宿主机。
5.根据权利要求1所述的方法,其特征在于,所述根据所述监控数据对各个所述伸缩组进行伸缩决策之后,还包括:
当决策减容所述目标伸缩组内的虚拟机时,从所述目标伸缩组所包括的处于唤醒状态的虚拟机中选择第二虚拟机,并休眠所述第二虚拟机;
其中,所述第二虚拟机是第二宿主机上处于唤醒状态且属于所述目标伸缩组的虚拟机;所述第二宿主机是所述伸缩池中当前空闲资源最少,并存在处于唤醒状态且属于所述目标伸缩组的虚拟机的宿主机。
6.根据权利要求5所述的方法,其特征在于,所述当决策减容所述目标伸缩组内的虚拟机时,从所述目标伸缩组所包括的处于唤醒状态的虚拟机中选择第二虚拟机,并休眠所述第二虚拟机,包括:
当决策减容所述目标伸缩组内的虚拟机时,P层资源管理***向I层资源管理***发送第一休眠指令,所述第一休眠指令用于指示所述I层资源管理***休眠处于唤醒状态且属于所述目标伸缩组的虚拟机;
所述I层资源管理***在接收到所述第一休眠指令之后,从所述伸缩池中选择所述第二宿主机;
所述I层资源管理***从所述第二宿主机上选择所述第二虚拟机,并休眠所述第二虚拟机。
7.根据权利要求5所述的方法,其特征在于,所述当决策减容所述目标伸缩组内的虚拟机时,从所述目标伸缩组所包括的处于唤醒状态的虚拟机中选择第二虚拟机,并休眠所述第二虚拟机,包括:
当决策减容所述目标伸缩组内的虚拟机时,P层资源管理***从I层资源管理***查询获取所述伸缩池中各个宿主机的当前空闲资源;
所述P层资源管理***根据所述各个宿主机的当前空闲资源,选择所述第二宿主机;
所述P层资源管理***向所述I层资源管理***发送第二休眠指令,所述第二休眠指令中携带所述第二宿主机的标识,所述第二休眠指令用于指示所述I层资源管理***休眠所述第二宿主机上处于唤醒状态且属于所述目标伸缩组的虚拟机;
所述I层资源管理***在接收到所述第二休眠指令之后,从所述第二宿主机上选择所述第二虚拟机,并休眠所述第二虚拟机。
8.根据权利要求5所述的方法,其特征在于,所述当决策减容所述目标伸缩组内的虚拟机时,从所述目标伸缩组所包括的处于唤醒状态的虚拟机中选择第二虚拟机,并休眠所述第二虚拟机,包括:
当决策减容所述目标伸缩组内的虚拟机时,P层资源管理***从所述目标伸缩组所包括的处于唤醒状态的虚拟机中选择最早启动的虚拟机作为所述第二虚拟机;
所述P层资源管理***向所述I层资源管理***发送第三休眠指令,所述第三休眠指令中携带所述第二虚拟机的标识,所述第三休眠指令用于指示所述I层资源管理***休眠所述第二虚拟机;
所述I层资源管理***在接收到所述第三休眠指令之后,休眠所述第二虚拟机。
9.根据权利要求1至8任一项所述的方法,其特征在于,所述采集对伸缩池所支持的应用的监控数据,包括:
P层资源管理***采集所述伸缩池所支持的应用的运行数据,所述运行数据用于指示应用的运行状况;和/或,
P层资源管理***接收I层资源管理***发送的所述伸缩池所支持的应用的性能数据,所述性能数据用于指示应用的资源占用状况。
10.根据权利要求1至8任一项所述的方法,其特征在于,所述采集对伸缩池所支持的应用的监控数据之前,还包括:
在获取到虚拟机创建指示之后,在共享存储上预创建目标数量的虚拟机;
根据获取到的应用部署请求,分别在每一个虚拟机上预部署一种应用,并预配置所述应用;
休眠暂时不用的虚拟机。
11.一种弹性伸缩***,其特征在于,所述***包括:
采集模块,用于采集对伸缩池所支持的应用的监控数据;其中,所述伸缩池中包括至少一个伸缩组,每一个伸缩组包括至少一个预先创建的虚拟机,且每一个虚拟机上预先部署有一种应用;
决策模块,用于根据所述监控数据对各个所述伸缩组进行伸缩决策;
唤醒模块,用于当决策扩容目标伸缩组内的虚拟机时,从所述目标伸缩组所包括的处于休眠状态的虚拟机中选择第一虚拟机,并唤醒所述第一虚拟机。
12.根据权利要求11所述的***,其特征在于,所述第一虚拟机是第一宿主机上处于休眠状态且属于所述目标伸缩组的虚拟机;所述第一宿主机是所述伸缩池中当前空闲资源最多,并存在处于休眠状态且属于所述目标伸缩组的虚拟机的宿主机。
13.根据权利要求12所述的***,其特征在于,所述***包括:P层资源管理***和I层资源管理***;所述唤醒模块包括:属于所述P层资源管理***的唤醒指令发送模块,以及属于所述I层资源管理***的唤醒指令接收模块和虚拟机唤醒模块;
所述唤醒指令发送模块,用于当决策扩容所述目标伸缩组内的虚拟机时,向所述I层资源管理***发送唤醒指令,所述唤醒指令用于指示所述I层资源管理***唤醒处于休眠状态且属于所述目标伸缩组的虚拟机;
所述唤醒指令接收模块,用于接收所述唤醒指令;
所述虚拟机唤醒模块,用于从所述伸缩池中选择所述第一虚拟机,并唤醒所述第一虚拟机。
14.根据权利要求13所述的***,其特征在于,所述虚拟机唤醒模块,具体用于:
从所述伸缩池中选择处于休眠状态且属于所述目标伸缩组的虚拟机,并唤醒被选择的所述虚拟机;
在所述唤醒指令接收模块接收到所述P层资源管理***发送的迁移指令之后,检测被唤醒的所述虚拟机是否位于所述第一宿主机之上;
若被唤醒的所述虚拟机不位于所述第一宿主机之上,则将被唤醒的所述虚拟机从原始宿主机迁移至所述第一宿主机。
15.根据权利要求11所述的***,其特征在于,所述***还包括:休眠模块;
所述休眠模块,用于当决策减容所述目标伸缩组内的虚拟机时,从所述目标伸缩组所包括的处于唤醒状态的虚拟机中选择第二虚拟机,并休眠所述第二虚拟机;
其中,所述第二虚拟机是第二宿主机上处于唤醒状态且属于所述目标伸缩组的虚拟机;所述第二宿主机是所述伸缩池中当前空闲资源最少,并存在处于唤醒状态且属于所述目标伸缩组的虚拟机的宿主机。
16.根据权利要求15所述的***,其特征在于,所述***包括:P层资源管理***和I层资源管理***;所述休眠模块包括:属于所述P层资源管理***的休眠指令发送模块,以及属于所述I层资源管理***的休眠指令接收模块和虚拟机休眠模块;
所述休眠指令发送模块,用于当决策减容所述目标伸缩组内的虚拟机时,向所述I层资源管理***发送第一休眠指令,所述第一休眠指令用于指示所述I层资源管理***休眠处于唤醒状态且属于所述目标伸缩组的虚拟机;
所述休眠指令接收模块,用于接收所述第一休眠指令;
所述虚拟机休眠模块,用于从所述伸缩池中选择所述第二宿主机,从所述第二宿主机上选择所述第二虚拟机,并休眠所述第二虚拟机。
17.根据权利要求15所述的***,其特征在于,所述***包括:P层资源管理***和I层资源管理***;所述休眠模块包括:属于所述P层资源管理***的查询模块、选择模块和休眠指令发送模块,以及属于所述I层资源管理***的休眠指令接收模块和虚拟机休眠模块;
所述查询模块,用于当决策减容所述目标伸缩组内的虚拟机时,从所述I层资源管理***查询获取所述伸缩池中各个宿主机的当前空闲资源;
所述选择模块,用于根据所述各个宿主机的当前空闲资源,选择所述第二宿主机;
所述休眠指令发送模块,用于向所述I层资源管理***发送第二休眠指令,所述第二休眠指令中携带所述第二宿主机的标识,所述第二休眠指令用于指示所述I层资源管理***休眠所述第二宿主机上处于唤醒状态且属于所述目标伸缩组的虚拟机;
所述休眠指令接收模块,用于接收所述第二休眠指令;
所述虚拟机休眠模块,用于从所述第二宿主机上选择所述第二虚拟机,并休眠所述第二虚拟机。
18.根据权利要求15所述的***,其特征在于,所述***包括:P层资源管理***和I层资源管理***;所述休眠模块包括:属于所述P层资源管理***的选择模块和休眠指令发送模块,以及属于所述I层资源管理***的休眠指令接收模块和虚拟机休眠模块;
所述选择模块,用于当决策减容所述目标伸缩组内的虚拟机时,从所述目标伸缩组所包括的处于唤醒状态的虚拟机中选择最早启动的虚拟机作为所述第二虚拟机;
所述休眠指令发送模块,用于向所述I层资源管理***发送第三休眠指令,所述第三休眠指令中携带所述第二虚拟机的标识,所述第三休眠指令用于指示所述I层资源管理***休眠所述第二虚拟机;
所述休眠指令接收模块,用于接收所述第三休眠指令;
所述虚拟机休眠模块,用于休眠所述第二虚拟机。
19.根据权利要求11至18任一项所述的***,其特征在于,所述采集模块,具体用于:
P层资源管理***采集所述伸缩池所支持的应用的运行数据,所述运行数据用于指示应用的运行状况;和/或,
P层资源管理***接收I层资源管理***发送的所述伸缩池所支持的应用的性能数据,所述性能数据用于指示应用的资源占用状况。
20.根据权利要求11至18任一项所述的***,其特征在于,所述***还包括:预处理模块;所述预处理模块,具体用于:
在获取到虚拟机创建指示之后,在共享存储上预创建目标数量的虚拟机;
根据获取到的应用部署请求,分别在每一个虚拟机上预部署一种应用,并预配置所述应用;
休眠暂时不用的虚拟机。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610657659.3A CN106227582B (zh) | 2016-08-10 | 2016-08-10 | 弹性伸缩方法及*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610657659.3A CN106227582B (zh) | 2016-08-10 | 2016-08-10 | 弹性伸缩方法及*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106227582A true CN106227582A (zh) | 2016-12-14 |
CN106227582B CN106227582B (zh) | 2019-06-11 |
Family
ID=57548085
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610657659.3A Active CN106227582B (zh) | 2016-08-10 | 2016-08-10 | 弹性伸缩方法及*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106227582B (zh) |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107810488A (zh) * | 2017-08-11 | 2018-03-16 | 深圳前海达闼云端智能科技有限公司 | 一种虚拟机的状态管理方法、装置和智能终端 |
CN108574718A (zh) * | 2017-04-19 | 2018-09-25 | 北京金山云网络技术有限公司 | 一种云主机创建方法及装置 |
CN108574719A (zh) * | 2017-04-19 | 2018-09-25 | 北京金山云网络技术有限公司 | 一种云主机创建方法及装置 |
CN108628660A (zh) * | 2017-03-24 | 2018-10-09 | 华为技术有限公司 | 一种虚拟机扩缩容方法及虚拟管理设备 |
CN109002354A (zh) * | 2017-06-07 | 2018-12-14 | 中国科学院信息工程研究所 | 一种基于OpenStack的计算资源容量弹性伸缩方法及*** |
CN109302302A (zh) * | 2017-07-25 | 2019-02-01 | 中兴通讯股份有限公司 | 服务网元的扩缩方法、***及计算机可读存储介质 |
CN109873718A (zh) * | 2019-01-23 | 2019-06-11 | 平安科技(深圳)有限公司 | 一种容器自适应伸缩方法、服务器及存储介质 |
CN109995564A (zh) * | 2017-12-31 | 2019-07-09 | ***通信集团辽宁有限公司 | 自动开通维护端口的方法、装置、设备及介质 |
CN111580925A (zh) * | 2019-02-18 | 2020-08-25 | 华为技术有限公司 | 应用伸展的方法和装置 |
CN112000606A (zh) * | 2020-07-22 | 2020-11-27 | 中国建设银行股份有限公司 | 适用于部署应用集群的计算机集群和基础设施集群 |
CN113296931A (zh) * | 2020-07-14 | 2021-08-24 | 阿里巴巴集团控股有限公司 | 一种资源的控制方法、***、计算设备及存储介质 |
CN115904717A (zh) * | 2022-11-30 | 2023-04-04 | 湖南长银五八消费金融股份有限公司 | 云平台中应用***部署方法、装置和计算机设备 |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101719081A (zh) * | 2009-12-01 | 2010-06-02 | 北京大学 | 一种虚拟机调度方法 |
CN102662750A (zh) * | 2012-03-23 | 2012-09-12 | 上海交通大学 | 基于弹性虚拟机池的虚拟机资源优化控制方法及其*** |
JP2012208781A (ja) * | 2011-03-30 | 2012-10-25 | Internatl Business Mach Corp <Ibm> | 情報処理システム、情報処理装置、スケーリング方法、プログラムおよび記録媒体 |
CN103034453A (zh) * | 2011-09-30 | 2013-04-10 | 国际商业机器公司 | 管理虚拟机实例中预安装应用的持久数据的方法和装置 |
KR20130046040A (ko) * | 2011-10-27 | 2013-05-07 | 삼성에스디에스 주식회사 | 퍼지 제어 기반 가상 머신 스케일링 시스템 및 방법 |
US20130179895A1 (en) * | 2012-01-09 | 2013-07-11 | Microsoft Corporation | Paas hierarchial scheduling and auto-scaling |
CN103220337A (zh) * | 2013-03-22 | 2013-07-24 | 合肥工业大学 | 基于自适应弹性控制的云计算资源优化配置方法 |
CN103810020A (zh) * | 2014-02-14 | 2014-05-21 | 华为技术有限公司 | 虚拟机弹性伸缩方法及装置 |
CN103870341A (zh) * | 2014-03-12 | 2014-06-18 | 汉柏科技有限公司 | 一种调整虚拟机资源的方法和*** |
CN104219290A (zh) * | 2014-08-19 | 2014-12-17 | 南京邮电大学 | 一种多模块云应用弹性配置方法 |
CN104317638A (zh) * | 2014-10-17 | 2015-01-28 | 华为技术有限公司 | 一种应用伸缩管理方法及装置 |
-
2016
- 2016-08-10 CN CN201610657659.3A patent/CN106227582B/zh active Active
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101719081A (zh) * | 2009-12-01 | 2010-06-02 | 北京大学 | 一种虚拟机调度方法 |
JP2012208781A (ja) * | 2011-03-30 | 2012-10-25 | Internatl Business Mach Corp <Ibm> | 情報処理システム、情報処理装置、スケーリング方法、プログラムおよび記録媒体 |
CN103034453A (zh) * | 2011-09-30 | 2013-04-10 | 国际商业机器公司 | 管理虚拟机实例中预安装应用的持久数据的方法和装置 |
KR20130046040A (ko) * | 2011-10-27 | 2013-05-07 | 삼성에스디에스 주식회사 | 퍼지 제어 기반 가상 머신 스케일링 시스템 및 방법 |
US20130179895A1 (en) * | 2012-01-09 | 2013-07-11 | Microsoft Corporation | Paas hierarchial scheduling and auto-scaling |
CN102662750A (zh) * | 2012-03-23 | 2012-09-12 | 上海交通大学 | 基于弹性虚拟机池的虚拟机资源优化控制方法及其*** |
CN103220337A (zh) * | 2013-03-22 | 2013-07-24 | 合肥工业大学 | 基于自适应弹性控制的云计算资源优化配置方法 |
CN103810020A (zh) * | 2014-02-14 | 2014-05-21 | 华为技术有限公司 | 虚拟机弹性伸缩方法及装置 |
CN103870341A (zh) * | 2014-03-12 | 2014-06-18 | 汉柏科技有限公司 | 一种调整虚拟机资源的方法和*** |
CN104219290A (zh) * | 2014-08-19 | 2014-12-17 | 南京邮电大学 | 一种多模块云应用弹性配置方法 |
CN104317638A (zh) * | 2014-10-17 | 2015-01-28 | 华为技术有限公司 | 一种应用伸缩管理方法及装置 |
Cited By (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108628660A (zh) * | 2017-03-24 | 2018-10-09 | 华为技术有限公司 | 一种虚拟机扩缩容方法及虚拟管理设备 |
CN108574718B (zh) * | 2017-04-19 | 2021-03-26 | 北京金山云网络技术有限公司 | 一种云主机创建方法及装置 |
CN108574718A (zh) * | 2017-04-19 | 2018-09-25 | 北京金山云网络技术有限公司 | 一种云主机创建方法及装置 |
CN108574719A (zh) * | 2017-04-19 | 2018-09-25 | 北京金山云网络技术有限公司 | 一种云主机创建方法及装置 |
CN108574719B (zh) * | 2017-04-19 | 2021-04-20 | 北京金山云网络技术有限公司 | 一种云主机创建方法及装置 |
CN109002354A (zh) * | 2017-06-07 | 2018-12-14 | 中国科学院信息工程研究所 | 一种基于OpenStack的计算资源容量弹性伸缩方法及*** |
CN109002354B (zh) * | 2017-06-07 | 2022-05-03 | 中国科学院信息工程研究所 | 一种基于OpenStack的计算资源容量弹性伸缩方法及*** |
CN109302302B (zh) * | 2017-07-25 | 2022-08-12 | 中兴通讯股份有限公司 | 服务网元的扩缩方法、***及计算机可读存储介质 |
CN109302302A (zh) * | 2017-07-25 | 2019-02-01 | 中兴通讯股份有限公司 | 服务网元的扩缩方法、***及计算机可读存储介质 |
CN107810488A (zh) * | 2017-08-11 | 2018-03-16 | 深圳前海达闼云端智能科技有限公司 | 一种虚拟机的状态管理方法、装置和智能终端 |
CN109995564B (zh) * | 2017-12-31 | 2022-04-15 | ***通信集团辽宁有限公司 | 自动开通维护端口的方法、装置、设备及介质 |
CN109995564A (zh) * | 2017-12-31 | 2019-07-09 | ***通信集团辽宁有限公司 | 自动开通维护端口的方法、装置、设备及介质 |
CN109873718A (zh) * | 2019-01-23 | 2019-06-11 | 平安科技(深圳)有限公司 | 一种容器自适应伸缩方法、服务器及存储介质 |
CN111580925A (zh) * | 2019-02-18 | 2020-08-25 | 华为技术有限公司 | 应用伸展的方法和装置 |
CN111580925B (zh) * | 2019-02-18 | 2023-11-17 | 华为技术有限公司 | 应用伸展的方法和装置 |
CN113296931A (zh) * | 2020-07-14 | 2021-08-24 | 阿里巴巴集团控股有限公司 | 一种资源的控制方法、***、计算设备及存储介质 |
CN112000606A (zh) * | 2020-07-22 | 2020-11-27 | 中国建设银行股份有限公司 | 适用于部署应用集群的计算机集群和基础设施集群 |
CN115904717A (zh) * | 2022-11-30 | 2023-04-04 | 湖南长银五八消费金融股份有限公司 | 云平台中应用***部署方法、装置和计算机设备 |
CN115904717B (zh) * | 2022-11-30 | 2023-11-17 | 湖南长银五八消费金融股份有限公司 | 云平台中应用***部署方法、装置和计算机设备 |
Also Published As
Publication number | Publication date |
---|---|
CN106227582B (zh) | 2019-06-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106227582A (zh) | 弹性伸缩方法及*** | |
CN108737270B (zh) | 一种服务器集群的资源管理方法和装置 | |
CN110677305B (zh) | 一种云计算环境下的自动伸缩方法和*** | |
CN111385114B (zh) | Vnf服务实例化方法及装置 | |
US10628273B2 (en) | Node system, server apparatus, scaling control method, and program | |
EP2878139B1 (en) | Methods and apparatuses for facilitating utilization of cloud services | |
CN111796908B (zh) | 一种资源自动弹性伸缩的***、方法及云平台 | |
CN110383764B (zh) | 无服务器***中使用历史数据处理事件的***和方法 | |
US11030009B2 (en) | Systems and methods for automatically scaling compute resources based on demand | |
EP3337139B1 (en) | Method, system and device for elastic scaling of virtual resources in cloud computing environment | |
CN100517221C (zh) | 高效多处理器***及其方法 | |
EP3503472A1 (en) | Method for managing slice instance and apparatus | |
WO2018121334A1 (zh) | 一种提供网页应用服务的方法、装置、电子设备及*** | |
WO2019228344A1 (zh) | 资源配置方法、装置、终端及存储介质 | |
CN109697120B (zh) | 用于应用迁移的方法、电子设备 | |
EP3584998A1 (en) | Method for virtual machine capacity expansion and reduction and virtual management device | |
EP3855680A1 (en) | Policy management method and system, and apparatus | |
CN106293868A (zh) | 一种云计算环境中虚拟机扩缩容方法及扩缩容*** | |
CN110381042B (zh) | 一种平滑重启服务的方法、装置、介质和电子设备 | |
WO2016155291A1 (zh) | 一种虚拟化网络功能伸缩的管理方法及装置 | |
CN109960579B (zh) | 一种调整业务容器的方法及装置 | |
CN108512782A (zh) | 访问控制列表分组调整方法、网络设备和*** | |
Liu et al. | Service resource management in edge computing based on microservices | |
CN105718304A (zh) | 虚拟机管理方法及*** | |
CN106911741B (zh) | 一种虚拟化网管文件下载负载均衡的方法及网管服务器 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |