删除容器的方法和相关设备与流程

文档序号:14774007发布日期:2018-06-23 02:30阅读:391来源:国知局
删除容器的方法和相关设备与流程

本发明涉及信息技术领域,特别涉及一种删除容器的方法和相关设备。



背景技术:

容器作为一种新兴的虚拟化方式,跟传统的虚拟化方式相比具有众多的优势,其中一个特性是轻量级,可以实现更快速的启动和停止。容器的退出时间通常是秒级的,从而可大量地节约业务低谷时系统的资源。

虽然容器可以做到秒级退出,但容器中的应用服务却无法做到秒级退出。因为,容器退出时,容器中运行的应用服务还未处理完毕,该应用服务会随着容器的退出而被强行中断。



技术实现要素:

本发明实施例提供一种删除容器的方法和相关设备,对于待删除的容器不再发送业务请求,并且在容器中已运行的业务请求全部完成时再将该容器删除,避免了容器的强制退出而导致业务中断的问题。

第一方面,本发明实施例提供了一种主机。所述主机包括主机操作系统、请求处理装置、容器状态库以及至少一个容器,所述主机操作系统包括容器引擎,所述至少一个容器运行在所述容器引擎之上,且所述至少一个容器包括第一容器,所述容器状态库中记录了所述至少一个容器的状态,所述状态包括待删除状态、可删除状态。其中,所述请求处理装置,用于在检测到所述容器状态库中记录的所述第一容器的状态变更为待删除状态时,将路由表中所述第一容器的路由信息置为无效。所述容器引擎,用于确定所述第一容器为待删除容器,向所述容器状态库发送第一状态更改指令,所述第一状态更改指令用于指示所述容器状态库将所述第一容器的状态更改为待删除状态,且,在检测到所述容器状态库中记录的所述第一容器的状态变更为可删除状态时,向所述第一容器发送删除容器命令。所述第一容器,用于监控所述第一容器上运行的所有业务请求的处理进展,确定所述所有业务请求已完成时,向所述容器状态库发送第二状态更改指令,所述第二状态更改指令用于指示所述容器状态库将所述第一容器的状态更改为可删除状态。可以理解的是,当第一容器接收到所述删除容器命令之后,释放占用的资源。

在本实施例中,当要缩减容器时,首先是通过更新待删除容器的状态,指示请求处理装置不再发送新的业务请求。并且,在确定待删除容器中已经运行的业务请求均已处理完之后再将待删除容器删除,避免了容器强行退出而导致该容器正在运行的业务请求都被中断。

可选地,所述第一容器每次接收到业务请求时,创建所述业务请求的处理日志,根据所述业务请求处理的当前进展更新所述处理日志,所述处理日志包括所述业务请求的流水号以及所述业务请求的处理进展。所述第一容器通过所述处理日志监控所述第一容器上运行的所有业务请求的处理进展。

通过处理日志的方式将业务请求的处理过程记录下来,以此可以有效方便地判断容器中的业务请求的处理进展。

可选地,所述请求处理装置将路由表中所述第一容器的路由信息置为无效为:删除所述路由表中所述第一容器的标识与所述第一容器所运行的应用服务的标识之间的对应关系。其中,所述路由表中记录所述至少一个容器的标识以及所述容器上运行的应用服务的标识之间的对应关系。

这样,当后续有业务请求需要访问所述第一容器上曾经运行的应用服务时,根据路由表,该业务请求不会再被路由到所述第一容器中。根据路由表,该业务请求可能被路由到运行了同样应用服务的其他容器中。

可选地,所述容器状态库用于根据接收到的第一状态更改指令以及第二状态更改指令更改所述第一容器的状态。正是由于容器状态库及时地更新了每个容器的状态,为所述请求处理装置及时阻断外界的业务请求提供了可靠的依据,也为所述容器引擎删除待删除容器提供了依据。

