基于容器的应用实例弹性伸缩的实现方法、装置及系统与流程

文档序号:11657260阅读:195来源:国知局
基于容器的应用实例弹性伸缩的实现方法、装置及系统与流程

本发明涉及应用实例的弹性伸缩技术领域,更具体地说,涉及一种基于容器的应用实例弹性伸缩的实现方法、装置及系统。



背景技术:

dockerswarm集群组件是docker容器的集群管理组件,dockerswarm可以管理多个dockerdeamon。容器为应用程序提供的互相隔离的运行空间,每个容器内都包含一个独享的完整用户环境空间,并且一个容器内的变动不会影响其他容器的运行环境。目前,dockerswarm集群组件能够实现对主机的集群管理,但是dockerswarm集群组件在最初创建完预定数量的应用实例后,该应用实例的数量便是固定的。而对于应用出现负载过大或者负载过小等情况时,swarm无法自动的根据应用的负载情况进行应用实例的扩容和伸缩,灵活性较差。

因此,如何实现在容器中运行的应用实例的弹性伸缩,是本领域技术人员需要解决的问题。



技术实现要素:

本发明的目的在于提供一种基于容器的应用实例弹性伸缩的实现方法、装置及系统,以实现在容器中运行的应用实例的弹性伸缩,提升基于容器应用的高可靠性。

为实现上述目的,本发明实施例提供了如下技术方案:

一种基于容器的应用实例弹性伸缩的实现方法,包括:

确定与目标应用对应的目标主机节点及目标容器;

确定与所述目标应用对应的弹性伸缩策略的指标;

从所述目标主机节点中,获取与所述目标容器对应的指标实际值;

若根据所述指标实际值和所述弹性伸缩策略,判定需要对所述目标应用的容器数量进行调整,则向dockerswarm组件发送容器数量调整指令,以使所述dockerswarm组件对容器数量进行调整。

其中,从所述目标主机节点中,获取与所述目标容器对应的指标实际值,包括:

通过定时任务从所述目标主机节点的dockerbeat中,获取与所述目标容器对应的指标实际值。

其中,所述若根据所述指标实际值和所述弹性伸缩策略,判定需要对所述目标应用的容器数量进行调整,则向dockerswarm组件发送容器数量调整指令,包括:

判断所述指标实际值是否大于所述弹性伸缩策略中对应的第一指标阈值;若是,则向dockerswarm组件发送扩容指令。

其中,所述若根据所述指标实际值和所述弹性伸缩策略,判定需要对所述目标应用的容器数量进行调整,则向dockerswarm组件发送容器数量调整指令,包括:

判断所述指标实际值是否小于所述弹性伸缩策略中对应的第二指标阈值;若是,则向dockerswarm组件发送缩容指令;其中,所述第一指标阈值大于所述第二指标阈值。

一种基于容器的应用实例弹性伸缩的实现装置,包括:

第一确定模块,用于确定与目标应用对应的目标主机节点;

第二确定模块,用于确定与目标应用对应的及目标容器;

第三确定模块,用于确定与所述目标应用对应的弹性伸缩策略的指标;

获取模块,用于从所述目标主机节点中,获取与所述目标容器对应的指标实际值;

容器数量调整模块,用于根据所述指标实际值和所述弹性伸缩策略,判定需要对所述目标应用的容器数量进行调整时,向dockerswarm组件发送容器数量调整指令,以使所述dockerswarm组件对容器数量进行调整。

其中,所述获取模块通过定时任务从所述目标主机节点的dockerbeat中,获取与所述目标容器对应的指标实际值。

其中,所述容器数量调整模块包括:

第一判断单元,用于判断所述指标实际值是否大于所述弹性伸缩策略中对应的第一指标阈值;若是,则向dockerswarm组件发送扩容指令。

其中,所述容器数量调整模块包括:

第二判断单元,用于判断所述指标实际值是否小于所述弹性伸缩策略中对应的第二指标阈值;若是,则向dockerswarm组件发送缩容指令;其中,所述第一指标阈值大于所述第二指标阈值。

一种基于容器的应用实例弹性伸缩的实现系统,包括:

容器云平台、swarm集群管理组件和主机集群节点;

所述容器云平台,用于确定与目标应用对应的目标主机节点、目标容器,以及与所述目标应用对应的弹性伸缩策略的指标;从所述目标主机节点中,获取与所述目标容器对应的指标实际值;并在根据所述指标实际值和所述弹性伸缩策略,判定需要对所述目标应用的容器数量进行调整时,向dockerswarm组件发送容器数量调整指令;

