CN109408115A - 一种基于容器环境中迁移对象的方法及计算*** - Google Patents
一种基于容器环境中迁移对象的方法及计算*** Download PDFInfo
- Publication number
- CN109408115A CN109408115A CN201811090582.1A CN201811090582A CN109408115A CN 109408115 A CN109408115 A CN 109408115A CN 201811090582 A CN201811090582 A CN 201811090582A CN 109408115 A CN109408115 A CN 109408115A
- Authority
- CN
- China
- Prior art keywords
- environment
- migration
- source
- migrated
- container
- 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
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/76—Adapting program code to run in a different environment; Porting
-
- 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
-
- 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/4557—Distribution of virtual machine instances; Migration and load balancing
-
- 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/45595—Network integration; Enabling network access in virtual machine instances
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明揭示了一种基于容器环境中迁移对象的方法及使用该方法的一种计算***,该方法包括:对象在由迁移程序与迁移数据库所组成的迁移单元的控制下自源环境迁移至目标环境中,迁移程序根据迁移数据库预先存入的待迁移的对象的迁移路径记录,将待迁移的对象所形成的镜像文件及数据卷地址直接迁移至目标环境中。通过本发明所揭示的方法及计算***,显著地降低了在源环境中出现服务器老化、运行程序所需要的CPU、内存或者磁盘殆尽时需要将对象进行迁移时所造成的服务中断时间,提高了对象在不同环境之间的迁移速度,降低了因迁移操作所产生的数据量。
Description
技术领域
本发明涉及云计算技术领域,尤其涉及一种基于容器环境中迁移对象的方法及基于上述方法的一种计算***。
背景技术
容器(Container)基于客户端服务器(C/S)架构模式,使用远程API来管理和创建容器。容器通过镜像文件(image)来创建。生成的镜像文件可以被任意地部署在已经部署容器或者容器环境的服务器(例如物理机、云主机等)中再次创建一个容器。
Docker是目前一种开源容器引擎。容器需要的资源主要包括CPU、内存、容器镜像、网络与存储卷等。Docker通过docker commmit命令创建容器,该命令在执行时会先检查传入参数的合法性,并根据传入参数分配容器需要的各种资源,并在创建容器成功之后启动容器。
容器内的文件***(file system)通过在只读镜像文件***上增加一层读写层实现。Docker通过网络插件实现容器网络的跨主机统一管理,通过存储卷保存用户程序产生的数据文件。Docker将容器主要信息保存在其工作目录下。
目前,在容器迁移技术中,如果想保存用户在容器中进行操作,需要***先将容器保存为镜像,或者保存容器的检查点(Checkpoint),再在新主机上启动容器完成迁移。但是上述两种方法都消耗保存大量的计算资源和存储资源。如果主机突然发生故障,还没有导出镜像或保存检查点,将无法实现容器有状态的迁移。容器及其管理集群实现的技术推崇容器无状态化,即使主机发生故障,其上运行的容器也能随时在其他主机重启,这要求容器本身不存储任何状态相关的数据。
申请人经过检索后发现,公开号为CN108268304A的中国发明专利公开了“一种基于容器的Web app迁移方法”。该现有技术虽然了实现了Web app的状态迁移运行,具备即时保存、状态迁移、跨平台特性和安全隔离特性,但是其无法解决对虚拟机实现不同平台或者不同集群之间的迁移。这种技术上的缺陷在分布式集群中的某个集群或者集群中的某个节点存在全部或者部分服务器老化现象时,如果对虚拟机、主机(HOST)或者APP等对象进行迁移操作的场景中,会存在较为严重的服务中断的现象,从而极大地影响了用户体验;同时,也会导致对象在被迁移操作的过程中产生较大的数据量,从而增加了基于容器环境的云平台的计算开销。
发明内容
本发明的目的在于揭示一种基于容器环境中迁移对象的方法,以及基于上述方法的一种计算***,用于实现在源环境中出现服务器老化、运行程序所需要的CPU、内存或者磁盘殆尽时需要将对象进行迁移时所造成的服务中断时间尽量降低,提高对象在不同环境之间的迁移速度,并降低因迁移操作所产生的数据量。
为实现上述第一个发明目的,本发明首先提供了一种基于容器环境中迁移对象的方法,对象在由迁移程序与迁移数据库所组成的迁移单元的控制下自源环境迁移至目标环境中,所述迁移程序根据迁移数据库预先存入的待迁移的对象的迁移路径记录,将待迁移的对象所形成的镜像文件及数据卷地址直接迁移至目标环境中。
作为本发明的进一步改进,所述迁移单元在逻辑上运行于源环境、目标环境或者独立于源环境与目标环境的第三方平台,所述第三方平台与源环境及目标环境建立网络通信。
作为本发明的进一步改进,所述源环境与目标环境被配置为物理服务器、由多个服务器组成的集群、虚拟服务器或者由多个虚拟服务器组成的集群。
作为本发明的进一步改进,所述迁移程序运行于JAVA虚拟机、Framework虚拟机或者Android虚拟机中;其中,
所述迁移程序用于引导待迁移的对象根据迁移数据库中所保存的迁移数据从源环境迁移至目标环境中;
所述迁移数据库用于记录对象在源环境迁移至目标环境中所产生的迁移数据,所述迁移数据包括主机信息表、容器表及迁移表。
作为本发明的进一步改进,所述主机信息表由IP地址、用户名及密码共同构成;所述容器表由容器所在的主机、容器ID、容器名称或者本地数据卷地址中的一种或者几种共同构成;所述迁移表由迁移组、迁移记录或者迁移状态中的一种或者几种共同构成。
作为本发明的进一步改进,所述对象为容器、运行于容器中的虚拟机、镜像文件、程序、配置文件或者在线式应用。
作为本发明的进一步改进,包括以下步骤:
S1、将源环境中待迁移的对象所依赖的主机与目标环境中接收所述待迁移的对象所依赖的主机向迁移程序进行登记,并在源环境与目标环境中分别部署响应于迁移程序的源端迁移代理与目标端迁移代理;
S2、在源环境中创建待迁移的对象的镜像并压缩待迁移的对象的数据卷,并上传至目标环境的文件***中;
S3、当目标端迁移代理检测步骤S2执行完毕后向迁移程序报告;
S4、迁移程序向源端迁移代理发起同步源环境与目标环境中的数据卷的路径的操作,源端迁移代理同步调用数据镜像备份程序,比较待迁移的对象在源环境与目标环境所产生的数据大小及最近一次修改时间,并仅在数据大小不同或者最近一次修改时间不同时,由数据镜像备份程序对待迁移的对象在源环境与目标环境中的数据卷地址执行同步操作;
S5、更新迁移数据库中的迁移记录,并向迁移程序反馈待迁移的对象迁移成功的消息。
作为本发明的进一步改进,所述步骤S2中,在源环境中通过容器命令创建待迁移的对象的镜像。
作为本发明的进一步改进,所述步骤S5执行完毕之后,还包括:迁移程序将启用被迁移的对象在目标环境的启用请求发送至目标端迁移代理,通过容器命令在目标环境中创建所述被迁移的对象的镜像,并将所述被迁移的对象的镜像在源环境中的本地数据卷地址替换为目标环境中的本地数据卷地址。
作为本发明的进一步改进,所述对象在迁移单元的控制下自源环境通过交换机迁移至目标环境中,所述第三方平台与所述交换机建立网络通信,所述迁移程序根据迁移数据库预先存入的待迁移的对象的迁移路径记录,将待迁移的对象所形成的镜像文件及数据卷地址直接迁移至目标环境中。
作为本发明的进一步改进,还包括:配置与迁移程序关联的迁移客户端的操作,所述迁移客户端嵌入运行于浏览器中。
同时本申请还揭示了一种计算***,包括:
至少一个处理器;
存储装置,被配置为存储至少一个基于容器环境运行的对象,
当所述对象被处理器处理时,使得处理器执行上述7至11中任一项发明所述的基于容器环境中迁移对象的方法。
作为本发明的进一步改进,所述存储装置包括Ceph存储装置、Hadoop分布式文件***、SAN存储设备、NAS存储设备、RAID、对象存储***或者非易失性存储装置。
与现有技术相比,本发明的有益效果是:通过本发明所揭示的方法及计算***,显著地降低了在源环境中出现服务器老化、运行程序所需要的CPU、内存或者磁盘殆尽时需要将对象进行迁移时所造成的服务中断时间,提高了对象在不同环境之间的迁移速度,降低了因迁移操作所产生的数据量。
附图说明
图1为本发明基于容器环境中迁移对象的方法在实施例一中的过程示意图;
图2为本发明基于容器环境中迁移对象的方法在实施例二中的示意图,其中,在实施例二中,待迁移的对象在迁移单元的控制下自源环境通过交换机迁移至目标环境中;
图3为在与迁移程序关联的迁移客户端中在源环境中选择需要被执行迁移操作的对象的操作界面;
图4为实施例三中迁移单元在逻辑上运行于目标环境的实例中采用本发明一种基于容器环境中迁移对象的方法将对象从源环境迁移至目标环境中的过程示意图;
图5为实施例四中迁移单元在逻辑上运行于独立于源环境与目标环境的第三方平台中的实例中采用本发明一种基于容器环境中迁移对象的方法将对象从源环境迁移至目标环境中的过程示意图;
图6为迁移客户端嵌入运行于浏览器中的实例;
图7为在目标环境的Linux***中使用stat命令查看名称为test.fl(即待迁移的对象)的数据卷对象的属性代码截图;
图8为在源环境中的Linux***中使用stat命令查看被执行迁移操作的待迁移的对象在执行迁移操作后被修改后的test.fl数据卷文件的属性代码截图。
具体实施方式
下面结合附图所示的各实施方式对本发明进行详细说明,但应当说明的是,这些实施方式并非对本发明的限制,本领域普通技术人员根据这些实施方式所作的功能、方法、或者结构上的等效变换或替代,均属于本发明的保护范围之内。
在详细阐述本发明各个实施例之前,对说明书中所涉及的技术术语进行限定、解释与说明。
MV Service:迁移程序MV Client:迁移程序客户端;MV_Source_Agent:源端迁移代理;MV_Target_Agent:目标端迁移代理;MV_DB:迁移数据库HOST:主机;container:容器。
实施例一:
请参图1、图3及图6所揭示的本发明一种基于容器环境中迁移对象的方法的第一种具体实施方式。
在本实施例中,该方法包括:对象在由迁移程序301与迁移数据库302所组成的迁移单元30的控制下自源环境10迁移至目标环境20。迁移程序301根据迁移数据库302预先存入的待迁移的对象的迁移路径记录,将待迁移的对象所形成的镜像文件及数据卷地址直接迁移至目标环境20中。
HOST1为源环境10中运行的一个主机,HOST1中运行着一个DOCKER容器,这个容器用于提供MySQL数据库服务,MySQL数据库服务的数据文件A会存储在HOST1中的某个目录中,如/mnt/data/m1中。数据文件A在本实施例中展现为目录或者文件的形式,数据文件A存在若干级索引关系。在容器环境中,每个容器有且只有一个与其唯一对应的目录或者文件夹(即数据文件A)。因此,在待迁移的对象在迁移过程中,数据文件A不因待迁移的对象在不同环境中的发生迁移操作而发生变化。
HOST2为目标环境20中运行的一个主机。在本实施例中,我们以HOST1中运行的contain1和column1全部迁移到HOST2中并形成contain1’和column1’的过程详细阐述。HOST3为用于安装并运行迁移单元30的一个主机。
在本实施例中,该对象作为被执行迁移操作的客体,可为容器(即说明书附图1或者图3中的container)、运行于容器中的虚拟机、镜像文件、程序、配置文件或者在线式应用,在本申请中对象作为基于本方法所执行的客体,申请人选用容器为典型范例,以进行示范性的说明。本领域的普通技术人员可以通过本说明书进行合理预测,延及其它可被执行迁移操作的客体。该客体并不限定上述所揭示的运行于容器中的虚拟机、镜像文件、程序、配置文件或者在线式应用。同时,需要说明的是,本说明书所揭示的各个实施例中,执行迁移操作的对象仅限于运行在容器环境中的对象,且不适用于操作***(OS)在任何逻辑层面中的对象迁移操作。
进一步的,在本实施例中,迁移单元30在逻辑上运行于源环境10、目标环境20或者独立于源环境10与目标环境20的第三方平台40,所述第三方平台与源环境10及目标环境20建立网络通信。源环境10与目标环境20可被配置为物理服务器、由多个服务器组成的集群、虚拟服务器或者由多个虚拟服务器组成的集群。迁移程序301运行于JAVA虚拟机(即JVM)、Framework虚拟机或者Android虚拟机中;其中,迁移程序301用于引导待迁移的对象根据迁移数据库302中所保存的迁移数据从源环境10迁移至目标环境20中;迁移数据库302用于记录对象在源环境10迁移至目标环境20中所产生的迁移数据,所述迁移数据包括主机信息表、容器表及迁移表。
主机信息表由IP地址、用户名及密码共同构成;所述容器表由容器所在的主机(即HOST)、容器ID、容器名称或者本地数据卷地址中的一种或者几种共同构成;迁移表由迁移组、迁移记录或者迁移状态中的一种或者几种共同构成。
更为具体的,在本实施例中,本实施例所揭示的一种基于容器环境中迁移对象的方法,其包括如下步骤S1至步骤S4。
步骤S1、将源环境10中待迁移的对象(即图3中的container1)所依赖的主机HOST1与目标环境20接收所述待迁移的对象所依赖的主机(即图1中的HOST2)向迁移程序301进行登记,并在源环境10与目标环境20中分别部署响应于迁移程序301的源端迁移代理11与目标端迁移代理21。
接下来,执行步骤S2、在源环境10中创建待迁移的对象的镜像并压缩待迁移的对象的数据卷,并上传至目标环境20的文件***中。具体的,在步骤S2中,在源环境10中通过容器命令创建待迁移的对象的镜像。该容器命令例如:docker commit-p containerIDimageName。
接下来,执行步骤S3、当目标端迁移代理21检测步骤S2执行完毕后向迁移程序301报告。
接下来,执行步骤S4、迁移程序301向源端迁移代理11发起同步源环境10与目标环境20中的数据卷的路径的操作,源端迁移代理11同步调用数据镜像备份程序(rsync),比较待迁移的对象在源环境10与目标环境20所产生的数据大小及最近一次修改时间(例如,可通过待迁移的对象container1在源环境10与目标环境20中所形成的时间戳的增量数据来确定“最近一次修改时间是否不同”),并仅在数据大小不同或者最近一次修改时间不同时,由数据镜像备份程序对待迁移的对象在源环境10与目标环境20中的数据卷地址的路径进行执行同步操作。
参图7及图8所示,在本实施例中,所谓的“最近一次修改时间”可通过stat命令进行在源环境10中进行查看,以通过数据镜像备份程序(rsync)执行同步操作。迁移程序301向源端迁移代理11发起同步源环境10与目标环境20中的数据卷的路径的操作。源端迁移代理11同步调用数据镜像备份程序,比较待迁移的对象在源环境10与目标环境20所产生的数据大小及最近一次修改时间,并仅在数据大小不同或者最近一次修改时间不同时,由数据镜像备份程序(rsync)对待迁移的对象在源环境10与目标环境20中的数据卷地址执行同步操作。
具体的,图7为第一次试用linux***的stat命令查看test.fl这个文件的状态。我们可以看到文件的修改时间(Modify)为2018-09-06 11:16:27,文件大小(Size)为7b(即7bit)。图8为对test.fl做过一次修改后,文件的修改时间(Modify)2018-09-06 11:17:28,同时,文件大小8b(即8bit)。根据这两个字段的值,在两次查询中,根据test.fl在源环境10与目标环境20的迁移过程中是否有差异的事实或者判定,所述差异包括:数据大小的差异及最近一次修改时间的差异,以触发数据镜像备份程序(rsync)是否需要执行数据同步的操作。
最后,执行步骤S5、更新迁移数据库302中的迁移记录,并向迁移程序301反馈待迁移的对象迁移成功的消息。
同时,在步骤S5执行完毕之后,还包括:迁移程序301将启用被迁移的对象在目标环境20的启用请求发送至目标端迁移代理21,通过容器命令在目标环境20中创建所述被迁移的对象的镜像(即图1中的镜像文件),并将所述被迁移的对象的镜像在源环境10中的本地数据卷地址替换为目标环境20中的本地数据卷地址。
具体的,图1中用圆圈表示的数学序号①至⑧对上述步骤S1至步骤S5中所涉及的过程进行进一步展开阐述。
第①步:首先,先将要迁移的源环境10中待迁移的对象所依赖的主机(HOST1)和目标环境20中接收待迁移的对象所依赖的主机(HOST2)录入到迁移程序301中,以进行信息登记,从而明确哪个容器需要被迁移,以及迁移入目标环境20中的哪个主机中。使用浏览器60(参图6所示)访问迁移客户端50中输入HOST1的地址和访问权限(IP地址、用户名、密码),迁移程序301对HOST1发起请求,在HOST1中部署一个源端迁移代理,通过源端迁移代理获取目前运行在HOST1中的所有容器及每个容器对应的本地卷地址,并将主机信息和容器信息存入迁移数据库302(一条记录的主要信息类似:HOST1|容器名称|本地卷地址)。
第②步:在迁移客户端50中选择HOST1中要迁移的容器和要迁移到哪台目标主机(HOST2),并向HOST1中的源端迁移代理发起迁移任务(要迁移哪些容器,迁移到哪台目标),并生成一条迁移记录,存入到迁移数据库302的迁移表中。
第③步:源端迁移代理11收到迁移程序301的迁移任务,通过容器命令,在HOST1中创建container1的对应镜像,将镜像上传至HOST2的文件***中,压缩container1对应的本地数据卷(HOST1:///mnt/data/m1),并将完成压缩的文件上传至HOST2的文件***同。
第④步:HOST2上的目标端迁移代理21检测到,接收完成了container1的镜像文件及container1对应的本地数据卷压缩包,解压数据卷压缩包文件到/target/m1,目标端迁移代理21将接受完成信息发送到迁移程序301。
第⑤步:迁移程序301得到源端迁移代理11返回的文件接受成功信息,向HOST1上的源端迁移代理发起停止container1的命令,源端迁移代理11通过容器命令停止container1,停止后,源端迁移代11向迁移程序301通知已停止了HOST1上的container1。
第⑥步:迁移程序301请求源端迁移代理11同步HOST2:/target/m1与HOST1:/mnt/data/m1,源端迁移代理11调用Linux操作***中的数据镜像备份程序(rsync),比较HOST2:/target/m1与HOST1:/mnt/data/m1的文件大小和修改时间,如果两个文件的大小或修改时间相同,将忽略该文件,直接通知迁移程序301已完成数据同步。如果两个文件的大小或修改时间不同,则rsync执行同步HOST1:/mnt/data/m1和HOST2:/target/m1的操作,目标端迁移代理21接收到rsync返回的同步成功信息,并向迁移程序301返回迁移成功信息。
第⑦步:迁移程序301接收到迁移成功信息后,更新迁移数据库302中的对应迁移记录的状态,并向迁移客户端50发送迁移成功通知。
第⑧步:用户从迁移客户端50接收到迁移成功通知,并发起启动应用请求。迁移客户端50将此命令发送给迁移程序301,迁移程序301将启用请求发送到HOST2上的目标端迁移代理21,目标端迁移代理21通过容器命令,通过本机上的container1所对应的镜像文件,创建container1’容器,并将container1’容器对应的本地数据卷地址指向HOST2:/target/m1,至此整个对象迁移任务完成。
需要说明的是第⑧步不一定需要通过该迁移单元30执行,在完成第⑦步同步完成数据并返回成功信息到迁移程序301后,直接启用HOST2上的container1’容器并更改container1’的本地卷。同时,管理员以可以不通过迁移程序301去目标端迁移代理21发起启动容器的请求。
为了更为直观且具体的解释本申请各个实施例在对象迁移操作过程中所具有的提高迁移速度,降低迁移操作所产生的数据量并降低服务中断时间的技术效果。申请人假定一种场景,并详细阐述本发明各个实施例的有益效果。
例如:当被执行迁移操作的对象为“大数据分析应用A”。这个应用(为解决某一业务需求,如完成日志分析,这一业务需要有多个程序来协同解决,我们将这样的程序的集合成为应用)包含HDFS、HIVE、MySQL三个应用程序,Hadoop分布式文件***(HDFS)约331MB及数据仓库基础工具(HIVE)约226MB、MySQL约65MB的程序容器镜像,以及存储在HDFS的500GB数据和存储在MYSQL中的约200MM的数据全部从集群A(或单台主机、虚拟机)迁移到集群B(或单台主机、虚拟机)中,并在集群B中配置并启用“大数据分析应用A”。使用本实施例提及的对象迁移技术时,主要节省N个部分的工作量及时间。于此场景中,集群A与源环境10作等同解释,集群B与目标环境20作等同解释。
当不使用本实施例一所揭示的技术方案时,需要手动在集群B中搭建与集群A中一模一样的“大数据分析应用A”(不包含数据)。这个过程需要运维人员约1天的时间。使用本实施例一所揭示的技术方案时,由采用了独立于集群A与集群B的迁移单元30,免去了运维人员手工的在集群B中,上传各个应用程序的镜像的时间。
不使用此技术时,为保证数据一致性,需要先停止“大数据分析应用A”,直到数据全部迁移至集群B中的“大数据分析应用A”中的HDFS及MYSQL中,并成功启动“大数据分析应用A”。这个过程将导致“大数据分析应用A“无法使用,这个过程将持续数小时。因此,在基于容器环境中采用现有的对象迁移技术所导致的服务中断时间非常长,严重的影响了用户体验。
当使用实施例一所揭示的技术方案时,在对象迁移的数个小时里,“大数据分析应用A”是不会中断的,只有在这部分数据迁移完成后,对这数小时里,“大数据分析应用A”产生的新数据进行迁移时,为了保证数据一致性,才需要停止服务或者中断服务。如果这期间只产生了2G的数据,那包括迁移这2G数据及启动集群B中的“大数据分析应用A”所需的时间,一般只需要数分钟的时间。
由此可见,通过本实施例一所揭示的一种基于容器环境中迁移对象的方法能够显著地降低对象进行迁移时所造成的服务中断时间,提高了对象在不同环境之间的迁移速度,降低了因迁移操作所产生的数据量。
实施例二:
请结合图1及图2所揭示的本发明一种基于容器环境中迁移对象的方法的第二种具体实施方式。
本实施例与实施例一相比,其主要区别在于,在本实施例中,迁移单元30在逻辑上独立于源环境10与目标环境20的第三方平台40。第三方平台与源环境10及目标环境20建立网络通信。
具体的,在本实施例中,对象在迁移单元30的控制下自源环境10通过交换机60迁移至目标环境20中。第三方平台与所述交换机60建立网络通信。迁移程序301根据迁移数据库302预先存入的待迁移的对象的迁移路径记录,将待迁移的对象所形成的镜像文件及数据卷地址直接迁移至目标环境20中。该迁移数据库302具体可为关系型数据库。
需要说明是的,为简化表示,交换机60通过星型拓扑关系连接源环境10中的HOST1、目标环境20中的HOST2,迁移单元30运行于第三方平台40中的HOST3中。因此,交换机60还可同时以星型拓扑关系连接三个或者四个或者数量更多的源环境10及目标环境20。源环境10与目标环境20中可配置一个或者多个基于容器环境的主机(HOST),以通过实施例一所揭示的方法,引导待迁移的对象从源环境10执行对象迁移操作,以将待迁移的对象迁移至目标环境20。这种迁移操作既可以是单向的,也可以是双向的。
待迁移的对象(即图1或者图3中的container1)在迁移单元30的控制下自源环境10通过交换机60迁移至目标环境20中。第三方平台与所述交换机60建立网络通信。迁移程序301根据迁移数据库302预先存入的待迁移的对象的迁移路径记录,将待迁移的对象所形成的镜像文件及数据卷地址直接迁移至目标环境20中。
本实施例与实施例一中相同部分的技术方案请参实施例一所示,在此不再赘述。
实施例三:
请参图4所揭示的本发明一种基于容器环境中迁移对象的方法的第三种具体实施方式。本实施例与实施例一和/或实施例二相比,其主要区别在于,在本实施例中,迁移单元30在逻辑上运行于目标环境20中。
迁移客户端50向迁移单元30,其具体向迁移单元30中的迁移程序301发起迁移HOST1中的待迁移的对象(即container1)的迁移操作,并具体如下述第①步至第⑦步所示。
第①步:录入目标迁移源主机HOST1、迁移目标主机HOST2、指定要迁移的容器container1和要迁移到哪台目标主机(HOST2)等信息。
第②步:请求HOST1中的源端迁移代理11迁移容器的镜像文件、本地数据、本地数据卷。
第③步:源端迁移代理11将容器的镜像文件、本地数据、本地数据卷发送给HOST2。
第④步:目标端迁移代理21通知MV Service已经完成了传输。
第⑤步:迁移程序301请求源端迁移代理11去停止container1。
第⑥步:源端迁移代理11停止container1并同步HOST2:/target/m1与HOST1:/mnt/data/m1,完成后通知迁移程序301同步已完成。
第⑦步骤:迁移程序301告知迁移客户端50对该待迁移的对象(即container1)的迁移操作已经完成。
本实施例中的第①步至第⑦步可参考实施例一中的第①步至第⑦步执行。本实施例与实施例一和/或实施例二中相同部分的技术特征请参上文所述,在此不再赘述。
实施例四:
请参图5所揭示的本发明一种基于容器环境中迁移对象的方法的第四种具体实施方式。注意,在本申请中,这些不同的主机虽然被备注了不同的序号,例如HOST1、HOST01、HOST02、HOST03、HOST04、HOST05、HOST10、HOST1、HOST2仅仅是为了说明,这些主机在不同场景中的是不同的变形或者副本。例如,在本实施例中,源环境10中配置有主机HOST01、主机HOST02及主机HOST03,目标环境20中配置有主机HOST04及主机HOST05。主机HOST01配置有源端迁移代理11、主机HOST02配置有源端迁移代理12、主机HOST03配置有源端迁移代理13;主机HOST05配置有目标端迁移代理21、主机HOST05配置有目标端迁移代理22。主机HOST10运行于独立于源环境10与目标环境20的第三方平台40。主机HOST10被配置并运行迁移单元30。
图5示出了源环境10中的主机HOST01中的container1、column1迁移至目标环境20中的主机HOST04中,并形成container1’容器及column1’的实例,同时也示出了将了源环境10中的主机HOST02中的container3、column3迁移至目标环境20中的主机HOST04,并形成container3’容器及column3’的实例。同时,图5也示出了将源环境10中的主机HOST03中的与container3、column3迁移至目标环境20中的主机HOST05,并形成container5’容器及column5’的实例。
由于在源环境10中的主机中所运行的容器进行迁移操作前,需要先将要迁移的源环境10中待迁移的对象所依赖的主机和目标环境20中接收待迁移的对象所依赖的主机录入到迁移程序301中,以进行信息登记,从而明确哪个容器需要被迁移,以及迁移入目标环境20中的哪个主机中。因此,基于本实施例所揭示的方法,可对部署于源环境10中的不同的主机中所运行的对象(例如,容器)进行准切且任意的迁移操作。这也在一定程度上进一步提高了对对象在基于容器环境中进行迁移操作的准确性、灵活性及迁移操作的任意性。
实施例五:
请参6所示,其所揭示的一种基于容器环境中迁移对象的方法与上述任一种实施例相比,其主要区别在于,在本实施例中,还包括配置与迁移程序301关联的迁移客户端50的操作。该迁移客户端50嵌入运行于浏览器60中,同时,迁移单元30(在本实施例中用虚线框示出)。在本实施例中,迁移客户端50作为一个独立的执行机构,与迁移单元30相互分离并能够建立相互的通信关系,并向用户展示如图3所示的选择待迁移的对象的操作界面。
实施例六:
本实施例揭示了一种计算***,包括:
至少一个处理器;
存储装置,被配置为存储至少一个基于容器环境运行的对象,
当所述对象被处理器处理时,使得处理器执行上任意一个实施例所揭示的一种基于容器环境中迁移对象的方法。
具体的,该存储装置包括Ceph存储装置、Hadoop分布式文件***、SAN存储设备、NAS存储设备、RAID(磁盘阵列)、对象存储***(Object-Based Storage System)或者非易失性存储装置(Non-Volatile Memory)。
在本申请所提供的几个实施例中,应该理解到,所揭露的***,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
上文所列出的一系列的详细说明仅仅是针对本发明的可行性实施方式的具体说明,它们并非用以限制本发明的保护范围,凡未脱离本发明技艺精神所作的等效实施方式或变更均应包含在本发明的保护范围之内。
对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化囊括在本发明内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。
此外,应当理解,虽然本说明书按照实施方式加以描述,但并非每个实施方式仅包含一个独立的技术方案,说明书的这种叙述方式仅仅是为清楚起见,本领域技术人员应当将说明书作为一个整体,各实施例中的技术方案也可以经适当组合,形成本领域技术人员可以理解的其他实施方式。
Claims (13)
1.一种基于容器环境中迁移对象的方法,其特征在于,
所述对象在由迁移程序与迁移数据库所组成的迁移单元的控制下自源环境迁移至目标环境中,所述迁移程序根据迁移数据库预先存入的待迁移的对象的迁移路径记录,将待迁移的对象所形成的镜像文件及数据卷地址直接迁移至目标环境中。
2.根据权利要求1所述的方法,其特征在于,所述迁移单元在逻辑上运行于源环境、目标环境或者独立于源环境与目标环境的第三方平台,所述第三方平台与源环境及目标环境建立网络通信。
3.根据权利要求1所述的方法,其特征在于,所述源环境与目标环境被配置为物理服务器、由多个服务器组成的集群、虚拟服务器或者由多个虚拟服务器组成的集群。
4.根据权利要求1至3中任一项所述的方法,其特征在于,所述对象为容器、运行于容器中的虚拟机、镜像文件、程序、配置文件或者在线式应用。
5.根据权利要求4所述的方法,其特征在于,所述迁移程序运行于JAVA虚拟机、Framework虚拟机或者Android虚拟机中;其中,
所述迁移程序用于引导待迁移的对象根据迁移数据库中所保存的迁移数据从源环境迁移至目标环境中;
所述迁移数据库用于记录对象在源环境迁移至目标环境中所产生的迁移数据,所述迁移数据由主机信息表、容器表及迁移表组成。
6.根据权利要求5所述的方法,其特征在于,所述主机信息表由IP地址、用户名及密码共同构成;所述容器表由容器所在的主机、容器ID、容器名称或者本地数据卷地址中的一种或者几种共同构成;所述迁移表由迁移组、迁移记录或者迁移状态中的一种或者几种共同构成。
7.根据权利要求6所述的方法,其特征在于,包括以下步骤:
S1、将源环境中待迁移的对象所依赖的主机与目标环境中接收所述待迁移的对象所依赖的主机向迁移程序进行登记,并在源环境与目标环境中分别部署响应于迁移程序的源端迁移代理与目标端迁移代理;
S2、在源环境中创建待迁移的对象的镜像并压缩待迁移的对象的数据卷,并上传至目标环境的文件***中;
S3、当目标端迁移代理检测步骤S2执行完毕后向迁移程序报告;
S4、迁移程序向源端迁移代理发起同步源环境与目标环境中的数据卷的路径的操作,源端迁移代理同步调用数据镜像备份程序,比较待迁移的对象在源环境与目标环境所产生的数据大小及最近一次修改时间,并仅在数据大小不同或者最近一次修改时间不同时,由数据镜像备份程序对待迁移的对象在源环境与目标环境中的数据卷地址执行同步操作;
S5、更新迁移数据库中的迁移记录,并向迁移程序反馈待迁移的对象迁移成功的消息。
8.根据权利要求7所述的方法,其特征在于,所述步骤S2中,在源环境中通过容器命令创建待迁移的对象的镜像。
9.根据权利要求7所述的方法,其特征在于,所述步骤S5执行完毕之后,还包括:迁移程序将启用被迁移的对象在目标环境的启用请求发送至目标端迁移代理,通过容器命令在目标环境中创建所述被迁移的对象的镜像,并将所述被迁移的对象的镜像在源环境中的本地数据卷地址替换为目标环境中的本地数据卷地址。
10.根据权利要求1所述的方法,其特征在于,所述对象在迁移单元的控制下自源环境通过交换机迁移至目标环境中,所述第三方平台与所述交换机建立网络通信,所述迁移程序根据迁移数据库预先存入的待迁移的对象的迁移路径记录,将待迁移的对象所形成的镜像文件及数据卷地址直接迁移至目标环境中。
11.根据权利要求10所述的方法,其特征在于,还包括:配置与迁移程序关联的迁移客户端的操作,所述迁移客户端嵌入运行于浏览器中。
12.一种计算***,其特征在于,包括:
至少一个处理器;
存储装置,被配置为存储至少一个基于容器环境运行的对象,
当所述对象被处理器处理时,使得处理器执行如权利要求5至11中任一项权利要求所述的基于容器环境中迁移对象的方法。
13.根据权利要求12所述的计算***,其特征在于,所述存储装置包括Ceph存储装置、Hadoop分布式文件***、SAN存储设备、NAS存储设备、RAID、对象存储***或者非易失性存储装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811090582.1A CN109408115B (zh) | 2018-09-12 | 2018-09-12 | 一种基于容器环境中迁移对象的方法及计算*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811090582.1A CN109408115B (zh) | 2018-09-12 | 2018-09-12 | 一种基于容器环境中迁移对象的方法及计算*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109408115A true CN109408115A (zh) | 2019-03-01 |
CN109408115B CN109408115B (zh) | 2022-03-04 |
Family
ID=65465047
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811090582.1A Active CN109408115B (zh) | 2018-09-12 | 2018-09-12 | 一种基于容器环境中迁移对象的方法及计算*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109408115B (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110297674A (zh) * | 2019-06-28 | 2019-10-01 | 联想(北京)有限公司 | 一种信息处理方法及电子设备 |
CN110852449A (zh) * | 2019-11-25 | 2020-02-28 | 北京百度网讯科技有限公司 | 模型迁移方法和电子设备 |
CN111061432A (zh) * | 2019-12-06 | 2020-04-24 | 北京浪潮数据技术有限公司 | 一种业务迁移方法、装置、设备及可读存储介质 |
CN111240588A (zh) * | 2019-12-31 | 2020-06-05 | 清华大学 | 一种持久性内存对象存储*** |
CN111610976A (zh) * | 2020-04-08 | 2020-09-01 | 曙光信息产业(北京)有限公司 | 异构应用移植方法、装置和计算机设备 |
CN112328297A (zh) * | 2020-11-30 | 2021-02-05 | 北京技德***技术有限公司 | 一种在Linux上兼容运行的Android***的升级方法与装置 |
CN113391902A (zh) * | 2021-06-22 | 2021-09-14 | 未鲲(上海)科技服务有限公司 | 一种任务调度方法及设备、存储介质 |
CN113806009A (zh) * | 2021-08-05 | 2021-12-17 | 厦门市美亚柏科信息股份有限公司 | 一种Docker容器自动重建方法、终端设备及存储介质 |
US11853327B2 (en) | 2020-10-14 | 2023-12-26 | International Business Machines Corporation | Seamlessly containerizing a database |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105740052A (zh) * | 2016-01-28 | 2016-07-06 | 浪潮(北京)电子信息产业有限公司 | 非共享存储的虚拟机在线迁移的方法、装置及*** |
CN105897866A (zh) * | 2016-03-29 | 2016-08-24 | 新浪网技术(中国)有限公司 | 一种基于IaaS云平台的云主机迁移方法及装置 |
CN106469117A (zh) * | 2015-08-14 | 2017-03-01 | 中国电信股份有限公司 | 一种用于虚拟机存储迁移的存储资源管理方法及装置 |
CN107526626A (zh) * | 2017-08-24 | 2017-12-29 | 武汉大学 | 一种基于CRIU的Docker容器热迁移方法及*** |
-
2018
- 2018-09-12 CN CN201811090582.1A patent/CN109408115B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106469117A (zh) * | 2015-08-14 | 2017-03-01 | 中国电信股份有限公司 | 一种用于虚拟机存储迁移的存储资源管理方法及装置 |
CN105740052A (zh) * | 2016-01-28 | 2016-07-06 | 浪潮(北京)电子信息产业有限公司 | 非共享存储的虚拟机在线迁移的方法、装置及*** |
CN105897866A (zh) * | 2016-03-29 | 2016-08-24 | 新浪网技术(中国)有限公司 | 一种基于IaaS云平台的云主机迁移方法及装置 |
CN107526626A (zh) * | 2017-08-24 | 2017-12-29 | 武汉大学 | 一种基于CRIU的Docker容器热迁移方法及*** |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110297674B (zh) * | 2019-06-28 | 2021-01-15 | 联想(北京)有限公司 | 一种信息处理方法及电子设备 |
CN110297674A (zh) * | 2019-06-28 | 2019-10-01 | 联想(北京)有限公司 | 一种信息处理方法及电子设备 |
CN110852449A (zh) * | 2019-11-25 | 2020-02-28 | 北京百度网讯科技有限公司 | 模型迁移方法和电子设备 |
CN110852449B (zh) * | 2019-11-25 | 2023-11-14 | 北京百度网讯科技有限公司 | 模型迁移方法和电子设备 |
CN111061432B (zh) * | 2019-12-06 | 2022-03-22 | 北京浪潮数据技术有限公司 | 一种业务迁移方法、装置、设备及可读存储介质 |
CN111061432A (zh) * | 2019-12-06 | 2020-04-24 | 北京浪潮数据技术有限公司 | 一种业务迁移方法、装置、设备及可读存储介质 |
CN111240588A (zh) * | 2019-12-31 | 2020-06-05 | 清华大学 | 一种持久性内存对象存储*** |
CN111240588B (zh) * | 2019-12-31 | 2021-09-24 | 清华大学 | 一种持久性内存对象存储*** |
CN111610976A (zh) * | 2020-04-08 | 2020-09-01 | 曙光信息产业(北京)有限公司 | 异构应用移植方法、装置和计算机设备 |
US11853327B2 (en) | 2020-10-14 | 2023-12-26 | International Business Machines Corporation | Seamlessly containerizing a database |
CN112328297A (zh) * | 2020-11-30 | 2021-02-05 | 北京技德***技术有限公司 | 一种在Linux上兼容运行的Android***的升级方法与装置 |
CN113391902A (zh) * | 2021-06-22 | 2021-09-14 | 未鲲(上海)科技服务有限公司 | 一种任务调度方法及设备、存储介质 |
CN113806009A (zh) * | 2021-08-05 | 2021-12-17 | 厦门市美亚柏科信息股份有限公司 | 一种Docker容器自动重建方法、终端设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN109408115B (zh) | 2022-03-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109408115A (zh) | 一种基于容器环境中迁移对象的方法及计算*** | |
US11086723B2 (en) | Distributed streaming parallel database restores | |
US9727429B1 (en) | Method and system for immediate recovery of replicated virtual machines | |
CN110377395B (zh) | 一种Kubernetes集群中的Pod迁移方法 | |
US10185637B2 (en) | Preserving management services with distributed metadata through the disaster recovery life cycle | |
CN106528327B (zh) | 一种数据处理方法以及备份服务器 | |
EP2633400B1 (en) | Stateful applications operating in a stateless cloud computing environment | |
US11461122B2 (en) | Streaming database cloning using cluster live mounts | |
US10754741B1 (en) | Event-driven replication for migrating computing resources | |
US10997033B2 (en) | Distributed streaming database restores | |
CN107515776A (zh) | 业务不间断升级方法、待升级节点和可读存储介质 | |
CN110247984B (zh) | 业务处理方法、装置及存储介质 | |
US11748214B2 (en) | Remote snappable linking | |
CN107220100A (zh) | 一种开发运维方法、装置及云计算PaaS平台 | |
US20230095814A1 (en) | Server group fetch in database backup | |
US10404613B1 (en) | Placement of control and data plane resources | |
JP2010527056A (ja) | 仮想マシン移行 | |
CN112860479A (zh) | 存储数据的方法及云数据中心 | |
CN110888858B (zh) | 数据库的操作方法和装置、存储介质、电子装置 | |
CN110347483B (zh) | 物理机到虚拟机迁移方法、装置及存储介质 | |
US11182254B2 (en) | Streaming database backup using cluster live mounts | |
CN103077034B (zh) | 混合虚拟化平台java应用迁移方法与*** | |
CN112433812B (zh) | 一种虚拟机跨集群迁移方法、***、设备及计算机介质 | |
KR20230024416A (ko) | 클라우드 플랫폼 간 가상 머신 마이그레이션 방법, 장치, 저장 매체 및 전자 장치 | |
CN110134489A (zh) | 应用迁移方法及装置、***、存储介质、应用上云工具 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
CB02 | Change of applicant information |
Address after: Room 1601-035, 238 Jiangchang Third Road, Jing'an District, Shanghai 200040 Applicant after: Shanghai Huayun Mutual Data Technology Co., Ltd. Address before: Room 1601-035, 238 Jiangchang Third Road, Jing'an District, Shanghai 200040 Applicant before: Shanghai Digital Farming Intelligent Technology Co., Ltd. |
|
CB02 | Change of applicant information | ||
GR01 | Patent grant | ||
GR01 | Patent grant |