第二方面,本发明实施例还提供了一种删除容器的方法。该方法应用于主机上,所述主机包括主机操作系统、请求处理装置、容器状态库以及至少一个容器,所述主机操作系统包括容器引擎,所述至少一个容器运行在所述容器引擎之上,且所述至少一个容器包括第一容器,所述容器状态库中记录了所述至少一个容器的状态,所述状态包括待删除状态、可删除状态。所述方法包括:所述容器引擎确定所述第一容器为待删除容器,向所述容器状态库发送第一状态更改指令,所述第一状态更改指令用于指示所述容器状态库将所述第一容器的状态更改为待删除状态。当所述请求处理装置检测到所述容器状态库中记录的所述第一容器的状态变更为待删除状态时,将路由表中所述第一容器的路由信息置为无效。所述第一容器监控所述第一容器上运行的所有业务请求的处理进展,当所述所有业务请求已完成时,向所述容器状态库发送第二状态更改指令,所述第二状态更改指令用于指示所述容器状态库将所述第一容器的状态更改为可删除状态。当所述容器引擎检测到所述容器状态库中记录的所述第一容器的状态变更为可删除状态时,向所述第一容器发送删除容器命令。

可选地,所述第一容器每次接收到业务请求时,创建所述业务请求的处理日志,根据所述业务请求处理的当前进展更新所述处理日志,所述处理日志包括所述业务请求的流水号以及所述业务请求的处理进展。所述第一容器通过所述处理日志监控所述第一容器上运行的所有业务请求的处理进展。

可选地,所述将路由表中所述第一容器的路由信息置为无效为:删除所述路由表中所述第一容器的标识与所述第一容器所运行的应用服务的标识之间的对应关系。其中,所述路由表中记录所述至少一个容器的标识以及所述容器上运行的应用服务的标识之间的对应关系。

可选地,所述容器状态库根据接收到的第一状态更改指令以及第二状态更改指令更改所述第一容器的状态。

可选地,在将路由表中所述第一容器的路由信息置为无效之前,所述方法还包括:所述请求处理装置接收业务请求,所述业务请求中包括应用服务的标识,根据所述路由表确定将所述业务请求发送至所述第一容器。其中,路由表中记录所述至少一个容器的标识以及所述容器上运行的应用服务的标识之间的对应关系。

第三方面,本发明实施例还提供了一种删除容器的方法,所述方法由主机执行。其中,所述主机包括主机操作系统以及至少一个容器,所述主机操作系统包括容器引擎,所述至少一个容器运行在所述容器引擎之上,且所述至少一个容器包括第一容器。所述方法包括:确定所述第一容器为待删除容器时,所述主机将路由表中所述第一容器的路由信息置为无效;确定所述第一容器上的运行的业务请求已完成时,将所述第一容器删除。

第四方面,本发明实施例还提供了一种主机。所述包括处理器和存储器,其特征在于,所述存储器存储有程序指令以及容器状态库、路由表,当处理器执行存储器中的程序指令时,实现上述第二方面和第三方面的方法。

第五方面,本发明实施例还提供了一种存储介质。所述计算机可读存储介质中存储有指令,当所述指令在计算机上运行时,使得所述计算机执行上述第二方面或第二方面的方法。

附图说明

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

图1是根据本发明实施例的主机的结构示意图;

图2是根据本发明实施例的删除容器方法流程示意图;

图3根据本发明实施例的主机的又一装置结构示意图。

具体实施方式

图1为本发明实施例的主机的装置结构示意图,如图1所示,主机100包括硬件10、主机操作系统20、路由表201、请求处理装置203、容器状态库202、至少一个容器,所述至少一个容器包括第一容器。本实施例中,以包含容器30、容器40为例,其中容器30为第一容器。下面以主机删除所述主机上容器30为例来说明本发明的一个实施例。在下文中,该被删除的容器也可以称为第一容器。其中,

路由表201中记录的是主机上的容器的标识以及所述容器上运行的应用服务的标识之间的对应关系。请求处理装置203根据路由表将接收到业务请求发送给相应的应用服务所在容器。在实际的应用中,可以用容器名称或容器网络地址作为容器的标识。可以应用服务名称作为应用服务的标识。