所述swarm集群管理组件,用于利用所述容器数量调整指令,在所述主机集群节点中的目标主机节点上创建新容器或者删除容器,以便对容器数量进行调整。

其中,所述容器云平台通过定时任务从所述目标主机节点的dockerbeat中,获取与所述目标容器对应的指标实际值。

通过以上方案可知,本发明实施例提供的一种基于容器的应用实例弹性伸缩的实现方法,包括:确定与目标应用对应的目标主机节点及目标容器;确定与所述目标应用对应的弹性伸缩策略的指标;从所述目标主机节点中,获取与所述目标容器对应的指标实际值;若根据所述指标实际值和所述弹性伸缩策略,判定需要对所述目标应用的容器数量进行调整,则向dockerswarm组件发送容器数量调整指令,以使所述dockerswarm组件对容器数量进行调整;

可见,在本实施例中,通过获取的指标实际值与预定的弹性伸缩策略进行匹配,可自动触发swarm集群组件进行调度创建或删除容器,实现应用实例在某一条件下的自动扩容或伸缩,提升基于容器应用的高可靠性;本发明还公开了一种基于容器的应用实例弹性伸缩的实现装置及系统,同样能实现上述技术效果。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例公开的一种基于容器的应用实例弹性伸缩的实现方法流程示意图;

图2为本发明实施例公开的一种具体的基于容器的应用实例弹性伸缩的实现方法流程示意图;

图3为本发明实施例公开的一种基于容器的应用实例弹性伸缩的实现装置结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本发明实施例公开了一种基于容器的应用实例弹性伸缩的实现方法、装置及系统,以实现在容器中运行的应用实例的弹性伸缩,提升基于容器应用的高可靠性。

参见图1,本发明实施例提供的一种基于容器的应用实例弹性伸缩的实现方法,包括:

s101、确定与目标应用对应的目标主机节点及目标容器;

s102、确定与所述目标应用对应的弹性伸缩策略的指标;

具体的,参见图2,为本实施例公开的一具体的实现流程示意图,在对容器数量进行调整之前,首先需要通过容器云平台进行目标应用app的部署,上传应用war包,选择基础镜像,选择部署的主机集群的目标主机节点;并设置此目标应用的原始实例数和弹性伸缩策略;在本实施例中设置原始实例数即目标容器的数量为2个,通过dockerswarm创建2个容器并启动应用,可以注册到ngnix中,此时在容器云平台中能看到应用实例app-ins1和app-ins2。

具体的,本实施例中的弹性伸缩策略的指标具体可以为主机上的容器消耗的cpu、内存等信息,因此本方案中的弹性伸缩策略为根据上述指标设定的判定条件,例如:弹性伸缩策略中包括第一弹性伸缩策略和第二弹性伸缩策略;第一弹性伸缩策略为:当cpu负载>80%时,扩容1个容器实例;那么检测到cpu负载>80%时,便发送创建一个新容器实例的指令;第二弹性伸缩策略为:当cpu负载<20%时减少1个容器实例;那么检测到cpu负载<20%时,便发送删除一个容器实例的指令,从而实现了应用实例在某一条件下的自动扩容或伸缩,提升基于容器应用的高可靠性。

s103、从所述目标主机节点中,获取与所述目标容器对应的指标实际值;

其中,从所述目标主机节点中,获取与所述目标容器对应的指标实际值,包括:通过定时任务从所述目标主机节点的dockerbeat中,获取与所述目标容器对应的指标实际值。

具体的,本实施例中的dockerbeat为一种代理程序,安装在主机上,能对运行在此主机上的容器消耗的cpu、内存等信息的自动搜集。因此,定时任务获取了更新的目标应用app弹性伸缩策略的指标信息后,并可通过定时任务定时从目标主机节点的dockerbeat中获取正在运行的应用实例配置的指标实际值,以便对容器的数量进行调整。

s104、若根据所述指标实际值和所述弹性伸缩策略,判定需要对所述目标应用的容器数量进行调整,则向dockerswarm组件发送容器数量调整指令,以使所述dockerswarm组件对容器数量进行调整。

其中,所述若根据所述指标实际值和所述弹性伸缩策略,判定需要对所述目标应用的容器数量进行调整,则向dockerswarm组件发送容器数量调整指令,包括:

判断所述指标实际值是否大于所述弹性伸缩策略中对应的第一指标阈值;若是,则向dockerswarm组件发送扩容指令;

判断所述指标实际值是否小于所述弹性伸缩策略中对应的第二指标阈值;若是,则向dockerswarm组件发送缩容指令;其中,所述第一指标阈值大于所述第二指标阈值。

具体的,本实施例中的指标为cpu、内存等,则每个指标都有对应的指标阈值,该阈值是判断是否扩容和缩容的依据;在本实施例中,为每个指标设置两个指标阈值:第一指标阈值和第二指标阈值,第一指标阈值是判断是否需要扩容的标准,例如:当cpu负载>80%时,扩容1个容器实例,这里的80%便是第一指标阈值;第二指标阈值是判断是否需要缩容的标准,例如:当cpu负载<20%时减少1个容器实例,这里的<20%便是第二指标阈值。

需要说明的是,由于对是否需要缩容和扩容进行判定时,可能依据的是多个指标阈值,这时在确定最终的容器数量调整指令时,可根据弹性伸缩策略的具体要求而确定,例如:若该策略中,设定cpu的优先级为最高,那么,不管其他的指标是否超出阈值,只要检测到cpu超出对应的阈值后,便执行扩容指令。

具体的,dockerswarm组件接收到创建新容器实例指令后,便从镜像仓库下载目标应用app的镜像,在目标主机节点上创建一个新的容器应用实例,并将新实例注册到ngnix上,供用户访问;同理,若dockerswarm组件接收到删除容器实例指令,则删除已创建的容器应用实例。

下面对本发明实施例提供的应用实例弹性伸缩的实现装置进行介绍,下文描述的应用实例弹性伸缩的实现装置与上文描述的应用实例弹性伸缩的实现方法可以相互参照。

参见图3,本发明实施例提供的一种基于容器的应用实例弹性伸缩的实现装置,包括:

第一确定模块100,用于确定与目标应用对应的目标主机节点;

第二确定模块200,用于确定与目标应用对应的及目标容器;

第三确定模块300,用于确定与所述目标应用对应的弹性伸缩策略的指标;

获取模块400,用于从所述目标主机节点中,获取与所述目标容器对应的指标实际值;

容器数量调整模块500,用于根据所述指标实际值和所述弹性伸缩策略,判定需要对所述目标应用的容器数量进行调整时,向dockerswarm组件发送容器数量调整指令,以使所述dockerswarm组件对容器数量进行调整。

基于上述实施例,所述获取模块400通过定时任务从所述目标主机节点的dockerbeat中,获取与所述目标容器对应的指标实际值。

基于上述实施例,所述容器数量调整模块500包括:

第一判断单元,用于判断所述指标实际值是否大于所述弹性伸缩策略中对应的第一指标阈值;若是,则向dockerswarm组件发送扩容指令。

基于上述实施例,所述容器数量调整模块500包括:

第二判断单元,用于判断所述指标实际值是否小于所述弹性伸缩策略中对应的第二指标阈值;若是,则向dockerswarm组件发送缩容指令;其中,所述第一指标阈值大于所述第二指标阈值。

参见图2,本发明实施例提供的一种基于容器的应用实例弹性伸缩的实现系统,包括:

容器云平台600、swarm集群管理组件700和主机集群节点800;

所述容器云平台,用于确定与目标应用对应的目标主机节点、目标容器,以及与所述目标应用对应的弹性伸缩策略的指标;从所述目标主机节点中,获取与所述目标容器对应的指标实际值;并在根据所述指标实际值和所述弹性伸缩策略,判定需要对所述目标应用的容器数量进行调整时,向dockerswarm组件发送容器数量调整指令;

所述swarm集群管理组件,用于利用所述容器数量调整指令,在所述主机集群节点中的目标主机节点上创建新容器或者删除容器,以便对容器数量进行调整。

其中,所述容器云平台通过定时任务从所述目标主机节点的dockerbeat中,获取与所述目标容器对应的指标实际值。

综上可见,本发明实施例提供的一种基于容器的应用实例弹性伸缩的实现方法、装置及系统,可通过获取的指标实际值与预定的弹性伸缩策略进行匹配,可自动触发swarm集群组件进行调度创建或删除容器,实现应用实例在某一条件下的自动扩容或伸缩,提升基于容器应用的高可靠性;本发明还公开了一种基于容器的应用实例弹性伸缩的实现装置,同样能实现上述技术效果。

本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。

对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

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