一种用于基于服务模型的应用集群迁移的方法和迁移装置与流程

文档序号:18816533发布日期:2019-10-08 23:58阅读:245来源:国知局
一种用于基于服务模型的应用集群迁移的方法和迁移装置与流程

本发明涉及云计算领域,特别涉及基于服务模型的应用集群迁移的方法和迁移装置。



背景技术:

云应用集群是指基于云计算资源池提供互联网或企业应用服务的一组服务器,通常包含多个服务器容器节点,每个容器节点由硬件资源和软件堆栈构成。硬件资源包括虚拟计算、存储和网络资源,通常由云数据中心的云资源池提供。容器节点的软件堆栈由相互依赖的若干层软件构成,包括操作系统、平台软件和应用软件等。根据容器节点是否保存运行时状态,可将应用集群的容器节点分成两类:一类是无状态的容器节点,如负载均衡器、Web服务器等,这类容器节点不保存运行时的数据;另一类是数据容器节点,如缓存服务器、数据库服务器等,需保存运行时数据。在应用集群迁移时,无状态容器节点只所涉及资源、软件和配置的迁移,而数据容器节点除了无状态容器节点迁移所涉及的内容之外,还需进行数据的迁移。

云应用集群通常在上线商用、故障容灾和机房搬迁的时候需要进行跨数据中心迁移,将应用集群的软件、配置、数据和拓扑结构从当前数据中心整体迁移到新的数据中心。

由于云应用集群的复杂性和数据中心间的环境差异性,云应用集群跨数据中心整体迁移非常困难,现有应用集群迁移方法都存在不少问题:

1、重新部署应用集群:重新部署应用集群,涉及集群资源申请、集群软件安装、集群网络配置、集群数据和配置文件的迁移等环节,其中许多环节都需人工干预,时间长、易出错;

2、广域网虚拟机迁移:采用V2V迁移,只能实现单个虚机的软件和数据自动迁移,无法实现配置文件自动迁移,无法实现整个应用集群的网络结构迁移,而且由于虚拟机镜像较大,跨数据中心拷贝时间较长。

近年兴起的容器技术提供了轻量级的共享内核的系统虚拟化解决方案,例如Docker,既具备虚拟机的资源隔离特性,又有虚拟机所不具备的轻量级、高性能特点。与虚拟机相比,容器共享操作系统内核,没有Guest OS,没有hypervisor层,更轻量、性能更高,同时容器引擎大多支持分层镜像特性,可以将应用容器节点的整个软件栈分为多个镜像层次,以web服务器为例,软件栈可分为系统软件OS、平台软件tomcat、应用软件如webapp.war等3个镜像层次。上层的镜像依赖于下层的镜像,下层的镜像可供上层的镜像共享,从而大大减少了镜像文件的大小,使得镜像的存储、传输和安装的速度显著提升。然而容器技术仅仅简化了单个容器节点的软件安装,并没有解决容器节点配置文件和运行时数据的迁移问题,也没有解决整个集群的拓扑结构和网络配置的迁移问题。



技术实现要素:

本发明实施例所要解决的一个技术问题是:应用集群、容器节点配置文件、运行时数据、拓扑结构和网络配置的迁移问题。

根据本发明实施例的一个方面,提供的一种基于服务模型的应用集群迁移的方法包括:获取应用集群的服务模型文件,并提取服务模型文件中的应用集群的资源部署属性和容器节点状态,其中,资源部署属性包括:资源依赖关系、软件依赖关系和拓扑连接关系;根据资源部署属性和容器节点状态完成应用集群的迁移。

在一个实施例中,获取应用集群的服务模型文件,并提取服务模型文件中的应用集群的资源部署属性和容器节点状态,具体包括:从源数据中心的服务模型库中获取应用集群的服务模型文件;将服务模型文件导入目标数据中心的服务模型库;提取服务模型文件中的资源依赖关系、软件依赖关系、拓扑连接关系和容器节点状态。

在一个实施例中,根据应用集群的资源依赖关系、软件依赖关系、拓扑依赖关系和容器节点信息完成应用集群的迁移,具体包括:将资源依赖关系和软件依赖关系的状态设置为未绑定,将拓扑连接关系的状态设置为未建立,将容器节点的状态设置为未创建;根据容器节点状态和资源依赖关系为目标应用集群分配资源;根据软件依赖关系为目标应用集群迁移软件;将源应用集群的数据迁移到目标应用集群;根据拓扑依赖关系为目标应用集群进行拓扑连接配置。

在一个实施例中,根据资源依赖关系为目标应用集群分配资源,具体包括:根据资源依赖关系和容器节点状态在目标应用集群容器创建虚拟机;根据资源依赖关系为目标应用集群容器中的虚拟机创建虚拟数据卷;根据容器节点状态为目标应用集群创建虚拟网络;根据资源依赖关系为目标应用集群容器绑定容器资源。