容器状态库中记录的是所述至少一个容器的状态信息。容器状态库202和路由表201可存储于主机100的磁盘中,并可加载到主机100的内存上。

硬件10包括物理网卡101,硬件10还包括处理器、存储器(图未示出)等,硬件10承载主机操作系统的运行。

主机操作系统20包括容器引擎204以及物理网卡驱动205。其中,容器引擎204可以通过安装而嵌入于主机操作系统20的内核。容器引擎用于确定所述第一容器为待删除容器,向所述容器状态库发送第一状态更改指令,所述第一状态更改指令用于指示所述容器状态库将所述第一容器的状态更改为待删除状态,且,在检测到所述容器状态库中记录的所述第一容器的状态变更为可删除状态时,向所述第一容器发送删除容器命令。物理网卡驱动205用于驱动物理网卡101,物理网卡驱动205相当于物理网卡101的硬件接口,主机操作系统20通过该硬件接口控制物理网卡101的工作,如接收业务请求。具体的由运行在操作系统上的请求处理装置203来接收业务请求,并根据路由表201将业务请求发送给相应的应用服务所在的容器。

请求处理装置203,用于在检测到所述容器状态库中记录的所述第一容器的状态变更为待删除状态时,将路由表中所述第一容器的路由信息置为无效。请求处理装置203可设置在主机操作系统20的内核,通过内核运行。可替代地,请求处理装置203也可作为应用软件安装到主机操作系统20,在主机操作系统20中运行。可以理解的是,将路由表201中的容器30的路由信息置为无效可以是删除所述路由表中所述容器30的标识与所述容器30所运行的应用服务的标识之间的对应关系。这样,后续有业务请求要访问应用服务304的时候,因为容器40上路由表中记录了容器40与应用服务304的对应关系,请求处理装置203根据路由表201,可以将该业务请求发送给容器40。可以理解的是,这里的业务请求不会发送给容器30,是因为此时的路由表中已经不存在容器30与应用服务304之间的对应关系。同样的,如果业务请求时请求应用305的,也将无法路由到容器30。

容器30包括运行环境302、业务监控模块303、应用服务304和应用服务305。容器30在运行环境302下运行业务监控模块303、应用服务304和应用服务305。容器40包括运行环境402、业务监控模块403以及应用服务304。容器40在运行环境402下运行业务监控模块403和应用服务304。应用服务具体可以为Web服务、Ftp服务等,本发明不做限制。

其中,业务监控模块303和业务监控模块403用于监控本容器的负载情况,并且可以实时或者周期性地将负载情况上报给容器引擎。在本实施例中,业务监控模块303、403还用于监控本容器内正在运行的业务请求的处理进展,并且在监控到正在运行的所有业务请求都已完成时,向所述容器状态库发送状态更改指令,所述状态更改指令用于指示所述容器状态库将所述第一容器的状态更改为可删除状态。其中,监控业务请求的处理进展包括:监控每当容器30或者容器40接收到一业务请求时,创建该业务请求的处理日志,在该业务请求的处理日志中记录该业务请求的流水号以及该业务请求当前的处理进展。比如,刚开始处理业务请求时,该业务请求的处理进展为请求开始(request start);当业务请求结束时,日志里将该业务请求的处理进展更改为请求结束(request end)。如果该业务请求还涉及到外部的系统,比如,数据库系统,那么当业务请求结束并且关闭了外部连接之后,将该业务请求的处理进展更新为数据库关闭(Data Base-closed)。业务监控模块303通过监控所述的处理日志,来确定容器30中的业务请求当前的处理进展。同样,业务监控模块403也可以通过监控所述的处理日志,来确定容器40中的业务请求当前得处理进展。其中,上述的流水号是用于唯一标识一个业务请求的标识。

