CN117082066A - 一种进程跨云迁移的方法、装置、设备以及可读存储介质 - Google Patents
一种进程跨云迁移的方法、装置、设备以及可读存储介质 Download PDFInfo
- Publication number
- CN117082066A CN117082066A CN202311091918.7A CN202311091918A CN117082066A CN 117082066 A CN117082066 A CN 117082066A CN 202311091918 A CN202311091918 A CN 202311091918A CN 117082066 A CN117082066 A CN 117082066A
- Authority
- CN
- China
- Prior art keywords
- cloud space
- redis
- container
- cloud
- information
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 1309
- 230000008569 process Effects 0.000 title claims abstract description 1161
- 238000013508 migration Methods 0.000 title claims abstract description 201
- 230000005012 migration Effects 0.000 title claims abstract description 201
- 238000011112 process operation Methods 0.000 claims description 99
- 238000013507 mapping Methods 0.000 claims description 29
- 230000015654 memory Effects 0.000 claims description 21
- 238000012545 processing Methods 0.000 claims description 16
- 238000004590 computer program Methods 0.000 claims description 10
- 238000007726 management method Methods 0.000 description 83
- 238000010586 diagram Methods 0.000 description 15
- 238000004891 communication Methods 0.000 description 10
- 230000006870 function Effects 0.000 description 9
- FFBHFFJDDLITSX-UHFFFAOYSA-N benzyl N-[2-hydroxy-4-(3-oxomorpholin-4-yl)phenyl]carbamate Chemical compound OC1=C(NC(=O)OCC2=CC=CC=C2)C=CC(=C1)N1CCOCC1=O FFBHFFJDDLITSX-UHFFFAOYSA-N 0.000 description 5
- 238000012360 testing method Methods 0.000 description 5
- 238000013475 authorization Methods 0.000 description 4
- 230000007704 transition Effects 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 3
- 230000003068 static effect Effects 0.000 description 2
- 238000013500 data storage Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Classifications
-
- 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/08—Configuration management of networks or network elements
- H04L41/0896—Bandwidth or capacity management, i.e. automatically increasing or decreasing capacities
- H04L41/0897—Bandwidth or capacity management, i.e. automatically increasing or decreasing capacities by horizontal or vertical scaling of resources, or by migrating entities, e.g. virtual resources or entities
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请提供了一种进程跨云迁移的方法、装置、设备以及可读存储介质,该方法包括:基于第一云空间中进程之间的TCP报文获取进程的拓扑信息,根据所述进程的拓扑信息,确定进程迁移的优先级顺序,根据所述优先级顺序,将所述第一云空间中的进程迁移到第二云空间。
Description
技术领域
本申请涉及进程云迁移的技术领域,尤其涉及一种进程跨云迁移的方法、相关装置、设备以及计算机可读存储介质。
背景技术
业界的金融服务一般底层依托部署在私有云环境,而私有云对应的物理机房环境是有使用期限的,一旦机房到期,则涉及整个私有云迁移的“大手术”,往往需要消耗大量的人效去支撑对应金融服务的迁移。因此,如何使得进程跨云迁移尽可能高自动化、平滑地完成,降低迁移人力开销是技术人员日益关注的问题。
发明内容
本申请实施例提供一种进程跨云迁移方法、装置、设备以及可读存储介质,该方法使得进程能够自动跨云迁移。
第一方面,本申请实施例提供一种进程跨云迁移的方法,包括:接收目标进程迁移指令,该目标进程迁移指令用于指示将目标进程由第一云空间迁移到第二云空间,目标进程的迁移指令包括目标进程的标识信息;在第二云空间中创建目标进程的第一容器Pod;根据目标进程的标识信息在服务管理***中获取目标进程的第一实例信息,该第一实例信息用于表征目标进程的关联进程对应的容器;在ACL管理平台中不存在第一容器与关联进程容器的ACL规则信息时,在ACL管理平台中写入第一容器与关联进程的容器的ACL规则信息;向目标进程操作模块发送第一迁移指令,第一迁移指令用于指示目标进程操作模块将目标进程由第一云空间迁移到第二云空间。
在上述实施例中,可以创建待迁移进程在第二云空间中的容器与其关联进程对应容器的ACL规则信息。这样,待迁移进程在第二云空间中的容器获得了ACL授权。当进程迁移到第二云空间后,就可以实现访问不同网络区域中与之有ACL规则信息的进程,从而保证在实现进程迁移过程中,访问功能的平滑过渡。此外,将进程迁移的ACL和服务管理***自动关联打通,确保迁移的进程不因为缺失ACL规则信息而出现服务拒绝。
结合第一方面,在一种可能实现的方式中,根据所述目标进程的标识信息在服务管理***中获取目标进程的第一实例信息之后,还包括:在服务管理模块中写入目标进程的第二实例信息,第二实例信息用于表征第一容器与所述关联进程的映射关系。
结合第一方面,在一种可能实现的方式中,目标进程为Redis集群中的进程,在第二云空间中创建目标进程的第一容器Pod,具体包括:在第二云空间中创建N个第一容器,N为Redis集群中进程的数量。
结合第一方面,在一种可能实现的方式中,目标进程为MySQL数据库中的代理进程和分布式存储***,在第二云空间中创建目标进程的第一容器Pod,具体包括:在第二云空间中创建代理进程的第一容器和分布式存储***的第一容器,代理进程和分布式存储***均属于MySQL数据库。
结合第一方面,在一种可能实现的方式中,目标进程为MPI进程中的子进程,在第二云空间中创建目标进程的第一容器Pod,具体包括:在第二云空间中创建K个第一容器,K为MPI进程中子进程的数量。
结合第一方面,在一种可能实现的方式中,若目标进程为Redis集群中的进程,目标进程操作模块为Redis进程操作模块;若目标进程为MySQL数据库中的代理进程或分布式存储***,目标进程操作模块为MySQL数据库操作模块;若目标进程为MPI进程中的子进程,目标进程操作模块为MPI进程操作模块。
第二方面,本申请实施例提供了一种进程跨云迁移的方法,包括:接收来自K8s_api服务模块发送的第一迁移指令,该第一迁移指令用于指示将目标进程由第一云空间迁移到第二云空间;基于第一迁移指令将目标进程由第一云空间迁移到第二云空间。
在上述实施例中,基于接收的第一迁移指令将目标进程从第一云空间迁移到第二云空间,针对不同的服务类型,在kubernetes(K8s***)基础之上定制化开发操作模块,用于部署各类不同类型的服务程序代码,从而确保整个迁移的平滑性、自动化、可回滚性。
结合第二方面,在一种可能实现的方式中,基于第一迁移指令将目标进程由第一云空间迁移到第二云空间之后,还包括:屏蔽服务管理***中目标进程的第一实例信息;屏蔽ACL管理平台中第二容器与目标进程的关联进程对应容器的ACL规则信息,第二容器为目标进程在第一云空间中对应的容器。这样,能够删除不必要的旧的信息,避免ACL管理平台以及服务管理***中存在大量无用信息从而占用存储资源。
结合第二方面,在一种可能实现的方式中,目标进程为Redis进程,基于第一迁移指令将目标进程由第一云空间迁移到第二云空间,具体包括:基于Redis进程的镜像信息在第二云空间创建的M个空容器中创建并启动M个Redis进程,M为第一云空间中主Redis进程的数量,M个Redis进程中的每个Redis进程用于与第一云空间中对应的主Redis进程进行数据同步;在检测到第二云空间中的Redis进程完成数据同步后,通过Sentinel进程将Redis进程切换为主Redis进程;基于Redis进程的镜像信息为第二云空间中的主Redis进程配置从Redis进程,第二云空间中主Redis进程的从Redis进程的数量与第一云空间中对应主Redis进程的从Redis进程的数量相同;基于Sentinel进程的镜像信息在第二云空间中创建的空容器创建并启动Sentinel进程;在创建的Sentinel进程中包括第二云空间中主Redis进程所在容器的IP地址以及第二云空间中从Redis进程所在容器的IP地址;基于Router服务进程的镜像信息在第二云空间中创建的空容器创建并启动Router服务进程,Router服务进程用于处理第二云空间中Redis集群的流量。
结合第二方面,在一种可能实现的方式中,目标进程为MySQL数据库中的代理进程和分布式存储***,基于第一迁移指令将目标进程由第一云空间迁移到第二云空间,具体包括:基于分布式存储***的镜像信息在第二云空间中创建的空容器中创建并启动分布式存储***,分布式存储***用于对第一云空间中MySQL数据库的数据进行数据同步;在检测到分布式存储***数据同步完成后,基于代理进程的镜像信息在第二云空间中创建的空容器中创建并启动代理进程;代理进程用于对第二云空间中MySQL数据库的数据进行管理;向代理进程发送第一指令,第一指令用于指示代理进程承接第一云空间中MySQL数据库的代理进程的容量。
结合第二方面,在一种可能实现的方式中,在检测到分布式存储***数据同步完成后,还包括:向第一云空间中MySQL数据库的代理进程发送SIGTERM信息,SIGTERM信息用于指示第一云空间中的代理进程在处理完当前用户请求后,不再接受新的请求以及连接建立。
结合第二方面,在一种可能实现的方式中,目标进程为MPI进程,MPI进程包括K个子进程,基于第一迁移指令将目标进程由第一云空间迁移到第二云空间,具体包括:向第一云空间中的第i个子进程发送第一写入指令,第一写入指令用于指示第i个子进程将工作数据写入checkpoint文件;将第i个子进程的checkpoint文件发送到第二云空间中创建的空容器中;通过MPI进程的进程管理器在checkpoint文件对应的容器中生成MPI进程的子进程;向MPI进程的子进程发送第一读取指令,第一读取指令用于指示MPI进程的子进程读取checkpoint文件。
第三方面,本申请实施例提供了一种进程跨云迁移装置,包括K8s_api服务模块,所述K8s_api服务模块包括:
第一接收单元,用于接收目标进程迁移指令;
容器创建单元,用于在第二云空间中创建所述目标进程的第一容器Pod;
关联进程获取单元,用于根据目标进程的标识信息在服务管理***中获取该目标进程的第一实例信息;
实例信息写入单元,用于在服务管理模块中写入目标进程的第二实例信息;
ACL规则信息写入单元,用于在ACL管理平台中写入第一容器与关联进程的容器的ACL规则信息;
第一发送单元,用于向目标进程操作模块发送第一迁移指令。
结合第三方面,在一种可能实现的方式中,目标进程为Redis集群中的进程,在第二云空间中创建目标进程的第一容器Pod,具体包括:在第二云空间中创建N个第一容器,N为Redis集群中进程的数量。
结合第三方面,在一种可能实现的方式中,目标进程为MySQL数据库中的代理进程和分布式存储***,在第二云空间中创建目标进程的第一容器Pod,具体包括:在第二云空间中创建代理进程的第一容器和分布式存储***的第一容器,代理进程和分布式存储***均属于MySQL数据库。
结合第三方面,在一种可能实现的方式中,目标进程为MPI进程中的子进程,在第二云空间中创建目标进程的第一容器Pod,具体包括:在第二云空间中创建K个第一容器,K为MPI进程中子进程的数量。
结合第三方面,在一种可能实现的方式中,若目标进程为Redis集群中的进程,目标进程操作模块为Redis进程操作模块;若目标进程为MySQL数据库中的代理进程或分布式存储***,目标进程操作模块为MySQL数据库操作模块;若目标进程为MPI进程中的子进程,目标进程操作模块为MPI进程操作模块。
第四方面,本申请实施例提供一种进程跨云迁移的装置,包括目标进程操作模块,所述目标进程操作模块包括:
第一接收单元,用于接收来自K8s_api服务模块发送的第一迁移指令;
进程迁移单元,用于基于所述第一迁移指令将目标进程由第一云空间迁移到第二云空间。
结合第四方面,在一种可能实现的方式中,基于第一迁移指令将目标进程由第一云空间迁移到第二云空间之后,还包括:屏蔽服务管理***中目标进程的第一实例信息;屏蔽ACL管理平台中第二容器与目标进程的关联进程对应容器的ACL规则信息,第二容器为目标进程在第一云空间中对应的容器。
结合第四方面,在一种可能实现的方式中,目标进程为Redis进程,基于第一迁移指令将目标进程由第一云空间迁移到第二云空间,具体包括:基于Redis进程的镜像信息在第二云空间创建的M个空容器中创建并启动M个Redis进程,M为第一云空间中主Redis进程的数量,M个Redis进程中的每个Redis进程用于与第一云空间中对应的主Redis进程进行数据同步;在检测到第二云空间中的Redis进程完成数据同步后,通过Sentinel进程将Redis进程切换为主Redis进程;基于Redis进程的镜像信息为第二云空间中的主Redis进程配置从Redis进程,第二云空间中主Redis进程的从Redis进程的数量与第一云空间中对应主Redis进程的从Redis进程的数量相同;基于Sentinel进程的镜像信息在第二云空间中创建的空容器创建并启动Sentinel进程;在创建的Sentinel进程中包括第二云空间中主Redis进程所在容器的IP地址以及第二云空间中从Redis进程所在容器的IP地址;基于Router服务进程的镜像信息在第二云空间中创建的空容器创建并启动Router服务进程,Router服务进程用于处理第二云空间中Redis集群的流量。
结合第四方面,在一种可能实现的方式中,目标进程为MySQL数据库中的代理进程和分布式存储***,基于第一迁移指令将目标进程由第一云空间迁移到第二云空间,具体包括:基于分布式存储***的镜像信息在第二云空间中创建的空容器中创建并启动分布式存储***,分布式存储***用于对第一云空间中MySQL数据库的数据进行数据同步;在检测到分布式存储***数据同步完成后,基于代理进程的镜像信息在第二云空间中创建的空容器中创建并启动代理进程;代理进程用于对第二云空间中MySQL数据库的数据进行管理;向代理进程发送第一指令,第一指令用于指示代理进程承接第一云空间中MySQL数据库的代理进程的容量。
结合第四方面,在一种可能实现的方式中,在检测到分布式存储***数据同步完成后,还包括:向第一云空间中MySQL数据库的代理进程发送SIGTERM信息,SIGTERM信息用于指示第一云空间中的代理进程在处理完当前用户请求后,不再接受新的请求以及连接建立。
结合第四方面,在一种可能实现的方式中,目标进程为MPI进程,MPI进程包括K个子进程,基于第一迁移指令将目标进程由第一云空间迁移到第二云空间,具体包括:向第一云空间中的第i个子进程发送第一写入指令,第一写入指令用于指示第i个子进程将工作数据写入checkpoint文件;将第i个子进程的checkpoint文件发送到第二云空间中创建的空容器中;通过MPI进程的进程管理器在checkpoint文件对应的容器中生成MPI进程的子进程;向MPI进程的子进程发送第一读取指令,第一读取指令用于指示MPI进程的子进程读取checkpoint文件。
第五方面,本申请实施例提供了一种进程跨云迁移设备,包括存储器、通信模块和处理器;
其中,所述存储器用于存储程序代码,所述处理器用于调用所述存储器存储的程序代码,执行上述第一方面及其各种可能实现的方式中进程跨云迁移的方法或执行上述第二方面及其各种可能实现的方式中进程跨云迁移的方法。
第六方面,本申请实施例提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,该计算机程序被处理器执行时,实现上述第一方面及其各种可能实现的方式中进程跨云迁移的方法或实现上述第二方面及其各种可能实现的方式中的进程跨云迁移的方法。
第七方面,本申请实施例提供了一种计算机程序,该计算机程序包括指令,当所述计算机程序被计算机执行时,使得进程跨云迁移设备可以执行上述第一方面及其各种可能实现的方式中进程跨云迁移所执行的流程、或进程跨云迁移可以执行上述第二方面及其各种可能实现的方式中进程跨云迁移所执行的流程。
附图说明
下面对本申请实施例用到的附图进行介绍。
图1是本申请实施例提供的一种进程跨云迁移架构图;
图2是本申请实施例提供的一种进程跨云迁移方法的流程图;
图3是本申请实施例提供的一种Redis集群跨云迁移的流程图;
图4A是本申请实施例提供的第一实例信息结构示例图;
图4B是本申请实施例提供的第二实例信息结构示例图;
图5是本申请实施例提供的一种跨云迁移MySQL数据库的流程图;
图6是本申请实施例提供的一种MPI跨云迁移的流程图;
图7是本申请实施例提供的一种进程跨云迁移装置的结构示意图;
图8是本申请实施例提供的另一种进程跨云迁移装置的结构示意图;
图9是本申请实施例提供的一种进程跨云迁移设备的结构示意图;
图10是本申请实施例提供的一种进程跨云迁移设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或者特性可以包含在本实施例申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是相同的实施例,也不是与其它实施例互斥的独立的或是备选的实施例。本领域技术人员可以显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请的说明书和权利要求书及所述附图中术语“第一”、“第二”、“第三”等是区别于不同的对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们的任何变形,意图在于覆盖不排他的包含。例如,包含了一系列步骤或单元,或者可选地,还包括没有列出的步骤或单元,或者可选地还包括这些过程、方法、产品或设备固有的其它步骤或单元。
附图中仅示出了与本申请相关的部分而非全部内容。在更加详细地讨论示例性实施例之前,应当提到的是,一些示例性实施例被描述成作为流程图描绘的处理或方法。虽然流程图将各项操作(或步骤)描述成顺序的处理,但是其中的许多操作可以并行地、并发地或者同时实施。此外,各项操作的顺序可以被重新安排。当其操作完成时所述处理可以被终止,但是还可以具有未包括在附图中的附加步骤。所述处理可以对应于方法、函数、规程、子例程、子程序等等。
在本说明书中使用的术语“部件”、“模块”、“***”、“单元”等用于表示计算机相关的实体、硬件、固件、硬件和软件的组合、软件或执行中的软件。例如,单元可以是但不限于在处理器上运行的进程、处理器、对象、可执行文件、执行线程、程序和/或分布在两个或多个计算机之间。此外,这些单元可从在上面存储有各种数据结构的各种计算机可读介质执行。单元可例如根据具有一个或多个数据分组(例如来自与本地***、分布式***和/或网络间的另一单元交互的第二单元数据。例如,通过信号与其它***交互的互联网)的信号通过本地和/或远程进程来通信。
下面,结合附图,对本申请实施例提供的一种进程跨云迁移方法的***架构图进行介绍。请参见图1,图1是本申请实施例提供的一种进程跨云迁移架构图。
在图1中包括云空间A和云空间B,云空间A为进程迁移的源端,云空间B为进程迁移的目的端。云服务迁移可以理解为将云空间A中的进程迁移到云空间B中。由图1可知,在云空间A中包括多个网络子网(图1中仅列举了4个服务子网),分别为外部区域(Outer)、内部区域(Inner)、测试环境(Test)以及离线区域(Offline)。
其中,Outer区域中的进程可以访问外网环境。例如,在外部区域中的负载均衡进程(Load Balance,LB)可以于外网环境的进程服务进行通信,可以根据外网环境进程的指令,与云空间A中对应的进程进行交互,从而实现外网进程与云空间A内的进程通信。
例如,当外网环境中的进程1要获取云空间A中Redis进程中的数据时,进程1可以向负载均衡进程发送数据请求指令,该数据请求指令用于请求获取Redis进程中的数据。负载均衡进程在接收到数据请求指令后,可以将该数据请求指令发送给Redis进程。Redis进程在接收到数据请求指令后将对应数据发送给负载均衡进程,再由负载均衡进程将该数据发送给进程1,从而实现进程1和云空间A中Redis进程的通信。
在内部区域中可以包括Redis进程、分布式存储***(Ceph)、数据处理进程(Compute_Server)以及关系型数据库管理***(MySQL)等进程。
在离线区域中,可以包括信息传递接口(MPI)、MapReduce以及计算引擎(Spark)等进程。在测试环境中包括测试进程1、测试进程2等进程。
对于同一云空间中相同子网的进程可以进行直接访问。例如,对于内部区域中Redis进程可以直接访问MySQL数据库。但是,对于不同子网之间的两个进程不能够直接访问,需要提前开启两个进程之间的访问控制列表(Access Control Lists,ACL)规则信息,如果两个进程之间没有ACL规则信息,则这两个进程不能访问。其中,ACL包括源进程所在容器Pod的IP地址和目的进程所在Pod的IP地址。
例如,在图1中,如果负载均衡进程要访问Redis进程,需要有负载均衡进程与Redis进程之间的ACL(在该ACL中的源IP地址为负载均衡进程所在容器Pod的IP地址,目的IP地址为Redis进程所在容器Pod的IP地址)规则信息。在负载均衡进程与Redis进程之间的节点在转发负载均衡进程发送给Redis进程的数据之前,转发节点会查询是否存在负载均衡进程所在容器与Redis进程所在容器之间的ACL规则信息。若没有,则该转发节点不会转发负载均衡进程发送给Redis进程的数据,从而使得负载均衡进程不能和Redis进程之间进行通信。
在本申请实施例中,云空间A中的进程迁移到云空间B主要是依靠K8s(Kubernetes)***来进行的。在对云空间A中的进程进行迁移之前,K8s***可以在云空间B中建立承载进程的容器Pod,每个Pod对应一个IP地址且每个Pod对应的IP地址都不同。然后,K8s***可以根据进程的优先级以及进程的类型采取决定迁移顺序和迁移策略。K8s***根据其确定的迁移策略和迁移顺序将云空间A中的进程针对性地迁移到云空间B中,从而实现对云空间内进程的迁移。
下面,结合附图,对本申请实施例提供的一种进程跨云迁移方法的流程进行介绍。请参见图2,图2是本申请实施例提供的一种进程跨云迁移方法的流程图,具体流程如下:
S201:基于第一云空间中进程之间的TCP报文获取进程的拓扑信息。
示例性的,第一云空间可以为上述图1中的云空间A,进程的拓扑信息用于表征整个云空间中进程所在节点的拓扑关系。拓扑信息中包括源节点的IP地址、目的节点的IP地址,以及从源节点到目的节点要经过的中间节点的IP地址。其中,进程部署在节点上。
具体的,可以通过进程之间的访问链路来获取云空间中进程的拓扑信息,即:基于源节点的进程向目的节点的进程(假设这两个进程之间有ACL规则信息)发送的TCP报文来获取拓扑信息。
当源节点所在进程向目的节点所在进程建立连接时,源节点中的进程会向目的节点中的进程发送TCP报文。在该TCP报文中包括源节点的IP地址和目的节点的IP地址。在发送TCP报文之前,源节点会在该TCP报文首部的拓展字段启动路由记录(Record Route)功能,即:将源节点的IP地址***TCP报文的首部。然后,将该TCP报文发送给下一条节点。
下一跳节点接收到TCP报文后,会解析该TCP报文的首部的扩展字段,并将该节点的IP地址注入到该条TCP报文的首部。然后,将TCP报文转发给该节点的下一跳节点,该节点的下一跳节点再重复此操作。以此类推,TCP报文每被转发给一个节点,该节点就会将其IP地址注入到该TCP报文的首部。当TCP报文发送到目的节点时,目的节点解析到TCP报文中目的节点的IP地址后,目的节点就会将该TCP报文中源节点的IP地址、首部扩展字段中各节点的IP地址以及目的节点的IP地址进行整合,从而得到源节点和目的节点之间这条TCP链路的信息(该链路信息中包括该条TCP链路中所有进程所在节点的IP地址),并将TCP链路信息存储数据库中。
这样,通过访问数据库就可以得到云空间中任意一条TCP链路信息,从而根据TCP链路信息获取每条TCP链路的进程及其进程所在节点的IP地址。在数据库中,每条TCP链路信息共同构成第一云空间中进程的拓扑信息。其中,数据库可以为mongoDB数据库。
在一些实施例中,可以在每个节点所在的网络设备上部署OVS(Openswitch),OVS用于对节点接收的TCP报文进行解析,并将该节点的IP地址写入TCP报文中的首部拓展字段。
在一些实施例中,可以给数据库中每条TCP链路信息设置生命周期,在到达TCP链路信息的生命周期后,没有相同的TCP链路信息写入数据库并更新该条TCP链路信息,该条TCP链路信息就可以自动删除。通过这种方式,在TCP链路发生变化的情况下,可以及时将新的TCP链路信息写入数据库,将旧的TCP链路信息删除,从而保证数据库中TCP链路信息的有效性。
示例性的,对于TCP链路信息1,假设其生命周期为72小时,在该链路信息1从写入开始进行计时,如果在72小时后没有相同的TCP链路信息1写入,那么将该条链路信息从数据库中删除。
S202:根据所述进程的拓扑信息,确定进程迁移的优先级顺序。
具体的,在获取到进程的拓扑信息后,确定各进程的优先级顺序,以便根据优先级顺序对进程进行迁移。其中,对于优先级高的进程相较于优先级低的进程要后迁移。确定进程优先级的顺序可以为:位于同一TCP链路上的进程,文件存储进程(例如,上述图1中的Ceph)、数据库(例如,上述图1中的MySQL)、缓存类进程(例如上述图1中的Redis进程)的优先级确定为第一优先级;位于同一TCP链路上的计算类进程(一些数据处理,或者进行数据包解析功能以及数据存储较少的进程,例如上述图1中的计算处理进程)的优先级确定为第二优先级。其中,第一优先级大于第二优先级。应当理解的是,上述优先级数量的划分本实施例仅是做举例说明,还可以根据情况进行细化。
例如,可以将优先级为第一优先级中的进程按照业务的重要程度再划分多个优先级,也可以将优先级为第二优先级中的进程按照业务的重要程度再划分多个优先级,本申请实施例对此不做限制。
这样,通过对进程进行优先级的划分,可以让一些涉及非核心业务的进程先进行迁移,在迁移过程中发现迁移的目的云空间有问题,可以及时调整云空间的网络结构或者更改其配置参数,对目的云空间不断进行优化。这样,在金融场景下可以保证那些涉及核心业务的进程(存储大量用户数据的进程,包括:存储进程、数据库、缓存类进程)在迁移过程中能够减小故障率。
在一种可能实现的方式中,对于同一条TCP链路上的进程且该条TCP链路上存在数据库、缓存类等进程,如果存在对耗时敏感的进程,可以将该耗时敏感的进程与数据库、缓存等进程一并同时迁移。这样,能够避免因为只迁移上层的计算进程,底层数据库等进程未迁移,造成用户在通过上层进程访问底层数据库时响应时间太长而影响用户体验。
S203:根据所述优先级顺序,将所述第一云空间中的进程迁移到第二云空间。
具体的,在确定进程迁移的优先级顺序后,可以根据该优先级顺序将第一云空间中的进程迁移到第二云空间中。
下面,将结合附图,对以下四类进程的跨云迁移流程进行说明。首先,对将Redis集群从第一云空间迁移到第二云空间的流程进行说明。请参见图3,图3是本申请实施例提供的一种Redis集群跨云迁移的流程图,具体流程如下:
S301:K8s_api服务模块接收Redis集群迁移指令,所述Redis集群迁移指令用于指示将Redis集群中的N个Redis进程由第一云空间迁移到第二云空间。
具体的,Redis集群迁移指令用于指示将Redis集群中的N个Redis进程和Router服务进程从第一云空间迁移到第二云空间。在Redis集群迁移指令中可以包括每个Redis进程的标识信息,Redis进程的标识信息用于表征Redis进程的身份,每个Redis进程的标识信息具有唯一性。
其中,在这N个Redis进程包括主Redis进程,还可以包括从Redis进程,还可以包括哨兵Sentinel进程,还可以包括Router服务进程(Redis_Server进程)。
S302:K8s_api服务模块在第二云空间中创建N个容器Pod,所述N为所述第一云空间中Redis集群中进程的数量。
具体的,K8s_api服务模块在接收到Redis集群迁移指令之后,可以在分布式键值对存储***(etcd)中获取第一云空间中Redis进程信息。Redis进程信息可以包括Redis进程的数量N、还可以包括第一云空间中Redis进程所在容器的IP地址、还可以包括从Redis进程对应的主Redis进程的IP地址。
在获取到Redis进程信息后,K8s_api服务模块基于Redis进程的数量N在第二云空间中创建N个容器,这N个容器用于承载N个Redis进程正常运行。
可选地,K8s_api服务模块可以将在第二云空间中创建的N个容器与第一云空间中运行的N个Redis进程进行一一对应。
S303:K8s_api服务模块根据Redis进程的标识信息在服务管理***中获取N个Redis进程的第一实例信息,并根据每个Redis进程的第一实例信息获取每个Redis进程的关联进程信息。
具体的,K8s_api服务模块在第二云空间为每个Redis进程创建容器之后,K8s_api服务模块可以根据每个Redis进程的标识信息访问服务管理***。
在服务管理***中存储有每个Redis进程的第一实例信息,第一实例信息用于表征每个Redis进程所在容器与其关联进程的映射关系。
其中,Redis进程的关联进程可以理解为与该Redis进程之间存在ACL规则信息的进程。在第一实例信息中可以包括Redis进程的标识信息,还可以包括关联进程的标识信息,还可以包括Redis进程在第一云空间中所在容器的IP地址,还可以包括Redis进程的关联进程所在容器的IP地址。
示例性的,Redis进程的第一实例信息的结构图可以如图4A所示。
S304:K8s_api服务模块根据所述N个Redis进程的第一实例信息在服务管理***中写入所述N个Redis进程的第二实例信息,每个Redis进程的第二实例信息用于表征每个Redis进程在第二云空间中对应容器与其关联进程的映射关系。
具体的,K8s_api服务模块在获取到Redis进程的第一实例信息后,可以在服务管理***中写入每个Redis进程的第二实例信息。每个Redis进程的第二实例信息用于表征该进程在第二云空间中对应容器与该进程的第一实例信息中关联进程的映射关系。
其中,在第二实例信息中可以包括Redis进程在第二云空间中对应容器的IP地址,还可以包括关联进程的IP地址,还可以包括该Redis进程的标识信息,还可以包括关联进程的IP地址,本申请实施例不做限制。
示例性的,第二实例信息的结构图可以如图4B所示。
S305:若存在Redis进程在第二云空间中对应容器与该Redis进程对应的容器不存在ACL规则信息,K8s_api服务模块在ACL管理平台中创建所述Redis进程的第一ACL规则信息,所述第一ACL规则信息为所述Redis进程在第二云空间中的对应容器与所述Redis进程的关联进程对应容器的ACL规则信息。
具体的,K8s_api服务模块在获取到Redis进程的关联进程后,可以通过访问ACL管理平台,查看在ACL管理平台中Redis进程在第二云空间中对应的容器与该Redis进程关联进程对应的容器是否存在ACL规则信息。若不存在,K8s_api服务模块在ACL管理平台中创建该Redis进程在第二云空间中对应容器与该Redis进程的关联进程对应容器的第一ACL规则信息。
其中,第一ACL规则信息可以包括该Redis进程在第二云空间对应容器的IP地址,以及该Redis进程关联进程对应容器的IP地址;关联进程对应容器可以为该关联进程在第一云空间中的容器,也可以为该关联进程在第二云空间中的容器。
通过上述方法,可以创建待迁移进程在第二云空间中的容器与其关联进程对应容器的ACL规则信息。这样,待迁移进程在第二云空间中的容器获得了ACL授权。当进程迁移到第二云空间后,就可以实现访问不同网络区域中与之有ACL规则信息的进程,从而保证在实现进程迁移过程中,访问功能的平滑过渡。
S306:K8s_api服务模块向Redis进程操作模块发送第一迁移指令,所述第一迁移指令用于指示所述Redis进程操作模块迁移Redis进程。
具体的,K8s_api服务模块在为每个Redis进程在第二云空间中创建对应的容器,并在服务管理***中写入进程在第二云空间中对应Pod与关联进程的实例信息,以及在ACL管理平台中写入进程在第二云空间中对应的容器与关联进程对应容器的ACL规则信息后,K8s_api服务模块可以向Redis进程操作模块发送第一迁移指令,第一迁移指令用于指示Redis进程操作模块将Redis进程从第一云空间迁移到第二云空间中。
S307:Redis进程操作模块在镜像数据库中下载M个Redis进程的镜像信息,并基于下载的镜像信息在第二云空间中创建的容器中创建并启动M个Redis进程,所述M为第一云空间中主Redis进程的数量。
具体的,Redis进程操作模块在接收到第一迁移指令后,可以在镜像数据库中下载M个Redis进程的镜像信息(该镜像信息为主Redis进程的镜像信息或从Redis进程的镜像信息),M为第一云空间中主Redis进程的数量。
然后,Redis进程操作模块在配置映射对象(Comfigmap)中配置这M个Redis进程的在第二云空间中的配置信息。Redis进程操作模块在第二云空间中根据下载的镜像信息在对应的容器中创建并启动Redis进程。
此外,Redis进程操作模块还可以向这M个Redis进程发送其对应的主Redis进程在第一云空间中所在容器的IP地址。
这样,这M个在第二云空间中的Redis进程可以基于其获取的主Redis进程的IP地址,在第一云空间中访问对应的主Redis进程,并对复制主Redis进程的数据从而进行数据同步。
可选地,Redis进程操作模块在镜像数据库中下载M个Redis进程的镜像信息之前,还可以验证这M个Redis进程在第二云空间中对应容器的ACL规则信息有效性,具体为:
Redis进程操作模块可以通过第二云空间中的目标容器向该目标容器关联进程的容器发送TCP ping指令,若接收到回复指令,则判断目标容器的ACL规则有效;否则,判断目标容器的ACL规则无效,进行报错。其中,目标容器为该M个Redis进程在第二云空间中对应容器中的任意一个容器。
S308:若检测到Redis进程数据同步完成,所述Redis进程操作模块向Sentinel进程发送第一切换信息,所述第一切换信息用于指示所述Sentinel模块将第二云空间中的所述Redis进程切换为主Redis进程。
具体的,Redis进程操作模块在启动第二云空间中的M个Redis进程后,可以实时监测这M个Redis进程的数据同步情况。在Redis进程操作模块监测到Redis进程数据同步完成后,Redis进程操作模块可以向Redis集群中的Sentinel进程发送第一切换信息,从而通过Sentinel进程将该Redis进程由从Redis进程切换为主Redis进程。这样,就可以实现将Redis集群中的主Redis进程从第一云空间迁移到第二云空间。
S309:Redis进程操作模块在第二云空间中创建的空容器中创建并启动所述M个Redis进程的从Redis进程。
具体的,Redis进程操作模块在通过Sentinel进程将第二云空间中的M个Redis进程由从Redis进程切换为主Redis进程之后,Redis进程操作模块可以根据第一云空间中每个主Redis进程对应从Redis进程的数量,在第二云空间中为每个主Redis进程创建对应数量的从Redis进程。其中,Redis进程操作模块可以通过K8s_api服务模块从etcd中获取第一云空间中每个主Redis进程对应的从Redis进程的数量。Redis进程操作模块在第二云空间中创建并启动M个主Redis进程对应的从Redis进程的方法可以为:
Redis进程操作模块中第一组件可以在K8s***中设置第二云空间中这M个主Redis进程中每个Redis进程的副本数值(Replicas)。每个主Redis进程的副本数值对应该主Redis进程的从Redis进程的数量。Redis进程操作模块中的第二组件在检测到第二云空间中每个主Redis进程的Replicas后,会在镜像数据库中下载对应数量的Redis进程镜像信息(可以理解为主Redis进程的镜像信息或从Redis进程的镜像信息)。第二组件可以在配置映射对象(Comfigmap)中配置所下载的镜像信息对应的Redis进程的在第二云空间中的配置信息。然后,根据下载的Redis进程镜像在先前创建的空容器中创建并启动Redis进程,这些Redis进程为从Redis进程。
此外,Redis进程操作模块可以向这些从Redis进程发送对应第二云空间中主Redis进程所在容器的IP地址。这样,这些容Redis进程在接收到主Redis进程所在容器的IP地址后,可以通过IP地址访问容器中对应的主Redis进程,并复制主Redis进程中的数据,从而实现主Redis进程的数据同步。这样,就完成了从Redis进程由第一云空间向第二云空间的迁移。
S310:Redis进程操作模块在镜像数据库中下载Sentinel进程的镜像信息,并基于下载的镜像信息在第二云空间中创建的空容器中创建启动Sentinel进程。
具体的,主Redis进程和从Redis进程从第一云空间迁移到第二云空间完成后,Redis进程操作模块可以在镜像数据库中下载Sentinel进程的镜像信息。然后,Redis进程操作模块在配置映射对象(Comfigmap)中配置Sentinel进程在第二云空间中的配置信息。Redis进程操作模块在第二云空间中根据下载的镜像信息在对应的容器中创建并启Sentinel进程。
此外,Redis进程操作模块可以向第二云空间中的Sentinel进程发送第二云空间中主Redis进程的IP地址以及主Redis进程对应从进程的IP地址,以便Sentinel进程可以在主Redis进程不能正常工作时,进行主、Redis进程的切换。这样,就可以实现Sentinel进程从第一云空间迁移到第二云空间。
可选地,Redis进程操作模块在镜像数据库中下载Sentinel进程的镜像信息之前,还可以验证Sentinel进程在第二云空间中对应容器的ACL规则有效性,具体为:Redis进程操作模块可以通过第二云空间中Sentinel进程的容器向该容器关联进程的容器发送TCPping指令,若接收到回复指令,则判断该容器的ACL规则有效;否则,判断该容器的ACL规则无效,进行报错。
S311:Redis进程操作模块在Redis进程中写入第一映射信息,所述第一映射信息用于表征每个第一云空间中Redis进程所在容器的IP地址与所述Redis进程迁移到第二云空间后所在容器的IP地址的对应关系。
具体的,Redis进程操作模块在将Redis集群中的主Redis进程和从Redis进程由第一云空间迁移到第二云空间后,可以在Router服务进程中写入第一映射信息。其中,第一映射信息用于表征每个第一云空间中Redis进程所在容器的IP地址与所述Redis进程迁移到第二云空间后所在容器的IP地址的对应关系。由于Router服务进程在Redis集群中其信息转发等中枢作用,当Redis集群外部进程想要访问Redis集群内部进程时,需要发送访问请求给Router服务进程,再由Router服务进程将访问请求转发给对应的Redis进程,从而实现Redis集群内Redis进程与外部进程的通信。
因此,通过在Router服务进程中写入第一映射信息,当存在外部进程想要访问Redis进程(例如,主Redis进程)时,Router服务进程可以通过第一映射信息,将访问请求发送给第二云空间中的对应Redis进程,而不再发送给第一云空间中的Redis进程。这样,可以实现进程之前的通信由第一云空间向第二云空间迁移。避免了诸如主Redis进程在迁移后,数据的读写依旧在先前的主Redis进程上进行,而不在迁移后的主Redis进程上执行的问题。
在一些实施例中,Redis进程操作模块可以在每迁移一个Redis进程(主Redis进程或从Redis进程或Sentinel进程)后,在Router服务进程中写入该Redis进程的第一映射信息,也可以在所有的Redis进程迁移完成后,在Router服务进程中写入所有Redis进程的第一映射信息。本申请实施例对Redis进程操作模块在Router服务进程中写入第一映射信息的方法和次序不做限制,S311中的次序也仅是做示例性地说明。
可选的,Redis进程操作模块在Router服务进程中写入第一映射信息后,可以删除或屏蔽Router服务进程中之前存储的第一云空间中各Redis进程的信息(例如,第一云空间中Redis进程所在容器的IP地址)
S312:Redis进程操作模块在镜像数据库中下载Router服务进程的镜像信息,并基于下载的镜像信息在第二云空间中创建的容器中创建启动Router服务进程。
具体的,Sentinel进程从第一云空间迁移到第二云空间完成后,Redis进程操作模块可以在镜像数据库中下载Router服务进程的镜像信息。然后,Redis进程操作模块在配置映射对象(Comfigmap)中配置Router服务进程在第二云空间中的配置信息。Redis进程操作模块在第二云空间中根据下载的镜像信息在对应的容器中创建并启Router服务进程。此外,Redis进程操作模块可以向第二云空间中的Router服务进程发送第二云空间中各Redis进程的IP地址,还可以发送第一映射信息,以便迁移后的Router服务进程可以将数据转发给对应的Redis进程。这样,就可以实现Router服务进程从第一云空间迁移到第二云空间。
可选地,Redis进程操作模块在镜像数据库中下载Router服务进程的镜像信息之前,还可以验证Router服务进程在第二云空间中对应容器的ACL规则有效性,具体为:Redis进程操作模块可以通过第二云空间中Router服务进程的容器向该容器关联进程的容器发送TCP ping指令,若接收到回复指令,则判断该容器的ACL规则有效;否则,判断该容器的ACL规则无效,进行报错。
S313:在将Redis进程由第一云空间迁移到第二云空间后,Redis进程操作模块屏蔽服务管理***中所述Redis进程在第一云空间中的实例信息。
具体地,Redis进程操作模块在将Redis进程或由第一云空间迁移到第二云空间之后,,Redis进程操作模块屏蔽或删除服务管理***中第一云空间中该进程的实例信息。其中,第一云空间中进程的实例信息包括第一云空间中Redis进程与其关联进程的实例信息。
S314:在将Redis进程第一云空间迁移到第二云空间后,Redis进程操作模块屏蔽第一云空间中所述Redis进程的ACL规则信息。
具体地,Redis进程操作模块在将Redis进程由第一云空间迁移到第二云空间之后,Redis进程操作模块屏蔽或删除ACL管理平台中第一云空间中进程的ACL规则信息。其中,第一云空间中进程的ACL规则信息包括第一云空间中Redis进程与其关联进程的ACL规则信息。
S315:在检测到所由Redis进程由第一云空间迁移到第二云空间后,Redis进程操作模块屏蔽第一云空间中所有Redis进程的容器。
应当理解的,S314、S315、S313的顺序本申请实施例仅作示例性地说明,对于S314、S315以及S313之间的执行顺序,本申请实施例不做限制。在S314、S315以及S313中,任意一项或多项可以作为可选项
上述S301~S315介绍了将Redis集群中的进程从第一云空间迁移到第二云空间的流程,首先是在第二云空间中创建多个于第一云空间中主Redis进程相同数量的Redis进程,这几个创建的Redis进程分别为第一云空间中主Redis进程的从Redis进程。让这几个从Redis进程与主Redis进程之间进行数据同步,在数据同步完成后,将这几个从Redis进程切换为主Redis进程,从而完成了Redis进程的迁移。在完成主Redis进程的迁移后,在第二云空间中创建每个主Redis进程的从Redis进程。其中,每个主Redis进程的从Redis进程的数量应与第一云空间中对应的主Redis进程的从Redis进程的数量保持一致。在创建好从Redis进程后,为从Redis进程分配对应的主Redis进程的IP地址。这样,从Redis进程可以根据主Redis进程的IP地址进行数据同步,从而完成从Redis进程由第一云空间向第二云空间的迁移。在对主Redis进程和从Redis迁移完成后,再在第二云空间中创建并启动Sentinel进程,并将第二云空间中主、从Redis进程的IP地址写入Sentinel进程中,以保证Sentinel进程具备切换主、从Redis进程的功能。然后,再在第二云空间中创建并启动Router服务进程,完成对Redis集群的迁移。
应当理解的是,上述S301-S315本申请实施例仅是作示例性地说明,S301-S315中的任意一项步骤可以删减和/或改变执行顺序从而得到不同的实施例,得到的实施例仍属于本申请的保护范围。
下面,对将MySQL数据库从第一云空间迁移到第二云空间的流程进行说明。请参见图5,图5是本申请实施例提供的一种跨云迁移MySQL数据库的流程图,具体流程如下:
S501:K8s_api服务模块接收MySQL迁移指令,所述MySQL迁移指令用于指示将MySQL数据库由第一云空间迁移到第二云空间。
具体的,MySQL迁移指令用于指示将MySQL从第一云空间迁移到第二云空间。在MySQL指令中可以包括MySQL数据库的代理进程(例如,dbproxy;下面的实施例中,将MySQL数据库的代理进程简称为代理进程)的标识信息以及MySQL数据库的分布式存储***(例如,GlusterFS;以下,简称分布式存储***)的标识信息。其中,代理进程的标识信息用于表征代理进程的身份,具备唯一性;分布式存储***的标识信息用于表征分布式存储***的身份,具有唯一性。
S502:K8s_api服务模块在第二云空间中为所述MySQL数据库中的代理进程和分布式存储***创建容器。
具体的,K8s_api服务模块在接收到MySQL数据库迁移指令之后,可以在第二云空间中为MySQL数据库中的代理进程和分布式存储***(例如,GlusterFS)创建容器。
S503:K8s_api服务模块根据代理进程的标识信息和分布式存储***的标识信息在服务管理***中获取代理进程的第一实例信息和分布式存储***的第一实例信息,并根据代理进程和分布式存储***的第一实例信息分别获取代理进程和分布式存储***的关联进程信息。
具体的,K8s_api服务模块在第二云空间为代理进程和分布式存储***分别创建容器之后,K8s_api服务模块可以根据代理进程和分布式存储***的标识信息访问服务管理***。
在服务管理***中存储有代理进程和分布式存储***的第一实例信息,代理进程的第一实例信息用于表征代理进程所在容器与其关联进程的映射关系,分布式存储***的第一实例信息用于表征分布式存储***所在容器与其关联进程的映射关系。
其中,代理进程的关联进程可以理解为与代理进程存在ACL规则信息的进程,分布式存储***的关联进程可以理解为与分布式存储***存在ACL规则信息的进程。代理进程的第一实例信息中可以包括代理进程的标识信息,还可以包括代理进程在第一云空间中所在容器的IP地址,还可以包括代理进程的关联进程的标识信息,还可以包括代理进程的关联进程所在容器的IP地址。
S504:K8s_api服务模块根据所述代理进程和分布式存储***的第一实例信息在服务管理***中写入所述代理进程和分布式存储***的第二实例信息,代理进程的第二实例信息用于表征代理进程在第二云空间中对应容器与其关联进程的映射关系,分布式存储***的第二实例信息用于表征分布式存储***在第二云空间中对应容器与其关联进程的映射关系。
具体的,K8s_api服务模块在获取到代理进程和分布式存储***的第一实例信息后,可以在服务管理***中写入代理进程和分布式存储的第二实例信息。代理进程的第二实例信息用于表征代理进程在第二云空间中对应容器与其关联进程的映射关系,分布式存储***的第二实例信息用于表征分布式存储***在第二云空间中对应容器与其关联进程的映射关系。
其中,代理进程的第二实例信息可以包括代理进程在第二云空间中对应容器的IP地址,还可以包括代理进程的标识信息,还可以包括代理进程的关联进程对应容器的IP地址,还可以包括代理进程的关联进程的标识信息。分布式存储***的第二实例信息可以包括分布式存储***在第二云空间中对应容器的IP地址,还可以包括分布式存储***的标识信息,还可以包括分布式存储***的关联进程对应容器的IP地址,还可以包括分布式存储***的关联进程的标识信息。
S505:若在ACL管理平台中代理进程在第二云空间中对应容器与其关联进程所在的容器不存在ACL规则信息和/或分布式存储***在第二云空间中对应容器与其关联进程所在的容器不存在ACL规则信息,K8s_api服务模块在ACL管理平台中创建代理进程在第二云空间中的容器与其关联进程所在容器的ACL规则信息和/或分布式存储***在第二云空间中的容器与其关联进程所在容器的ACL规则信息。
具体的,K8s_api服务模块在获取到代理进程和分布式存储***的关联进程后,可以通过访问ACL管理平台,查看在ACL管理平台中,代理进程在第二云空间中对应的容器与其关联进程对应的容器是否存在ACL规则信息、分布式存储***在第二云空间中对应的容器与其关联进程对应的容器是否存在ACL规则信息。若不存在代理进程的ACL规则信息,则在ACL管理平台中写入代理进程的ACL规则信息。其中,代理进程的ACL规则信息包括代理进程在第二云空间中对应空间的IP地址以及其关联进程对应容器的IP地址。若不存在分布式存储***的ACL规则信息,则在ACL管理平台中写入分布式存储***的ACL规则信息。其中,分布式存储***的ACL规则信息包括分布式存储***在第二云空间中对应空间的IP地址以及其关联进程对应容器的IP地址。
通过上述方法,可以创建待迁移进程在第二云空间中的容器与其关联进程对应容器的ACL规则信息。这样,待迁移进程在第二云空间中的容器获得了ACL授权。当进程迁移到第二云空间后,就可以实现访问不同网络区域中与之有ACL规则信息的进程,从而保证在实现进程迁移过程中,访问功能的平滑过渡。
S506:K8s_api服务模块向MySQL数据库操作模块发送第一迁移指令,所述第一迁移指令用于指示所述MySQL数据库操作模块迁移所述MySQL数据库。
具体的,K8s_api服务模块在为代理进程和分布式存储***在第二云空间中创建对应的容器,并在服务管理***中写入进程在第二云空间中对应容器与关联进程的实例信息,以及在ACL管理平台中写入进程在第二云空间中对应的容器与关联进程对应容器的ACL规则信息后,K8s_api服务模块可以向MySQL数据库操作模块发送第一迁移指令,第一迁移指令用于指示MySQL数据库操作模块将MySQL数据库从第一云空间迁移到第二云空间中。
S507:MySQL数据库操作模块在存储分布式存储***的镜像数据库中下载分布式存储***的镜像信息,并基于下载的镜像信息在第二云空间中创建的空容器中创建启动分布式存储***。
具体的,MySQL数据库操作模块在接收到第一迁移指令后,可以在存储分布式存储***的镜像数据库中下载分布式存储***的镜像信息。
MySQL数据库操作模块在第二云空间中根据下载的镜像信息在创建的空容器中创建并启动分布式存储***。此外,MySQL数据库操作模块会向第二云空间中的分布式存储***发送数据同步指令,数据同步指令用于指示分布式存储***同步第一云空间中MySQL数据库中的数据。
可选地,MySQL数据库操作模块在镜像数据库中下载分布式存储***的镜像信息之前,还可以验证分布式存储***在第二云空间中对应容器的ACL规则信息有效性,具体为:MySQL数据库操作模块可以通过第二云空间中的分布式存储***的容器向其任意一个关联进程的容器发送TCP ping指令,若接收到回复指令,则判断该分布式存储***的容器的ACL规则有效;否则,判断该分布式存储***的容器的ACL规则无效,并进行报错。
S508:若检测到分布式存储***完成数据同步,所述MySQL数据库操作模块在存储有代理进程的镜像数据库中下载代理进程的镜像信息,并基于下载的镜像信息在第二云空间中创建的空容器中创建启动代理进程。
具体的,MySQL数据库操作模块检测到分布式存储***完成数据同步后,可以在存储代理进程的镜像数据库中下载代理进程的镜像信息。
然后,MySQL数据库操作模块在第二云空间中根据下载的镜像信息在对应的空容器中创建并启动代理进程。此外,MySQL数据库操作模块会向第二云空间中的代理进程发送第一指令,第一指令用于指示第二云空间中的代理进程承接用户流量,即:将第一云空间中代理进程承接的用户流量转移到第二云空间中的代理进程上,对第二云空间中MySQL数据库的数据进行管理。这样,就实现了MySQL数据库从第一云空间到第二云空间的整体迁移。
可选地,MySQL数据库操作模块在镜像数据库中下载代理进程的镜像信息之前,还可以验证代理进程在第二云空间中对应容器的ACL规则信息有效性,具体为:MySQL数据库操作模块可以通过第二云空间中的代理进程的容器向其任意一个关联进程的容器发送TCPping指令,若接收到回复指令,则判断该代理进程的容器的ACL规则有效;否则,判断该代理进程的容器的ACL规则无效,并报错。
可选的,在MySQL数据库操作模块检测到分布式存储***完成数据同步后,可以给第一云空间中的代理进程发送SIGTERM信息,所述SIGTERM信息用于指示第一云空间中的代理进程在处理完当前用户请求后,不再接收新的请求以及连接建立。
S509:在检测到分布式存储***由第一云空间迁移到第二云空间后,MySQL数据库操作模块屏蔽服务管理***中第一云空间中分布式存储***的实例信息。
具体地,MySQL数据库操作模块检测到分布式存储***从第一云空间迁移到第二云空间后(可以理解为分布式存储***数据同步完成),MySQL数据库操作模块屏蔽或删除服务管理***中第一云空间中分布式存储***的实例信息。其中,第一云空间中分布式存储***的实例信息包括第一云空间中分布式存储***与其第一关联进程和第二关联进程的实例信息,第一关联进程为该分布式存储***在第一云空间中的关联进程,第二关联进程为该分布式存储***在第二云空间中的关联进程。
应当理解的是,S509可以在S507之后执行,本申请实施例对S509的执行顺序不做限制。
S510:在检测到代理进程由第一云空间迁移到第二云空间后,MySQL数据库操作模块屏蔽服务管理***中第一云空间中代理进程的实例信息。
具体地,MySQL数据库操作模块在检测到代理进程由第一云空间迁移到第二云空间之后,屏蔽或删除服务管理***中第一云空间中代理进程的实例信息。其中,第一云空间中代理进程的实例信息包括第一云空间中代理进程与其第一关联进程和第二关联进程的实例信息,第一关联进程为该代理进程在第一云空间中的关联进程,第二关联进程为该代理进程在第二云空间中的关联进程。
应当理解的是,S510可以在S508之后执行,本申请实施例对S510的执行顺序不做限制,对于S510和S509的执行顺序本申请实施例也不做限制。
S511:在检测到分布式存储***由第一云空间迁移到第二云空间后,MySQL数据库操作模块屏蔽ACL管理平台中第一云空间中分布式存储***的ACL规则信息。
具体地,MySQL数据库操作模块检测到分布式存储***的所有关联进程从第一云空间迁移到第二云空间之后,MySQL数据库操作模块可以屏蔽或删除ACL管理平台中第一云空间中分布式存储***的ACL规则信息。第一云空间中分布式存储***的ACL规则信息包括第一云空间中分布式存储***与其第一关联进程和第二关联进程的ACL规则信息,第一关联进程为该分布式存储***在第一云空间中的关联进程,第二关联进程为该分布式存储***在第二云空间中的关联进程。
S512:在检测到代理进程由第一云空间迁移到第二云空间后,MySQL数据库操作模块屏蔽ACL管理平台中第一云空间中代理进程的ACL规则信息。
具体地,MySQL数据库操作模块检测到代理进程从第一云空间迁移到第二云空间之后,MySQL数据库操作模块可以屏蔽或删除ACL管理平台中第一云空间中代理进程的ACL规则信息。第一云空间中代理进程的ACL规则信息包括第一云空间中分布式存储***与其第一关联进程和第二关联进程的ACL规则信息,第一关联进程为该代理进程在第一云空间中的关联进程,第二关联进程为该代理进程在第二云空间中的关联进程。
S513:在检测到分布式存储***由第一云空间迁移到第二云空间后,MySQL数据库操作模块屏蔽第一云空间中分布式存储***的容器。
S514:在检测到代理进程由第一云空间迁移到第二云空间后,MySQL数据库操作模块屏蔽第一云空间中代理进程的容器。
应当理解的是,上述S501-S514本申请实施例仅是作示例性地说明,S501-S514中的任意一项步骤可以删减和/或改变执行顺序从而得到不同的实施例,得到的实施例仍属于本申请的保护范围。
下面,对将信息传递接口(Message Passing Interface,MPI)进程从第一云空间迁移到第二云空间的流程进行说明。请参见图6,图6是本申请实施例提供的一种MPI跨云迁移的流程图,具体流程如下:
S601:K8s_api服务模块接收MPI迁移指令,所述MPI迁移指令用于指示将MPI进程由第一云空间迁移到第二云空间。
具体的,MPI迁移指令用于指示将MPI进程从第一云空间迁移到第二云空间。在MPI指令中可以包括MPI进程下K个子进程(假设,MPI进程的子进程的数量为K)的标识信息。其中,子进程的标识信息用于表征子进程的身份,具备唯一性。
S602:K8s_api服务模块在第二云空间中创建为MPI进程创建K个容器。
具体的,K8s_api服务模块在接收到MPI迁移指令之后,可以在第二云空间中为MPI进程创建K个容器。
S603:K8s_api服务模块根据每个子进程的标识信息在服务管理***中获取每个子进程的第一实例信息,并根据每个子进程的第一实例信息分别获取每个子进程的关联进程信息。
具体的,K8s_api服务模块在第二云空间为MPI进程下的每个子进程分别创建容器之后,K8s_api服务模块可以根据每个子进程的标识信息访问服务管理***。
在服务管理***中存储有每个子进程的第一实例信息,每个子进程的第一实例信息用于表征该子进程与其关联进程的映射关系。
其中,子进程的关联进程可以理解为与该子进程存在ACL规则信息的进程。子进程的第一实例信息中可以包括子进程的标识信息,还可以包括第一云空间中该子进程所在容器的IP地址,还可以包括该子进程的关联进程的标识信息,还可以包括该子进程的关联进程所在容器的IP地址。
S604:K8s_api服务模块根据所述子进程的第一实例信息在服务管理***中写入所述子进程的第二实例信息,子进程的第二实例信息用于表征子进程在第二云空间中对应容器与其关联进程的映射关系。
具体的,K8s_api服务模块在获取到子进程的第一实例信息后,可以在服务管理***中写入每个子进程的第二实例信息。子进程的第二实例信息用于表征子进程在第二云空间中对应容器与其关联进程的映射关系。
其中,子进程的第二实例信息可以包括子进程在第二云空间中对应容器的IP地址,还可以包括子进程的标识信息,还可以包括子进程的关联进程对应容器的IP地址,还可以包括子进程的关联进程的标识信息。
S605:若在ACL管理平台中不存在子进程在第二云空间中对应容器与其关联进程所在的容器的ACL规则信息,K8s_api服务模块在ACL管理平台中创建子进程在第二云空间中的容器与其关联进程所在容器的ACL规则信息。
具体的,K8s_api服务模块在获取到每个子进程的关联进程后,可以通过访问ACL管理平台,查看在ACL管理平台中,子进程在第二云空间中对应的容器与其关联进程对应的容器是否存在ACL规则信息。若不存在子进程的ACL规则信息,则在ACL管理平台中写入该子进程的ACL规则信息。其中,子进程的ACL规则信息包括子进程在第二云空间中对应空间的IP地址以及其关联进程对应容器的IP地址。
通过上述方法,可以创建待迁移进程在第二云空间中的容器与其关联进程对应容器的ACL规则信息。这样,待迁移进程在第二云空间中的容器获得了ACL授权。当进程迁移到第二云空间后,就可以实现访问不同网络区域中与之有ACL规则信息的进程,从而保证在实现进程迁移过程中,访问功能的平滑过渡。
S606:K8s_api服务模块向MPI进程操作模块发送第一迁移指令,所述第一迁移指令用于指示所述MPI进程操作模块迁移所述MPI进程。
具体的,K8s_api服务模块在为MPI进程下的子进程在第二云空间中创建对应的容器,并在服务管理***中写入进程在第二云空间中对应容器与关联进程的实例信息,以及在ACL管理平台中写入进程在第二云空间中对应的容器与关联进程对应容器的ACL规则信息后,K8s_api服务模块可以向MPI进程操作模块发送第三迁移指令,第三迁移指令用于指示MPI进程操作模块将MPI进程下的K个子进程从第一云空间迁移到第二云空间中。
S607:MPI进程操作模块将MPI进程从第一云空间迁移到第二云空间。
具体的,MPI进程操作模块在接收到第三迁移指令后,MPI进程操作模块会将MPI进程从第一云空间迁移到第二云空间,迁移的方法具体包括:
MPI进程操作模块可以向第一云空间中MPI的一个子进程所在的容器发送第一写入指令(例如,向该子进程发送SIGTERM)。在第一云空间中子进程的容器在接收到该第一写入指令后,会把本次工作数据进行checkpoint文件的写入,并将checkpoint文件保存到进程内存快照中。然后,MPI进程操作模块可以将checkpoint文件发送到第二云空间中创建的空容器中,通过MPI的hydra进程管理器,衍生一个新的MPI进程,并使得该新的MPI进程在该容器中读取checkpoint文件,进程内存快照恢复操作,从而将MPI进程下的子进程从第一云空间迁移到第二云空间。
同理,MPI进程下其它子进程的迁移也可以也采用相同的操作。当将MPI进程下的全部子进程迁移完毕后,就可以完成MPI进程的迁移。
S608:在检测到MPI进程由第一云空间迁移到第二云空间后,MPI进程操作模块屏蔽服务管理***中第一云空间中MPI进程中所有子进程的实例信息。
具体地,MPI进程操作模块在检测到MPI进程的所有子进程由第一云空间迁移到第二云空间之后,可以屏蔽或删除服务管理***中第一云空间中MIP进程中所有子进程的实例信息。其中,第一云空间中MPI进程的子进程的实例信息包括第一云空间中MPI进程的子进程与其第一关联进程和第二关联进程的实例信息,第一关联进程为MPI进程的子进程在第一云空间中的关联进程,第二关联进程为该代理进程在第二云空间中的关联进程。
S609:在检测到MPI进程由第一云空间迁移到第二云空间后,MPI进程操作模块屏蔽ACL管理平台中第一云空间中MPI进程中所有子进程的ACL规则信息。
具体地,MPI进程操作模块检测到MPI进程的子进程从第一云空间迁移到第二云空间之后,MPI进程操作模块可以屏蔽或删除ACL管理平台中第一云空间中MPI进程的子进程的ACL规则信息。第一云空间中MPI进程的子进程的ACL规则信息包括第一云空间中MPI进程子进程与其第一关联进程和第二关联进程的ACL规则信息,第一关联进程为该MPI进程的子进程在第一云空间中的关联进程,第二关联进程为该MPI进程的子进程在第二云空间中的关联进程。
S610:在检测到MPI进程由第一云空间迁移到第二云空间后,MPI进程操作模块屏蔽第一云空间中分布式存储***的容器。
S611:在检测到MPI进程的子进程由第一云空间迁移到第二云空间后,MPI进程操作模块屏蔽第一云空间中该子进程的容器。
应当理解的是,上述S601-S611本申请实施例仅是作示例性地说明,S601-S611中的任意一项步骤可以删减和/或改变执行顺序从而得到不同的实施例,得到的实施例仍属于本申请的保护范围。
对于将第一云空间内的其它进程(非Redis进程、非MPI进程、非MySQL数据库)迁移到第二云空间中的过程可以为:K8s_api服务模块接收进程的迁移指令后,会为该进程在第二云空间中创建对应的容器。在创建好该进程在第二云空间中对应的容器后,会根据迁移指令中该进程的标识信息在服务管理***中获取该进程的第一实例信息。其中,进程的第一实例信息包括用于表征该进程的关联进程,即:与该进程所在容器存在ACL规则信息的容器对应的进程。在第一实例信息中可以包括进程的标识信息,还可以包括进程的IP地址,还可以包括进程所在容器的IP地址,还可以包括关联进程所在容器的IP地址。K8s_api服务模块可以在服务管理***中写入该进程的第二实例信息(第二实例信息用于表征该进程在第二云空间对应容器的IP与关联进程所在容器的映射关系,第二实例信息可以包括该进程在第二云空间中对应容器的IP地址,还可以包括该进程的标识信息,还可以包括关联进程所在容器的IP地址,还可以包括关联进程的标识信息)。然后,K8s_api服务模块可以根据获取的第一实例信息访问ACL管理平台,查看ACL管理平台中是否存在该进程在第二云空间中对应的容器与该进程关联进程对应容器的ACL规则信息。若不存在,则在ACL管理平台中写入该进程在第二云空间中对应的容器与该进程的关联进程对应容器的ACL规则信息。在完成上述操作后,K8s_api服务模块可以向对应的进程操作模块发送进程迁移指令,对应的进程操作模块在接收到进程迁移指令后,可以获取该进程的镜像信息,并根据获取的镜像信息在第二云空间创建的空容器中创建并启动进程。在第二云空间中启动进程后,可以使得该进程与第一云空间中的原进程进行数据同步,从而完成进程的迁移。
上述详细阐述了本申请实施例的方法,下面介绍本申请实施例的相关装置、设备、计算机可读存储介质、计算机程序以及芯片***。
请参见图7,图7是本申请实施例提供的一种进程跨云迁移装置的结构示意图,所述进程跨云迁移装置70包括K8s_api服务模块,所述K8s_api服务模块可以包括第一接收单元701、容器创建单元702、关联进程获取单元703、实例信息写入单元704、ACL规则信息写入单元705以及第一发送单元706;其中,各个单元的详细描述如下:
第一接收单元701,用于接收目标进程迁移指令;
容器创建单元702,用于在第二云空间中创建所述目标进程的第一容器Pod;
关联进程获取单元703,用于根据目标进程的标识信息在服务管理***中获取该目标进程的第一实例信息;
实例信息写入单元704,用于在服务管理模块中写入目标进程的第二实例信息;
ACL规则信息写入单元705,用于在ACL管理平台中写入第一容器与关联进程的容器的ACL规则信息;
第一发送单元706,用于向目标进程操作模块发送第一迁移指令。
在一种可能实现的方式中,目标进程为Redis集群中的进程,在第二云空间中创建目标进程的第一容器Pod,具体包括:在第二云空间中创建N个第一容器,N为Redis集群中进程的数量。
在一种可能实现的方式中,目标进程为MySQL数据库中的代理进程和分布式存储***,在第二云空间中创建目标进程的第一容器Pod,具体包括:在第二云空间中创建代理进程的第一容器和分布式存储***的第一容器,代理进程和分布式存储***均属于MySQL数据库。
在一种可能实现的方式中,目标进程为MPI进程中的子进程,在第二云空间中创建目标进程的第一容器Pod,具体包括:在第二云空间中创建K个第一容器,K为MPI进程中子进程的数量。
在一种可能实现的方式中,若目标进程为Redis集群中的进程,目标进程操作模块为Redis进程操作模块;若目标进程为MySQL数据库中的代理进程或分布式存储***,目标进程操作模块为MySQL数据库操作模块;若目标进程为MPI进程中的子进程,目标进程操作模块为MPI进程操作模块。
请参见图8,图8是本申请实施例提供的一种进程跨云迁移装置的结构示意图,所述进程跨云迁移装置80包括目标进程操作模块,所述目标进程操作模块可以包括第一接收单元801、进程迁移单元802;其中,各个单元的详细描述如下:
第一接收单元801,用于接收来自K8s_api服务模块发送的第一迁移指令;
进程迁移单元802,用于基于所述第一迁移指令将目标进程由第一云空间迁移到第二云空间。
在一种可能实现的方式中,基于第一迁移指令将目标进程由第一云空间迁移到第二云空间之后,还包括:屏蔽服务管理***中目标进程的第一实例信息;屏蔽ACL管理平台中第二容器与目标进程的关联进程对应容器的ACL规则信息,第二容器为目标进程在第一云空间中对应的容器。
在一种可能实现的方式中,目标进程为Redis进程,基于第一迁移指令将目标进程由第一云空间迁移到第二云空间,具体包括:基于Redis进程的镜像信息在第二云空间创建的M个空容器中创建并启动M个Redis进程,M为第一云空间中主Redis进程的数量,M个Redis进程中的每个Redis进程用于与第一云空间中对应的主Redis进程进行数据同步;在检测到第二云空间中的Redis进程完成数据同步后,通过Sentinel进程将Redis进程切换为主Redis进程;基于Redis进程的镜像信息为第二云空间中的主Redis进程配置从Redis进程,第二云空间中主Redis进程的从Redis进程的数量与第一云空间中对应主Redis进程的从Redis进程的数量相同;基于Sentinel进程的镜像信息在第二云空间中创建的空容器创建并启动Sentinel进程;在创建的Sentinel进程中包括第二云空间中主Redis进程所在容器的IP地址以及第二云空间中从Redis进程所在容器的IP地址;基于Router服务进程的镜像信息在第二云空间中创建的空容器创建并启动Router服务进程,Router服务进程用于处理第二云空间中Redis集群的流量。
在一种可能实现的方式中,目标进程为MySQL数据库中的代理进程和分布式存储***,基于第一迁移指令将目标进程由第一云空间迁移到第二云空间,具体包括:基于分布式存储***的镜像信息在第二云空间中创建的空容器中创建并启动分布式存储***,分布式存储***用于对第一云空间中MySQL数据库的数据进行数据同步;在检测到分布式存储***数据同步完成后,基于代理进程的镜像信息在第二云空间中创建的空容器中创建并启动代理进程;代理进程用于对第二云空间中MySQL数据库的数据进行管理;向代理进程发送第一指令,第一指令用于指示代理进程承接第一云空间中MySQL数据库的代理进程的容量。
在一种可能实现的方式中,在检测到分布式存储***数据同步完成后,还包括:向第一云空间中MySQL数据库的代理进程发送SIGTERM信息,SIGTERM信息用于指示第一云空间中的代理进程在处理完当前用户请求后,不再接受新的请求以及连接建立。
在一种可能实现的方式中,目标进程为MPI进程,MPI进程包括K个子进程,基于第一迁移指令将目标进程由第一云空间迁移到第二云空间,具体包括:向第一云空间中的第i个子进程发送第一写入指令,第一写入指令用于指示第i个子进程将工作数据写入checkpoint文件;将第i个子进程的checkpoint文件发送到第二云空间中创建的空容器中;通过MPI进程的进程管理器在checkpoint文件对应的容器中生成MPI进程的子进程;向MPI进程的子进程发送第一读取指令,第一读取指令用于指示MPI进程的子进程读取checkpoint文件。
请参见图9,图9是本申请实施例提供的一种进程跨云迁移设备的结构示意图,所述进程跨云迁移设备90可以包括存储器901、通信模块902和处理器903;其中,各个单元的详细描述如下:
存储器901用于存储程序代码。
处理器903用于调用存储器存储的程序代码执行如下步骤:
通过通信模块902接收目标进程迁移指令,该目标进程迁移指令用于指示将目标进程由第一云空间迁移到第二云空间,目标进程的迁移指令包括目标进程的标识信息;在第二云空间中创建目标进程的第一容器Pod;根据目标进程的标识信息在服务管理***中获取目标进程的第一实例信息,该第一实例信息用于表征目标进程的关联进程对应的容器;在ACL管理平台中不存在第一容器与关联进程容器的ACL规则信息时,在ACL管理平台中写入第一容器与关联进程的容器的ACL规则信息;通过通信模块902向目标进程操作模块发送第一迁移指令,第一迁移指令用于指示目标进程操作模块将目标进程由第一云空间迁移到第二云空间。
在一种可能实现的方式中,根据目标进程的标识信息在服务管理***中获取目标进程的第一实例信息之后,还包括:在服务管理模块中写入目标进程的第二实例信息,第二实例信息用于表征第一容器与关联进程的映射关系。
在一种可能实现的方式中,目标进程为Redis集群中的进程,在第二云空间中创建目标进程的第一容器Pod,具体包括:在第二云空间中创建N个第一容器,N为Redis集群中进程的数量。
在一种可能实现的方式中,目标进程为MySQL数据库中的代理进程和分布式存储***,在第二云空间中创建目标进程的第一容器Pod,具体包括:在第二云空间中创建代理进程的第一容器和分布式存储***的第一容器,代理进程和分布式存储***均属于MySQL数据库。
在一种可能实现的方式中,目标进程为MPI进程中的子进程,在第二云空间中创建目标进程的第一容器Pod,具体包括:在第二云空间中创建K个第一容器,K为MPI进程中子进程的数量。
请参见图10,图10是本申请实施例提供的一种进程跨云迁移设备的结构示意图,所述进程跨云迁移设备10可以包括存储器1001、通信模块1002和处理器1003;其中,各个单元的详细描述如下:
存储器1001用于存储程序代码。
处理器1003用于调用存储器存储的程序代码执行如下步骤:
通过通信模块1002接收来自K8s_api服务模块发送的第一迁移指令,该第一迁移指令用于指示将目标进程由第一云空间迁移到第二云空间;
基于第一迁移指令将目标进程由第一云空间迁移到第二云空间。
在一种可能实现的方式中,基于第一迁移指令将目标进程由第一云空间迁移到第二云空间之后,还包括:屏蔽服务管理***中目标进程的第一实例信息;屏蔽ACL管理平台中第二容器与目标进程的关联进程对应容器的ACL规则信息,第二容器为目标进程在第一云空间中对应的容器。
在一种可能实现的方式中,目标进程为Redis进程,基于第一迁移指令将目标进程由第一云空间迁移到第二云空间,具体包括:基于Redis进程的镜像信息在第二云空间创建的M个空容器中创建并启动M个Redis进程,M为第一云空间中主Redis进程的数量,M个Redis进程中的每个Redis进程用于与第一云空间中对应的主Redis进程进行数据同步;在检测到第二云空间中的Redis进程完成数据同步后,通过Sentinel进程将Redis进程切换为主Redis进程;基于Redis进程的镜像信息为第二云空间中的主Redis进程配置从Redis进程,第二云空间中主Redis进程的从Redis进程的数量与第一云空间中对应主Redis进程的从Redis进程的数量相同;基于Sentinel进程的镜像信息在第二云空间中创建的空容器创建并启动Sentinel进程;在创建的Sentinel进程中包括第二云空间中主Redis进程所在容器的IP地址以及第二云空间中从Redis进程所在容器的IP地址;基于Router服务进程的镜像信息在第二云空间中创建的空容器创建并启动Router服务进程,Router服务进程用于处理第二云空间中Redis集群的流量。
在一种可能实现的方式中,目标进程为MySQL数据库中的代理进程和分布式存储***,基于第一迁移指令将目标进程由第一云空间迁移到第二云空间,具体包括:基于分布式存储***的镜像信息在第二云空间中创建的空容器中创建并启动分布式存储***,分布式存储***用于对第一云空间中MySQL数据库的数据进行数据同步;在检测到分布式存储***数据同步完成后,基于代理进程的镜像信息在第二云空间中创建的空容器中创建并启动代理进程;代理进程用于对第二云空间中MySQL数据库的数据进行管理;向代理进程发送第一指令,第一指令用于指示代理进程承接第一云空间中MySQL数据库的代理进程的容量。
在一种可能实现的方式中,在检测到分布式存储***数据同步完成后,还包括:向第一云空间中MySQL数据库的代理进程发送SIGTERM信息,SIGTERM信息用于指示第一云空间中的代理进程在处理完当前用户请求后,不再接受新的请求以及连接建立。
在一种可能实现的方式中,目标进程为MPI进程,MPI进程包括K个子进程,基于第一迁移指令将目标进程由第一云空间迁移到第二云空间,具体包括:向第一云空间中的第i个子进程发送第一写入指令,第一写入指令用于指示第i个子进程将工作数据写入checkpoint文件;将第i个子进程的checkpoint文件发送到第二云空间中创建的空容器中;通过MPI进程的进程管理器在checkpoint文件对应的容器中生成MPI进程的子进程;向MPI进程的子进程发送第一读取指令,第一读取指令用于指示MPI进程的子进程读取checkpoint文件。
本申请实施例提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,该计算机程序被处理器执行时,实现上述实施例及其各种可能的实现方式中的进程跨云迁移的方法。
需要说明的是,上述实施例中的存储器,可以是只读存储器(read-only memory,ROM)或可存储静态信息和指令的其它类型的静态存储设备,随机存储器(random accessmemory,RAM)或者可存储信息和指令的其它类型的动态存储设备,也可以是电可擦可编程只读存储器(Electrically Erasable Programmable Read-Only Memory,EEPROM)、只读光盘(Compact Disc Read-Only Memory,CD-ROM)或其它光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其它磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其它介质,但不限于于此。存储器可以是独立存在,通过总线于处理器相连接。存储器可以和处理器集成在一起。
上述实施例中的处理器,可以是通用中央处理器(CPU),微处理器,特定应用集成电路(application-specific integrated circuit,ASIC),或一个或多个用于控制以上方案程序执行的集成电路。
对于前述各方法实施例,为了简单描述,故将其都表达为一系列的动作组合,但是本领域的技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可能可以采用其它顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本申请所必须的。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置,可通过其它方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如上述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。
上述作为分离部件说明的单元可以是或者不是也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,既可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以是两个或两个以上单元集成在一个单元中。上述集成单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
上述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读存储介质中。基于这样理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以为个人计算机、服务器或者网络设备等,具体可以是计算机设备中的处理器)执行本申请各个实施例上述方法的全部或部分步骤。其中,前述的存储介质可包括:U盘、移动硬盘、磁碟、光盘、只读存储器(read-only memory,ROM)或者随机存取存储器(random access memory,RAM)等各种可以存储程序代码的介质。
以上所述,以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。
Claims (16)
1.一种进程跨云迁移的方法,其特征在于,包括:
接收目标进程迁移指令,所述目标进程迁移指令用于指示将所述目标进程由第一云空间迁移到第二云空间,所述目标进程的迁移指令包括所述目标进程的标识信息;
在所述第二云空间中创建所述目标进程的第一容器Pod;
根据所述目标进程的标识信息在服务管理***中获取所述目标进程的第一实例信息,所述第一实例信息用于表征所述目标进程的关联进程对应的容器;
在ACL管理平台中不存在所述第一容器与所述关联进程容器的ACL规则信息时,在所述ACL管理平台中写入所述第一容器与所述关联进程的容器的ACL规则信息;
向目标进程操作模块发送第一迁移指令,所述第一迁移指令用于指示所述目标进程操作模块将所述目标进程由第一云空间迁移到第二云空间。
2.如权利要求1所述的方法,其特征在于,所述根据所述目标进程的标识信息在服务管理***中获取所述目标进程的第一实例信息之后,还包括:
在所述服务管理模块中写入所述目标进程的第二实例信息,所述第二实例信息用于表征所述第一容器与所述关联进程的映射关系。
3.如权利要求1所述的方法,其特征在于,所述目标进程为Redis集群中的进程,所述在所述第二云空间中创建所述目标进程的第一容器Pod,具体包括:
在所述第二云空间中创建N个第一容器,所述N为所述Redis集群中进程的数量。
4.如权利要求1所述的方法,其特征在于,所述目标进程为MySQL数据库中的代理进程和分布式存储***,所述在所述第二云空间中创建所述目标进程的第一容器Pod,具体包括:
在所述第二云空间中创建所述代理进程的第一容器和所述分布式存储***的第一容器,所述代理进程和所述分布式存储***均属于所述MySQL数据库。
5.如权利要求1所述的方法,其特征在于,所述目标进程为MPI进程中的子进程,所述在所述第二云空间中创建所述目标进程的第一容器Pod,具体包括:
在所述第二云空间中创建K个第一容器,所述K为所述MPI进程中子进程的数量。
6.如权利要求1所述的方法,其特征在于,包括:
若所述目标进程为Redis集群中的进程,所述目标进程操作模块为Redis进程操作模块;
若所述目标进程为MySQL数据库中的代理进程或分布式存储***,所述目标进程操作模块为MySQL数据库操作模块;
若所述目标进程为MPI进程中的子进程,所述目标进程操作模块为MPI进程操作模块。
7.一种进程跨云迁移的方法,其特征在于,包括:
接收来自K8s_api服务模块发送的第一迁移指令,所述第一迁移指令用于指示将目标进程由第一云空间迁移到第二云空间;
基于所述第一迁移指令将所述目标进程由所述第一云空间迁移到所述第二云空间。
8.如权利要求7所述的方法,其特征在于,所述基于所述第一迁移指令将所述目标进程由所述第一云空间迁移到所述第二云空间之后,还包括:
屏蔽服务管理***中所述目标进程的第一实例信息;
屏蔽ACL管理平台中第二容器与所述目标进程的关联进程对应容器的ACL规则信息,所述第二容器为所述目标进程在所述第一云空间中对应的容器。
9.如权利要求7所述的方法,其特征在于,所述目标进程为Redis进程,所述基于所述第一迁移指令将所述目标进程由所述第一云空间迁移到所述第二云空间,具体包括:
基于Redis进程的镜像信息在所述第二云空间创建的M个空容器中创建并启动M个Redis进程,所述M为所述第一云空间中主Redis进程的数量,所述M个Redis进程中的每个Redis进程用于与所述第一云空间中对应的主Redis进程进行数据同步;
在检测到所述第二云空间中的Redis进程完成数据同步后,通过Sentinel进程将所述Redis进程切换为主Redis进程;
基于Redis进程的镜像信息为所述第二云空间中的主Redis进程配置从Redis进程,所述第二云空间中主Redis进程的从Redis进程的数量与所述第一云空间中对应主Redis进程的从Redis进程的数量相同;
基于Sentinel进程的镜像信息在所述第二云空间中创建的空容器创建并启动Sentinel进程;在创建的Sentinel进程中包括所述第二云空间中主Redis进程所在容器的IP地址以及所述第二云空间中从Redis进程所在容器的IP地址;
基于Router服务进程的镜像信息在所述第二云空间中创建的空容器创建并启动Router服务进程,所述Router服务进程用于处理所述第二云空间中Redis集群的流量。
10.如权利要求7所述的方法,其特征在于,所述目标进程为MySQL数据库中的代理进程和分布式存储***,所述基于所述第一迁移指令将所述目标进程由所述第一云空间迁移到所述第二云空间,具体包括:
基于所述分布式存储***的镜像信息在所述第二云空间中创建的空容器中创建并启动分布式存储***,所述分布式存储***用于对所述第一云空间中MySQL数据库的数据进行数据同步;
在检测到所述分布式存储***数据同步完成后,基于所述代理进程的镜像信息在所述第二云空间中创建的空容器中创建并启动代理进程;所述代理进程用于对所述第二云空间中MySQL数据库的数据进行管理;
向所述代理进程发送第一指令,所述第一指令用于指示所述代理进程承接所述第一云空间中MySQL数据库的代理进程的容量。
11.如权利要求10所述的方法,其特征在于,所述在检测到所述分布式存储***数据同步完成后,还包括:
向所述第一云空间中MySQL数据库的代理进程发送SIGTERM信息,所述SIGTERM信息用于指示第一云空间中的代理进程在处理完当前用户请求后,不再接受新的请求以及连接建立。
12.如权利要求7所述的方法,其特征在于,所述目标进程为MPI进程,所述MPI进程包括K个子进程,所述基于所述第一迁移指令将所述目标进程由所述第一云空间迁移到所述第二云空间,具体包括:
向所述第一云空间中的第i个子进程发送第一写入指令,所述第一写入指令用于指示所述第i个子进程将工作数据写入checkpoint文件;
将所述第i个子进程的checkpoint文件发送到所述第二云空间中创建的空容器中;
通过所述MPI进程的进程管理器在所述checkpoint文件对应的容器中生成MPI进程的子进程;
向所述MPI进程的子进程发送第一读取指令,所述第一读取指令用于指示所述MPI进程的子进程读取所述checkpoint文件。
13.一种进程跨云迁移的装置,其特征在于,包括K8s_api服务模块,所述K8s_api服务模块包括:
第一接收单元,用于接收目标进程迁移指令;
容器创建单元,用于在第二云空间中创建所述目标进程的第一容器Pod;
关联进程获取单元,用于根据目标进程的标识信息在服务管理***中获取该目标进程的第一实例信息;
实例信息写入单元,用于在服务管理模块中写入目标进程的第二实例信息;
ACL规则信息写入单元,用于在ACL管理平台中写入第一容器与关联进程的容器的ACL规则信息;
第一发送单元,用于向目标进程操作模块发送第一迁移指令。
14.一种进程跨云迁移的装置,其特征在于,包括目标进程操作模块,所述目标进程操作模块包括:
第一接收单元,用于接收来自K8s_api服务模块发送的第一迁移指令;
进程迁移单元,用于基于所述第一迁移指令将目标进程由第一云空间迁移到第二云空间。
15.一种进程跨云迁移的设备,其特征在于,包括:存储器和处理器,其中:
所述存储器,用于存储计算机程序,所述计算机程序包括程序指令;
所述处理器用于调用所述程序指令,使得所述设备执行如权利要求1-6或7-12任意一项所述的方法。
16.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,该计算机程序被处理器执行时,实现如权利要求1-6或7-12任意一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311091918.7A CN117082066A (zh) | 2023-08-28 | 2023-08-28 | 一种进程跨云迁移的方法、装置、设备以及可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311091918.7A CN117082066A (zh) | 2023-08-28 | 2023-08-28 | 一种进程跨云迁移的方法、装置、设备以及可读存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117082066A true CN117082066A (zh) | 2023-11-17 |
Family
ID=88715035
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311091918.7A Pending CN117082066A (zh) | 2023-08-28 | 2023-08-28 | 一种进程跨云迁移的方法、装置、设备以及可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117082066A (zh) |
-
2023
- 2023-08-28 CN CN202311091918.7A patent/CN117082066A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10715485B2 (en) | Managing dynamic IP address assignments | |
CN109005045B (zh) | 主备服务***及主节点故障恢复方法 | |
CN112087312A (zh) | 一种提供边缘服务的方法、装置和设备 | |
CN110474802B (zh) | 设备切换方法及装置、服务*** | |
US11368407B2 (en) | Failover management using availability groups | |
CN112035216B (zh) | 一种Kubernetes集群网络和OpenStack网络的打通方法 | |
US10673694B2 (en) | Private network mirroring | |
CN110855488B (zh) | 一种虚拟机接入方法及装置 | |
CN110730254A (zh) | 一种地址分配的方法、装置、中继设备及介质 | |
CN111259072A (zh) | 数据同步方法、装置、电子设备和计算机可读存储介质 | |
CN110932876B (zh) | 一种通信***、方法及装置 | |
JP2000207370A (ja) | 分散ファイル管理装置及び分散ファイル管理システム | |
CN111327668A (zh) | 网络管理方法、装置、设备和存储介质 | |
CN111147312B (zh) | 资源配置的管理方法及装置、资源配置缓存的管理方法及装置、配置管理*** | |
US11153173B1 (en) | Dynamically updating compute node location information in a distributed computing environment | |
CN113141400B (zh) | 一种网络服务的访问方法及装置 | |
CN112752352B (zh) | 一种中间会话管理功能i-smf确定方法和设备 | |
US11477174B2 (en) | Method for re-registering a smart electricity meter | |
CN112199176A (zh) | 一种业务处理方法、装置及相关设备 | |
US9967163B2 (en) | Message system for avoiding processing-performance decline | |
CN117082066A (zh) | 一种进程跨云迁移的方法、装置、设备以及可读存储介质 | |
CN114553771B (zh) | 用于虚拟路由器加载的方法及相关设备 | |
US8260311B2 (en) | Binding cache support in a load balanced sysplex | |
CN114911577A (zh) | 网络隔离规则的设置方法、装置、设备及存储介质 | |
CN113391759B (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 |