在一个实施例中,根据资源依赖关系和容器节点信息在目标应用集群容器创建虚拟机,具体包括:根据容器节点状态中的虚拟容器节点状态、资源依赖关系中容器节点和虚拟容器节点的依赖关系以及容器节点的资源配额需求计算虚拟容器节点的资源需求;根据虚拟容器节点的资源需求为虚拟容器节点创建虚拟机,绑定虚拟机镜像,并将容器节点中的容器节点状态设置为已创建,其中虚拟机镜像包括:系统内核和容器引擎。

在一个实施例中,根据容器节点状态为目标应用集群创建虚拟数据卷,具体包括:根据容器节点信息中的虚拟数据卷为目标应用集群创建虚拟数据卷,并将容器节点依赖的虚拟机状态设置为已创建。

在一个实施例中,根据资源依赖关系为目标应用集群创建虚拟网络包括:根据容器节点依赖的虚拟网络容器节点状态为目标应用集群创建虚拟网络,并将容器节点依赖的虚拟网络状态设置为已创建。

在一个实施例中,根据资源依赖关系为目标应用集群容器绑定容器资源,具体包括:根据资源依赖关系中的虚拟机依赖关系,为容器节点绑定虚拟数据卷,根据资源依赖关系中的数据卷依赖关系,为容器节点绑定虚拟数据卷;根据资源依赖关系中的网络依赖关系,为容器节点绑定虚拟网络;将虚拟机依赖关系、数据卷依赖关系和网络依赖关系的状态设置为已绑定。

在一个实施例中,根据软件依赖关系为目标应用集群迁移软件,具体包括:根据资源依赖关系中的虚拟机与容器的反向依赖关系、容器与容器镜像的依赖关系获得虚拟机容器节点的容器镜像列表;调用虚拟机的容器引擎,从目标数据中心的容器镜像仓库获取不存的容器镜像,若目标数据中心的容器镜像仓库中不存在指定的容器镜像,则容器镜像仓库从源数据中心的容器镜像仓库中获取不存在的容器镜像;容器引擎根据资源依赖关系中的镜像依赖关系安装容器镜像的文件;为容器绑定容器镜像文件的顶层镜像,并将资源依赖关系中的镜像依赖关系设置为已绑定。

在一个实施例中,当所有的镜像依赖关系的状态均为已绑定时,启动数据容器节点的运行时数据迁移,将源应用集群的数据迁移到目标应用集群。

在一个实施例中,将源应用集群的数据迁移到目标应用集群停止源应用集群,具体包括:停止源应用集群,获取源应用集群中数据容器节点的运行时的数据;根据源应用集群中数据容器节点的运行时的数据生成快照镜像;将快照镜像上传到源数据中心的容器镜像仓库;目标数据中心的容器引擎从源镜像仓库获取镜像快照,并将镜像快照导入指定的容器节点。

在一个实施例中,根据拓扑连接关系为目标应用集群进行拓扑连接配置,具体包括:获取拓扑连接关系中的连接信息;为容器配置拓扑连接属性参数;启动拓扑连接属性参数,并且将拓扑连接关系的状态设置为已建立。

在一个实施例中,本实施例的方法还包括:当资源依赖关系、软件依赖关系和拓扑连接依赖关系均绑定时,将容器节点的状态设置为已就绪;当所有容器节点状态都设置为已就绪后,确认完成应用集群的迁移。

根据本发明的一个方面,提供的一种基于服务模型的应用集群迁移的迁移装置,其特征在于,包括:信息获取模块,用于获取应用集群的服务模型文件,并提取服务模型文件中的应用集群的资源部署属性和容器节点状态,其中,资源部署属性包括:资源依赖关系、软件依赖关系和拓扑连接关系;集群迁移模块,用于根据资源部署属性和容器节点状态完成应用集群的迁移。

在一个实施例中,信息获取模块包括:导出子单元、导入子单元、和信息提取单元,导出子单元,用于从源数据中心的服务模型库中获取应用集群的服务模型文件;导入子单元,将服务模型文件导入目标数据中心的服务模型库;信息提取单元,用于提取服务模型文件中的资源依赖关系、软件依赖关系、拓扑连接关系和容器节点状态。

在一个实施例中,集群迁移模块,包括:状态设置单元、资源分配单元、软件迁移单元、数据迁移单元和拓扑配置单元,其中,状态设置单元,用于将资源依赖关系和软件依赖关系的状态设置为未绑定,将拓扑连接关系的状态设置为未建立,将容器节点的状态设置为未创建;资源分配单元,用于根据容器节点状态和资源依赖关系为目标应用集群分配资源;软件迁移单元,用于根据软件依赖关系为目标应用集群迁移软件;数据迁移单元,用于将源应用集群的数据迁移到目标应用集群;拓扑配置单元,用于根据拓扑依赖关系为目标应用集群进行拓扑连接配置。