上述容器30及容器40中的运行环境具体为包括Bins/Libs(二进制或库)文件的依赖包,不同的容器30和40可以具有不同的依赖包,从而令不同的应用服务通过对应依赖包可正常运行在对应的容器中。容器30可以为应用服务305、304运行提供一切要素(容器40相对于应用服务304亦然),容器30和容器40可以在容器引擎204的控制下被删除,容器30与容器40之间是隔离的安全应用平台。

本发明实施例还提供一种业务请求的处理方法,可以应用于上述实施例所提供的主机中。参考图中1中描述,以容器40,容器30均处于运行状态,且容器30运行有应用服务304和305,而容器40上运行有应用服务304为例。参考图2,该方法包括如下步骤:

S202,容器30、40上报自身的负载情况。

容器30、40上的业务监控模块可以监控所述容器上运行的业务的负载情况。可以理解的,业务监控模块可以是在容器上的运行的业务的负载低于某个阈值上报负载情况。也可以是周期性地上报容器的负载情况。本发明不作限制。

S204,容器引擎204接收到所述容器引擎204上运行的各容器的负载情况之后,确定待删除容器,并向容器状态库发送状态更改命令,指示容器状态库202将待删除容器的状态由运行状态修改为待删除状态。

通常,当一个容器的负载过低时,为了节省网络资源,可以将该低负载的容器删除。本实施例中,以容器引擎确定删除容器30为例。

这里的更改命令举例如下:etcdctl set/contianer/container_name/status"deleteing"

S206,容器状态库202接收到状态更改指令之后,根据指令要求将容器30的状态更改为待删除状态。

S208,请求处理装置203监控容器状态库中的状态信息。

S210,当请求处理装置203检测到容器30的状态变更为待删除状态时,将路由表201中记录的容器30的路由信息置为无效。

路由表201中记录的是主机上的容器的标识以及所述容器上运行的应用服务的标识之间的对应关系。请求处理装置203根据路由表将接收到业务请求发送给相应的应用服务所在容器。路由信息的记录方式可以多样,本发明不作限制。具体的将容器30的路由信息置为无效可以是删除所述路由表中所述容器30的标识与所述容器30所运行的应用服务的标识之间的对应关系。

S212,请求处理装置203接收业务请求,所述业务请求中包括应用304的标识。当主机接收到该业务请求后,请求处理装置203根据应用304的标识,根据路由表201确定将该应用304发送给容器40处理。

可以理解的是,由于主机中,可以有多个容器具备处理所述应用服务器的能力,在本实施例中,最初容器30和容器40上都运行了应用304。虽然接收到的业务请求是请求应用服务304的,由于S210中,将容器30的路由信息置为无效,因此,该业务请求不会再分给容器30,而是分配给了容器40。容器40接收到业务请求之后进行处理的过程,与现有技术无异,此处不再赘述。

S214,容器30确定运行在容器30上的业务请求的处理进展。

容器30内部的业务监控模块303监控容器30中正在运行的业务请求。每当容器30接收到业务请求时,创建该业务请求的处理日志,在该业务请求的处理日志中记录该业务请求的流水号以及该业务请求当前的处理进展。比如,刚开始处理业务请求时,该业务请求的处理进展为请求开始(request start);当业务请求结束时,日志里将该业务请求的处理进展更改为请求结束(request end)。如果该业务请求还涉及到外部的系统,比如,数据库系统,那么当业务请求结束并且关闭了外部连接之后,将该业务请求的处理进展更新为数据库关闭(Data Base-closed)。业务监控模块303通过监控所述的处理日志,来确定容器30中的业务请求当前的处理进展。其中,上述的流水号是用于唯一标识一个业务请求的标识。

S216,当容器30确定容器30上运行的业务请求均已完成时,向容器状态库发送状态更改命令,将指示容器状态库202将容器30的状态更改为可删除。

可以理解的是,如果没有外部连接的情况下,业务请求已完成可以是指日志中记录的该业务请求的处理进展为request end,如果有外部连接,则业务请求已完成可以是指外部连接也关闭时,比如,该业务请求的状态为Data Base-closed。