在一个实施例中,资源分配单元包括:资源创建子单元和资源绑定单元,其中,资源创建子单元,用于根据资源依赖关系和容器节点状态在目标应用集群容器创建虚拟机;还用于根据资源依赖关系为目标应用集群容器中的虚拟机创建虚拟数据卷;还用于根据容器节点状态为目标应用集群创建虚拟网络;资源绑定单元,用于根据资源依赖关系为目标应用集群容器绑定容器资源。

在一个实施例中,资源创建子单元具体用于根据容器节点的资源配额需求以及容器节点与虚机节点的依赖关系计算每个虚机节点的资源需求;资源创建子单元还用于根据虚拟容器节点的资源需求为虚拟容器节点创建虚拟机,绑定虚拟机镜像,并将所述容器节点依赖的虚拟机的状态设置为已创建,其中所述虚拟机镜像包括:系统内核和容器引擎。

在一个实施例中,资源创建子单元,具体用于根据容器节点信息中的虚拟数据卷为目标应用集群创建虚拟数据卷,并将所述容器节点依赖的虚拟机的状态设置为已创建。

在一个实施例中,资源创建子单元,具体用于根据容器节点依赖的虚拟网络容器节点状态为目标应用集群创建虚拟网络,并将容器节点依赖的虚拟网络状态设置为已创建。

在一个实施例中,资源绑定单元,具体用于根据资源依赖关系中的虚拟机依赖关系;还用于为容器节点绑定虚拟数据卷;还用于根据资源依赖关系中的数据卷依赖关系,为容器节点绑定虚拟数据卷;还用于根据资源依赖关系中的网络依赖关系,为容器节点绑定虚拟网络;还用于将虚拟机依赖关系、数据卷依赖关系和网络依赖关系的状态设置为已绑定。

在一个实施例中,软件迁移单元,具体用于根据资源依赖关系中的虚拟机与容器的反向依赖关系、容器与容器镜像的依赖关系获得虚拟机容器节点的容器镜像列表;还用于调用虚拟机的容器引擎,从目标数据中心的容器镜像仓库获取主机上不存在的容器镜像,若目标数据中心的容器镜像仓库中不存在指定的容器镜像,则容器镜像仓库从源数据中心的容器镜像仓库中获取不存在的容器镜像;还用于根据资源依赖关系中的镜像依赖关系安装容器镜像的文件;还用于为容器绑定容器镜像文件的顶层镜像,并将资源依赖关系中的镜像依赖关系设置为已绑定。

在一个实施例中,数据迁移单元还用于当所有的镜像依赖关系的状态均为已绑定时,启动数据容器节点的运行时数据迁移,将源应用集群的数据迁移到目标应用集群。

在一个实施例中,数据迁移单元具体用于停止源应用集群,获取源应用集群中数据容器节点的运行时的数据;还用于根据源应用集群中数据容器节点的运行时的数据生成快照镜像;将快照镜像上传到源数据中心的容器镜像仓库;目标数据中心的容器引擎从源镜像仓库获取镜像快照,并将镜像快照导入指定的容器节点。

在一个实施例中,拓扑配置单元,具体用于获取拓扑连接关系中的连接信息;还用于为容器配置拓扑连接属性参数;还用于启动拓扑连接属性参数,并且将拓扑连接关系的状态设置为已建立。

在一个实施例中,本实施例的装置还包括集群迁移单元,用于当资源依赖关系、软件依赖关系和拓扑连接依赖关系均绑定时,将容器节点的状态设置为已就绪;还用于当所有容器节点状态都设置为已就绪后,确认完成应用集群的迁移。

本实施例通过服务模型实现应用集群的所有节点和依赖关系的自动化迁移;通过分析每个主机所依赖的软件镜像,在目标数据中心的主机上批量安装所依赖的软件镜像,提高集群迁移速度,从而减少了集群迁移的停机时间;为节点配置文件模板绑定目标集群的环境参数,生成目标集群的配置文件,从而提升集群的配置文件迁移效率;目标数据中心的镜像仓库作为目标应用集群的镜像代理,按需从源数据中心的镜像仓库中获取并缓存所需的镜像,加速集群的镜像安装。

通过以下参照附图对本发明的示例性实施例的详细描述,本发明的其它特征及其优点将会变得清楚。

附图说明

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

图1示出典型云应用集群架构图。

图2示出容器应用服务模型图。

图3示出应用集群服务模型示例图。

图4示出本发明的基于服务模型的应用集群迁移的方法的一个实施例的流程示意图。

图5示出本发明的基于服务模型的应用集群迁移的方法的对服务模型进行迁移的操作的一个实施例的流程示意图。

图6示出本发明的基于服务模型的应用集群迁移的方法中的为目标集群分配资源的操作的一个实施例的流程示意图。

图7示出本发明的基于服务模型的应用集群迁移的方法中的目标集群创建虚拟机的操作的一个实施例的流程示意图。

图8示出本发明的基于服务模型的应用集群迁移的方法中的为应用集群创建虚拟网络的操作的一个实施例的流程示意图。

图9示出本发明的基于服务模型的应用集群迁移的方法中的为应用集群绑定容器资源的操作的一个实施例的流程示意图。

图10示出本发明的基于服务模型的应用集群迁移的方法中的应用集群软件迁移的操作的一个实施例的流程示意图。

图11示出本发明的基于服务模型的应用集群迁移的方法中的对有状态节点的运行时数据迁移的操作的一个实施例的流程示意图。

图12示出本发明的基于服务模型的应用集群迁移的方法中的拓扑连接配置的操作的一个实施例的流程示意图。

图13示出本发明的基于服务模型的应用集群迁移的方法中的目标集群启动的操作的一个实施例的机构示意图。

图14示出本发明的基于服务模型的应用集群迁移的迁移装置的结构示意图。

图15示出本发明的基于服务模型的应用集群迁移的迁移装置的再一个实施例的结构示意图。

图16示出本发明的基于服务模型的应用集群迁移的迁移装置的再一个实施例的结构示意图。

图17示出本发明的基于服务模型的应用集群迁移的迁移装置的再一个实施例的结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本发明及其应用或使用的任何限制。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对布置、数字表达式和数值不限制本发明的范围。

同时,应当明白,为了便于描述,附图中所示出的各个部分的尺寸并不是按照实际的比例关系绘制的。

对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,技术、方法和设备应当被视为授权说明书的一部分。

在这里示出和讨论的所有示例中,任何具体值应被解释为仅仅是示例性的,而不是作为限制。因此,示例性实施例的其它示例可以具有不同的值。

应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被,则在随后的附图中不需要对其进行进一步讨论。

图1给出了一个典型的云应用集群的架构图,参考图1,假设一个容器应用集群由4个容器节点构成,分别是一个负载均衡节点nginx,两个Web服务器节点WebApp+tomcat和一个数据库节点mysql,应用集群部署在3台虚拟机上,其中nginx节点、两个Web服务器节点和mysql分别部署在一台虚拟机上,整个集群的虚机和容器共享同一个IP子网。其中mysql节点是有状态节点,挂载了虚拟卷,拥有运行时数据,其余节点均为无状态节点。

图2给出了一个抽象的容器应用服务模型,描述容器应用服务模型的构成要素。容器应用服务模型由容器列表、软件列表、资源列表以及连接关系和依赖关系构成,容器、资源和软件均属性模型的节点,节点可以拥有一个或多个属性、零个或多个操作以及零个或多个关系。节点与节点的关系分为两种:依赖关系和连接关系,依赖关系规定了节点的安装次序,连接关系规定了节点的通信方向。关系也可以拥有属性和操作,简单的关系可以在源节点内定义,复杂的关系可单独定义。此外,服务模型还拥有一些服务模型级的公共属性和公共操作,例如镜像仓库URL、云资源管理URL等。服务模型库包含一个Web服务器,当服务模型被服务模型库加载后,服务模型的节点和关系的属性、状态可通过REST API访问和修改,节点和关系的操作可通过REST API调用。其中容器节点的状态包括:未创建、已就绪和运行中,未创建是指容器不存在,已就绪是指容器已创建,且容器的资源依赖、软件依赖和连接依赖已绑定,运行中是只容器进程已启动,可对外提供服务。

图3给出了以图1为例的容器应用集群的服务模型示例图,该图描述了4个容器节点的依赖关系和连接关系。其中Nginx容器A依赖虚拟机A、网络A和容器镜像Nginx,WebApp容器A和WebApp容器B都依赖虚拟机B、网络A和容器镜像WebApp,Mysql容器A依赖虚拟机C、数据卷A、网络A、容器镜像Mysql和容器快照MysqlA。虚拟机A、虚拟机B虚拟机C均依赖虚拟机镜像Centos_DockerEngine,该虚拟机镜像封装了操作系统CentOS基础版和容器引擎DockerEngine。容器镜像WebApp依赖容器镜像Tomcat,容器镜像Nginx、容器镜像Tomcat和容器镜像Mysql均依赖容器镜像CentosExt,CentosExt镜像封装了上层容器镜像所依赖的系统库。

服务模型可采用YAML、xml或json等描述语言定义,并可加载到服务模型引擎中,映射成特定语言的类和对象(如Java),在服务模型引擎内,可直接通过语言级的对象调用访问服务模型的属性、操作和关系,同时服务模型引擎对外提供REST API接口,允许外部模块通过基于HTTP的REST API远程访问服务模型。