具体的更改命令举例如下:etcdctl set/container/container_name/status"deleted"

S218,容器状态库接收到更改命令之后,根据更改命令的指示将容器30的状态修改为可删除。

S220,容器引擎204监控容器状态库中记录的状态信息。

S222,当容器引擎204检测到容器30的状态为可删除状态时,向容器发送删除容器40的命令。

上报负载情况是一个持续的过程、请求处理装置203和容器引擎204监控容器状态库202的状态信息也是一个持续的过程,因此,步骤202、步骤208、步骤220跟其他步骤之间并没有严格的时间顺序。

容器的退出是秒级的,而运行在容器中的应用所处理的业务请求却不能秒级退出。因此,在本发明实施例中,当要删除容器时,通过更新待删除容器的状态,指示请求处理装置不再发送新的业务请求。并且,在待删除容器中已经运行的业务请求均已处理完时,才将待删除容器删除,避免了容器强行退出而导致该容器正在运行的业务请求都被中断。

本发明实施例又提供了一种主机,请参见图3,主机100包括存储器302、处理器301和总线303,存储器302和处理器301分别与总线303连接,存储器302存储有程序指令以及容器状态库202、路由表201,处理器301执行存储器302中的第一程序指令以实现请求处理装置203的功能,处理器301执行存储器302中的第二程序指令以实现业务监控模块303、403的功能,处理器301执行存储器302中的第三程序指令以实现容器引擎204的功能。

具体地,处理器301执行存储器302中的第一程序指令以执行步骤:检测所述容器状态库中记录的状态信息,当检测到所述容器状态库中记录的所述第一容器的状态变更为待删除状态时,将路由表中所述第一容器的路由信息置为无效。

处理器301执行存储器302中的第二程序指令以执行步骤:监控所在容器上运行的所有业务请求的处理进展,当所述所有业务请求已完成时,向所述容器状态库发送第二状态更改指令,所述第二状态更改指令用于指示所述容器状态库将所述第一容器的状态更改为可删除状态。

处理器302执行存储器302中的第三程序指令以执行步骤:确定所述第一容器为待删除容器,向所述容器状态库发送第一状态更改指令,所述第一状态更改指令用于指示所述容器状态库将所述第一容器的状态更改为待删除状态;当检测到所述容器状态库中记录的所述第一容器的状态变更为可删除状态时,向所述第一容器发送删除容器命令。

可选地,处理器301执行存储器302中的第二程序指令以执行下述步骤来监控所在容器上运行的所有业务请求的处理进展:每次接收到业务请求时,创建所述业务请求的处理日志,根据所述业务请求处理的当前进展更新所述处理日志,所述处理日志包括所述业务请求的流水号以及所述业务请求的处理进展;通过所述处理日志监控所在容器上运行的所有业务请求的处理进展。

可选地,处理器301执行存储器302中的第一程序指令执行步骤:删除所述路由表中所述第一容器的标识与所述第一容器所运行的应用服务的标识之间的对应关系。通过执行本步骤将路由表中所述第一容器的路由信息置为无效。

可以理解的是,处理器301执行存储器302中的上述程序指令或者其他的程序指令,还会进一步实现上述方法实施例中的主机各组件的功能。

另外,本发明提供的装置实施例附图中,模块之间的连接关系表示它们之间具有通信连接,具体可以实现为一条或多条通信总线或信号线。通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件的方式来实现,当然也可以通过专用硬件包括专用集成电路、专用CPU、专用存储器、专用元器件等来实现。一般情况下,凡由计算机程序完成的功能都可以很容易地用相应的硬件来实现,而且,用来实现同一功能的具体硬件结构也可以是多种多样的,例如模拟电路、数字电路或专用电路等。但是,对本发明而言更多情况下软件程序实现是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在可读取的存储介质中,如计算机的软盘,U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。

所属领域的技术人员可以清楚地了解到,上述描述的方法、主机或模块的具体工作过程,可以相互参考。以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。

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