以容器NginxA为例,采用YAML定义的节点模型如下:

容器:

ID:Nginx容器A

类型:Nginx容器

状态:未创建

运行时数据:无

网络属性:{网络模式:主机,主机IP}

配额属性:{CPU核心数:2,内存大小:2G,磁盘大小:1G}

操作列表:

-创建容器

-启动容器

-停止容器

资源依赖列表:

虚拟主机:{ID:虚机A,状态:未绑定,-操作:绑定虚机}

虚拟网络:{ID:网络A,状态:未绑定,-操作:绑定网络}

软件依赖列表:

容器镜像:{ID:容器镜像Nginx,状态:未绑定,-操作:绑定镜像}

连接关系列表:

后端代理连接:{ID:后端代理连接1,状态:未建立,-操作:配置后端代理,连接属性:{前端端口:80,后端IP:<WebApp容器A.网络属性.主机IP>,后端端口:<WebApp容器A.网络属性.主机端口>}}

后端代理连接:{ID:后端代理连接2,状态:未建立,-操作:配置后端代理,连接属性:{前端端口:80,后端IP:<WebApp容器B.网络属性.主机IP>,后端端口:<WebApp容器B.网络属性.主机端口>}}

WebApp容器A的模型定义如下:

容器:

ID:WebApp容器A

类型:WebApp容器

状态:未创建

运行时数据:无

网络属性:{网络模式:桥接,容器IP,容器端口,主机IP,主机端口,端口映射}

配额属性:{CPU核心数:2,内存大小:2G,磁盘大小:5G}

容器操作列表:

-创建容器

-启动容器

-停止容器

资源依赖列表:

虚拟主机:{ID:虚机B,状态:未绑定,-操作:绑定虚机}

虚拟网络:{ID:网络A,状态:未绑定,-操作:绑定网络}

软件依赖列表:

容器镜像:{ID:容器镜像WebApp,状态:未绑定,-操作:绑定镜像}

连接关系列表:

数据库连接:{ID:数据库连接1,状态:未建立,-操作:数据库连接配置,属性:{数据库IP:<Mysql容器A.网络属性.主机IP>,

数据库IP:<Mysql容器A.网络属性.主机端口>,

数据库名:<Mysql容器A.数据库属性.数据库名>,

数据库账号:<Mysql容器A.数据库属性.数据库账号>,

数据库密码:<Mysql容器A.数据库属性.数据库密码>}}

Mysql容器A的服务模型定义如下:

容器:

ID:Mysql容器A

类型:Mysql容器

状态:未创建

运行时数据:有

容器网络属性:{内网IP,内网端口,外网IP,外网端口:3306,端口映射}

容器配额属性:{CPU核心数:4,内存大小:4G,磁盘大小:50G}

数据库属性:{数据库名,数据库账号,数据库密码}

容器操作列表:

-创建容器

-启动容器

-停止容器

-导出容器快照

资源依赖列表:

虚拟主机:{ID:虚机C,状态:未绑定,操作:绑定虚机}

数据卷:{ID:数据卷A,状态:未绑定,操作:绑定数据卷}

虚拟网络:{ID:网络A,状态:未绑定,操作:绑定网络}

软件依赖列表:

容器镜像:{ID:容器镜像Mysql,状态:未绑定,操作:绑定镜像}

容器快照:{ID:容器快照MysqlA,状态:未绑定,操作:绑定镜像}

图4为本发明方法一个实施例的流程图。如图4所示,该实施例的方法包括:

步骤S401,获取应用集群的服务模型文件,并提取服务模型文件中的应用集群的资源部署属性和容器节点状态,其中,资源部署属性包括:资源依赖关系、软件依赖关系和拓扑连接关系。

步骤S402,根据资源部署属性和容器节点状态完成应用集群的迁移。

本实施例通过服务模型实现应用集群的所有节点和依赖关系的自动化迁移;通过分析每个主机所依赖的软件镜像,在目标数据中心的主机上批量安装所依赖的软件镜像,提高集群迁移速度,从而减少了集群迁移的停机时间;为节点配置文件模板绑定目标集群的环境参数,生成目标集群的配置文件,从而提升集群的配置文件迁移效率;目标数据中心的镜像仓库作为目标应用集群的镜像代理,按需从源数据中心的镜像仓库中获取并缓存所需的镜像,加速集群的镜像安装。

下面详述发明的基于服务模型的应用集群迁移的方法:

一、对服务模型进行迁移。

参考图5,基于服务模型的应用集群迁移的方法中对服务模型进行迁移,具体包括以下步骤:

步骤S501,从源数据中心的服务模型库中导出应用集群的服务模型文件。

步骤S502,将服务模型文件导入目标数据中心的服务模型库;提取服务模型文件中的资源依赖关系、软件依赖关系、拓扑连接关系和容器节点状态,并将所有容器节点状态设置为“未建立”,并将资源依赖关系和软件依赖关系的状态设置为未绑定,将拓扑连接关系的状态设置为未建立,将容器节点的状态设置为未创建。

在一个实施例中,对服务模型进行迁移的操作还可以包括:

步骤S503,修改服务模型的云资源管理URL,并将云资源管理URL指向目标数据中心管理代理的管理URL。

步骤S504,修改应用模型的镜像仓库的URL属性,并将镜像仓库的URL属性指向目标数据中心的镜像仓库URL。

二、基于服务模型的应用集群迁移的方法中为目标集群分配资源,其中,参考图6,本发明的为目标集群分配资源的步骤可以包括以下操作:

步骤S601,为目标集群创建虚拟机。

步骤S602,为目标集群创建虚拟存储。

步骤S603,为目标集群创建虚拟网络。

步骤S604,为目标集群绑定网络资源。

参考图7,为目标集群创建虚拟机的操作步骤S601具体包括以下操作:

步骤S701,调用服务模型引擎的虚拟机节点查询接口,获取所有容器节点状态为“未创建”的虚拟机。

步骤S702,根据容器节点的资源配额以及容器节点与虚拟机节点的依赖关系计算每个虚拟机节点的资源需求,其中,资源需求为该虚拟机上的每个容器的规格之和,包括CPU核数、虚拟机内存大小以及磁盘大小等。

步骤S703,通过管理代理的云资源管理平台,例如云计算管理平台openstack的虚拟机查询接口API,获取资源规格不小于资源需求的虚拟机规格。

步骤S704,调用虚拟机节点的创建操作,例如可以调用服务模型代理的接口,根据虚拟机镜像标识、虚拟机资源规格ID为该虚拟机节点分配虚拟机,绑定虚拟机镜像,并将容器节点中的容器节点状态设置为已创建,其中虚拟机镜像包括:系统内核和容器引擎。

步骤S705,当虚拟机创建成功后,更新虚拟机节点的IP地址、主机名等信息,并将容器节点的状态设置为“已创建”,从而完成虚拟机的创建。

参考图8,为目标集群创建虚拟存储602具体包括以下操作:

步骤S801,获取容器节点状态为“未创建”的虚拟数据卷,例如可以调用服务模型的虚拟存储节点查询接口进行查询和获取。

步骤S802,调用虚拟机存储节点的创建接口,例如可以根据虚拟数据卷的大小和类型进行调用和创建。

步骤S803,获取状态为“未创建”的虚拟网络节点,例如可以通过调用服务模型的虚拟存储节点查询接口实现。

步骤S804,调用每个虚拟网络节点的“创建”操作,例如可以根据网络带宽等信息实现调用和创建。

步骤S805,通过服务模型引擎内部调用目标数据中心管理代理中的云资源管理平台的网络管理API接口创建虚拟网络。

步骤S806,在虚拟网络创建成功后更新虚拟网络节点的网络地址、网关IP、子网掩码、虚拟局域网标识(Virtual Local Area Network,VlAN)等信息,将虚拟网络节点的状态设为“已创建”。

参考图9,为目标集群绑定网络资源的步骤S603具体可以包括以下步骤:

步骤S901,获取容器节点状态为“未绑定”的资源依赖关系,例如可以调用服务模型的虚拟查询接口进行查询和获取。

步骤S902,对于虚拟机的依赖关系,执行绑定虚拟机操作,更新容器节点的主机IP,通过管理代理的容器引擎的创建容器接口在虚拟机上创建容器,进行容器相关的初始化配置,例如可以包括容器的环境变量、资源配额等,将虚拟机的依赖关系的状态改为“已绑定”。

步骤S903,对于数据卷依赖关系,执行绑定数据卷操作,通过容器引擎的挂载数据卷接口,为容器挂载数据卷,将依赖关系的状态改为“已绑定”。

步骤S904,对于网络依赖关系,执行绑定虚拟网络操作,首先通过容器引擎网络配置接口配置容器网络,为容器分配虚拟网卡,将容器的虚拟网卡桥接到虚拟机的主机网桥上,然后通过云资源管理平台的网络管理接口将容器的主机IP和主机端口添加到虚机网络的VLAN中,最后更新容器节点的网络属性,将网络依赖关系的状态设为“已绑定”。

三、应用集群软件迁移。

参考图10,本发明的基于服务模型的应用集群迁移的方法中的对应用集群进行软件迁移的步骤可以包括:

步骤S1001,根据虚拟主机与容器的反向依赖关系、容器与容器镜像的依赖关系得到每个虚拟机节点需要安装的容器镜像列表。

步骤S1002,调用每个虚机上的容器引擎,从目标数据中心的容器镜像仓库中下载虚机上不存在的容器镜像。

步骤S1003,如果目标数据中心的容器镜像仓库中不存在指定的容器镜像,则容器镜像仓库先从源数据中心的容器镜像仓库中下载壁挂保存容器镜像。

步骤S1004,容器引擎根据容器镜像中镜像依赖关系层次将镜像分层安装到主机的本地镜像仓库中,本地镜像仓库通常由某种支持分层文件结构的联合文件系统例如AUFS或BTRFS来实现。

步骤S1005,调用容器引擎的绑定镜像操作,为每个容器绑定顶层容器镜像,并将容器镜像依赖关系设为“已绑定”

步骤S1006,当所有容器节点的容器镜像依赖关系均为“已绑定”时,说明应用集群的无状态节点和有状态节点的软件已安装完毕,可以启动有状态节点的运行时数据迁移的操作。

在一个实施例中,参考图11,对有状态节点的运行时数据迁移的操作,具体可以包括:

步骤S1101,停止源应用集群。

步骤S1102,导出源应用集群中有状态节点的运行时数据,通过调用容器引擎的导出快照操作将有状态容器的运行时数据导出成快照镜像,其中,快照镜像是一种特殊的容器镜像,只包含容器中的运行时增量数据。

步骤S1103,将快照镜像上传到源数据中心的容器镜像仓库中。

步骤S1104,目标数据中心的容器引擎向目标镜像仓库中请求获得快照镜像。

步骤S1105,目标镜像仓库从源镜像仓库中下载镜像快照。

步骤S1106,容器引擎将镜像快照导入到指定的容器中,从而实现运行时数据迁移。

参考图12,本实施例的拓扑连接配置的操作,具体可以包括以下步骤:

步骤S1201,调用服务引擎的拓扑连接查询接口,获取每个容器节点中状态为“未建立”的拓扑连接列表。

步骤S1202,设置拓扑连接的连接属性参数,例如参考上述Nginx容器A的后端代理连接定义,可以将将连接属性中"<>"中的内容替换成模型中对应节点的属性值,<WebApp容器A.网络属性.主机IP>表示取WebApp容器A节点的网络属性集的主机IP属性,假设为10.10.10.11,<WebApp容器A.网络属性.主机端口>表示取WebApp容器A节点的网络属性集的主机端口属性,假设为8080。则实例化后的连接属性为{前端端口:80,后端IP:10.10.10.10,后端端口:8080}。

步骤S1103,执行连接配置操作,,每个拓扑连接关系都拥有一个配置操作,该配置操作绑定了管理代理的一个配置API,调用管理代理的容器引擎的REST API执行相应容器的连接配置操作。这里需要扩展容器引擎,提供容器内的脚本配置REST API,执行指定容器上的指定配置脚本。例如:执行nginx后端连接配置的REST API为:

http://<容器主机IP>:<容器引擎端口>/<容器ID>/configshell/?shellfile=nginx_config.sh&fe_port=80&be_ip=10.10.10.10&be_port=8080。

容器引擎接收到该REST API请求后,根据URI参数中的容器ID通过管道机制或SSH机制连接指定的容器,执行容器中的指定配置脚本nginx_config.sh。

步骤S1204,当配置脚本执行成功后,将拓扑连接关系的状态改为"已建立"。

五、目标应用集群启动

参考图13,本发明的对目标应用集群启动的操作,具体可以包括以下步骤:

步骤S1301,当容器节点的资源依赖关系、软件依赖关系和拓扑连接依赖关系均绑定时,将容器节点的状态设为"已就绪"。

步骤S1302,根据容器的拓扑连接依赖关系依次启动状态为"已就绪"的容器,并调用容器引擎的REST API启动容器,容器节点启动后,将容器节点的状态置为“运行中”。首先启动参考图1中依赖关系最末端的节点,即被依赖的根节点,本实施例为Mysql容器A节点,然后依次启动根节点的依赖子节点,WebApp容器A节点和WebApp容器B节点,最后启动拓扑依赖的顶层节点即Nginx容器A节点。

步骤S1303,当集群的所有容器节点启动后,完成整个应用集群的迁移工作

图14为本发明的基于服务模型的应用集群迁移的迁移装置的一个实施例的结构示意图。参考图14,本实施例的装置包括,包括:信息获取模块1401和集群迁移模块1402。

信息获取模块1401,用于获取应用集群的服务模型文件,并提取服务模型文件中的应用集群的资源部署属性和容器节点状态,其中,资源部署属性包括:资源依赖关系、软件依赖关系和拓扑连接关系;

集群迁移模块1402,用于根据资源部署属性和容器节点状态完成应用集群的迁移。

在一个实施例中,参考图15,信息获取模块1401包括:导出子单元1501、导入子单元1502和信息提取单元1503。

导出子单元1501,用于从源数据中心的服务模型库中获取应用集群的服务模型文件。

导入子单元1502,将服务模型文件导入目标数据中心的服务模型库。

信息提取单元1503,用于提取服务模型文件中的资源依赖关系、软件依赖关系、拓扑连接关系和容器节点状态。

在一个实施例中,参考图16,集群迁移模块1402包括:状态设置单元1601、资源分配单元1602、软件迁移单元1603、数据迁移单元1604和拓扑配置单元1605。

其中,

状态设置单元1601,用于将资源依赖关系和软件依赖关系的状态设置为未绑定,将拓扑连接关系的状态设置为未建立,将容器节点的状态设置为未创建。

资源分配单元1602,用于根据容器节点状态和资源依赖关系为目标应用集群分配资源。

软件迁移单元1603,用于根据软件依赖关系为目标应用集群迁移软件。

数据迁移单元1604,用于将源应用集群的数据迁移到目标应用集群。

拓扑配置单元1605,用于根据拓扑依赖关系为目标应用集群进行拓扑连接配置。

在一个实施例中,参考图17,资源分配单元1602包括:资源创建子单元1701和资源绑定单元1702。

资源创建子单元1701,用于根据资源依赖关系和容器节点状态在目标应用集群容器创建虚拟机;还用于根据资源依赖关系为目标应用集群容器中的虚拟机创建虚拟数据卷;还用于根据资源依赖关系为目标应用集群创建虚拟网络。

资源绑定单元1702,用于根据资源依赖关系为目标应用集群容器绑定容器资源。

在一个实施例中,资源创建子单元1701具体用于根据容器节点的资源配额需求以及容器节点与虚机节点的依赖关系计算每个虚机节点的资源需求;资源创建子单元还用于根据虚拟容器节点的资源需求为虚拟容器节点创建虚拟机,绑定虚拟机镜像,并将所述容器节点依赖的虚拟机的状态设置为已创建,其中所述虚拟机镜像包括:系统内核和容器引擎。

在一个实施例中,资源创建子单元1701具体用于根据容器节点信息中的虚拟数据卷为目标应用集群创建虚拟数据卷,并将容器节点依赖的虚拟机状态设置为已创建。

在一个实施例中,资源创建子单元1701,具体用于根据容器节点状态中的虚拟网络容器节点状态为目标应用集群创建虚拟网络,并将容器节点依赖的虚拟网络状态设置为已创建。

在一个实施例中,资源绑定单元1702具体用于根据资源依赖关系中的虚拟机依赖关系;还用于为容器节点绑定虚拟数据卷;还用于根据资源依赖关系中的数据卷依赖关系,为容器节点绑定虚拟数据卷;还用于根据资源依赖关系中的网络依赖关系,为容器节点绑定虚拟网络;还用于将虚拟机依赖关系、数据卷依赖关系和网络依赖关系的状态设置为已绑定。

在一个实施例中,软件迁移单元1603,具体用于根据资源依赖关系中的虚拟机与容器的反向依赖关系、容器与容器镜像的依赖关系获得虚拟机容器节点的容器镜像列表;还用于调用虚拟机的容器引擎,从目标数据中心的容器镜像仓库获取主机上不存在的容器镜像,若目标数据中心的容器镜像仓库中不存在指定的容器镜像,则容器镜像仓库从源数据中心的容器镜像仓库中获取不存在的容器镜像;还用于根据资源依赖关系中的镜像依赖关系安装容器镜像的文件;还用于为容器绑定容器镜像文件的顶层镜像,并将资源依赖关系中的镜像依赖关系设置为已绑定。

在一个实施例中,数据迁移单元1604用于当所有的镜像依赖关系的状态均为已绑定时,启动数据容器节点的运行时数据迁移,将源应用集群的运行时数据迁移到目标应用集群。

在一个实施例中,数据迁移单元1604具体用于停止源应用集群,获取源应用集群中数据容器节点的运行时的数据;还用于根据源应用集群中数据容器节点的运行时的数据生成快照镜像;将快照镜像上传到源数据中心的容器镜像仓库;还用于目标数据中心的容器引擎从源镜像仓库获取镜像快照,并将镜像快照导入指定的容器节点。

在一个实施例中,拓扑配置单元1605具体用于获取拓扑连接关系中的连接信息;还用于为容器配置拓扑连接属性参数;还用于启动拓扑连接属性参数,并且将拓扑连接关系的状态设置为已建立。

在一个实施例中,参考图16,本实施中的迁移装置可以还包括:集群迁移单元1606,用于当资源依赖关系、软件依赖关系和拓扑连接依赖关系均绑定时,将容器节点的状态设置为已就绪;还用于当所有容器节点状态都设置为已就绪后,确认完成应用集群的迁移。

本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。

以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

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