CN114090179A - 有状态服务的迁移方法、装置及服务器 - Google Patents

有状态服务的迁移方法、装置及服务器 Download PDF

Info

Publication number
CN114090179A
CN114090179A CN202111395207.XA CN202111395207A CN114090179A CN 114090179 A CN114090179 A CN 114090179A CN 202111395207 A CN202111395207 A CN 202111395207A CN 114090179 A CN114090179 A CN 114090179A
Authority
CN
China
Prior art keywords
cluster
storage volume
instance
migration
copy
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
Application number
CN202111395207.XA
Other languages
English (en)
Inventor
李�瑞
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Kingsoft Cloud Network Technology Co Ltd
Original Assignee
Beijing Kingsoft Cloud Network Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Kingsoft Cloud Network Technology Co Ltd filed Critical Beijing Kingsoft Cloud Network Technology Co Ltd
Priority to CN202111395207.XA priority Critical patent/CN114090179A/zh
Publication of CN114090179A publication Critical patent/CN114090179A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/4557Distribution of virtual machine instances; Migration and load balancing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45591Monitoring or debugging support

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明提供了一种有状态服务的迁移方法、装置及服务器,包括:从容器集群中确定待迁移集群和目的迁移集群;其中,待迁移集群中部署有存储子集群,存储子集群包括至少一个第一实例副本,所述待迁移集群为每个所述第一实例副本提供有状态服务;在目的迁移集群中创建与每个第一实例副本分别对应的第二实例副本;如果监听到目的迁移集群生成第二实例副本对应的存储卷声明,在第一实例副本对应的已有虚拟存储卷中确定与存储卷声明匹配的目标虚拟存储卷,以通过所述目的迁移集群根据所述目标虚拟存储卷为每个所述第二实例副本提供所述有状态服务。本发明无需人为干预即可完成有状态服务的迁移操作,而且可以有效提高迁移效率。

Description

有状态服务的迁移方法、装置及服务器
技术领域
本发明涉及互联网技术领域,尤其是涉及一种有状态服务的迁移方法、装置及服务器。
背景技术
容器集群管理技术指为容器化应用提供自动化部署、自动扩缩容、维护等功能,诸如Kubernetes集群管理平台。在集群资源紧张、集群升级改造、故障转移等场景下均会涉及到有状态服务的迁移操作。其中,迁移操作涉及对有状态服务存储在物理存储卷的数据进行迁移。目前,通用迁移方案大多依赖于有状态服务自身提供的备份和恢复机制来实现,然而再迁移操作过程中存在需要人工参与、操作时间过长等问题。
发明内容
有鉴于此,本发明的目的在于提供一种有状态服务的迁移方法、装置及服务器,无需人为干预即可完成有状态服务的迁移操作,而且可以有效提高迁移效率。
第一方面,本发明实施例提供了一种在一种实施方式中,有状态服务的迁移方法,所述方法应用于服务器,所述服务器与至少一个容器集群通信连接,包括:从所述容器集群中确定待迁移集群和目的迁移集群;其中,所述待迁移集群中部署有存储子集群,所述存储子集群包括至少一个第一实例副本,所述待迁移集群为每个所述第一实例副本提供有状态服务;在所述目的迁移集群中创建与每个所述第一实例副本分别对应的第二实例副本;如果监听到所述目的迁移集群生成所述第二实例副本对应的存储卷声明,在所述第一实例副本对应的已有虚拟存储卷中确定与所述存储卷声明匹配的目标虚拟存储卷,以通过所述目的迁移集群根据所述目标虚拟存储卷为每个所述第二实例副本提供所述有状态服务。
在一种实施方式中,所述服务器配置有主存储提供器,所述目的迁移集群配置有子存储提供器;所述如果监听到所述目的迁移集群生成所述第二实例副本对应的存储卷声明,在所述第一实例副本对应的已有虚拟存储卷中确定与所述存储卷声明匹配的目标虚拟存储卷的步骤,包括:通过所述主存储提供器接收所述子存储提供器发送的存储卷声明;基于所述存储卷声明的声明标识,在所述第一实例副本对应的已有虚拟存储卷中查找与所述存储卷声明匹配的目标虚拟存储卷;其中,所述目标虚拟存储卷包括存储实例和所述存储实例的访问路径。
在一种实施方式中,所述方法还包括:如果所述已有虚拟存储卷中不存在与所述存储卷声明匹配的目标虚拟存储卷,向文件存储系统发送存储卷创建请求,以使所述文件存储系统创建与所述存储卷声明匹配的目标虚拟存储卷。
在一种实施方式中,在所述第一实例副本对应的已有虚拟存储卷中确定与所述存储卷声明匹配的目标虚拟存储卷的步骤之后,所述方法还包括:建立所述目标虚拟存储卷和所述存储卷声明之间的绑定关系;基于所述目标虚拟存储卷和所述绑定关系,确定所述第二实例副本对应的存储资源。
在一种实施方式中,所述从所述容器集群中确定待迁移集群和目的迁移集群的步骤,包括:从所述容器集群中确定待迁移集群,并在除所述待迁移集群之外的容器集群中随机确定目的迁移集群。
在一种实施方式中,所述在所述目的迁移集群中创建与每个所述第一实例副本分别对应的第二实例副本的步骤,包括:基于所述第一实例副本的实例类型,在所述目的迁移集群中创建与每个所述第一实例副本分别对应的第二实例副本。
在一种实施方式中,所述方法还包括:删除所述待迁移集群中部署的所述存储子集群的所述第一实例副本。
第二方面,本发明实施例还提供一种有状态服务的迁移装置,所述装置应用于服务器,所述服务器与至少一个容器集群通信连接,包括:集群确定模块,用于从所述容器集群中确定待迁移集群和目的迁移集群;其中,所述待迁移集群中部署有存储子集群,所述存储子集群包括至少一个第一实例副本,所述待迁移集群为每个所述第一实例副本提供有状态服务;副本创建模块,用于在所述目的迁移集群中创建与每个所述第一实例副本分别对应的第二实例副本;迁移模块,用于如果监听到所述目的迁移集群生成所述第二实例副本对应的存储卷声明,在所述第一实例副本对应的已有虚拟存储卷中确定与所述存储卷声明匹配的目标虚拟存储卷,以通过所述目的迁移集群根据所述目标虚拟存储卷为每个所述第二实例副本提供所述有状态服务。
第三方面,本发明实施例还提供一种服务器,包括处理器和存储器,所述存储器存储有能够被所述处理器执行的计算机可执行指令,所述处理器执行所述计算机可执行指令以实现第一方面提供的任一项所述的方法。
第四方面,本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令在被处理器调用和执行时,计算机可执行指令促使处理器实现第一方面提供的任一项所述的方法。
本发明实施例提供的一种有状态服务的迁移方法、装置及服务器,首先从容器集群中确定待迁移集群和目的迁移集群,待迁移集群中部署有存储子集群,存储子集群包括至少一个第一实例副本,待迁移集群为每个第一实例副本提供有状态服务,然后在目的迁移集群中创建与每个第一实例副本分别对应的第二实例副本,如果监听到目的迁移集群生成第二实例副本对应的存储卷声明,则在第一实例副本对应的已有虚拟存储卷中确定与存储卷声明匹配的目标虚拟存储卷,从而通过所述目的迁移集群根据所述目标虚拟存储卷为每个所述第二实例副本提供所述有状态服务。上述方法中在目的迁移集群中穿件与存储子实例所包含的每个第一实例副本分别对应的第二实例副本,并在监听到目的迁移集群生成与第二实例副本对应的存储卷声明时,在已有虚拟存储卷实例中确定与该存储卷声明匹配的目标虚拟存储卷,即可使目的迁移集群在此基础上为第二实例副本提供有状态服务,实现有状态服务的跨集群迁移,相较于现有技术中采用物理存储的方式,本发明实施例中实例副本对应的存储卷均为虚拟存储卷,在有状态迁移过程中无需依赖自身备份、恢复机制,通过使有状态服务前移前后存储子集群使用相同的虚拟存储卷,可以在无人为干预的情况下完成有状态服务的跨集群迁移操作,而且可以有效提高迁移效率。
本发明的其他特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。
为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种有状态服务的迁移的流程示意图;
图2为本发明实施例提供的一种容器集群架构示意图;
图3为本发明实施例提供的一种StorageClass与Provisioner的协作流程图;
图4为本发明实施例提供的另一种有状态服务的迁移的流程示意图;
图5为本发明实施例提供的一种有状态服务的迁移装置的结构示意图;
图6为本发明实施例提供的一种服务器的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合实施例对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
目前,通用迁移方案大多依赖于有状态服务自身提供的备份和恢复功能来实现,诸如MySQL的mysqldump(逻辑备份工具)和source(数据库导入)命令,然而备份、恢复机制功能人工参与,导致有状态服务迁移操作时间过长,进而致使容器集群停机时间过长,此外,在实际应用中存在部分服务无法支持备份、恢复功能,也即通用迁移方案无法较好地适用部分有状态服务迁移的场景。基于此,本发明实施提供了一种有状态服务的迁移方法、装置及服务器,无需人为干预即可完成有状态服务的跨集群迁移操作,而且可以有效提高迁移效率。
为便于对本实施例进行理解,首先对本发明实施例所公开的一种有状态服务的迁移方法进行详细介绍,该方法应用于服务器,服务器与至少一个容器集群通信连接,参见图1所示的一种有状态服务的迁移的流程示意图,该方法主要包括以下步骤S102至步骤S106:
步骤S102,从容器集群中确定待迁移集群和目的迁移集群。其中,有状态服务泛指每个实例需要独立持久化存储的集群服务,容器集群可以包括Kubernetes(简称,k8s)集群,待迁移集群可以理解为需要进行有状态迁移的容器集群,目的迁移集群可以理解为用于备份上述待迁移集群的容器集群。上述待迁移集群中部署有存储子集群,存储子集群可包括Redis Sentinel(哨兵)集群、Redis Cluster(主从)集群、MySQL(关系型数据库管理系统)集群、ES(ELasticSearch)集群中的一种或多种,在实际应用中,在K8s集群中可通过StatefulSet部署所需的存储子集群。另外,上述存储子集群包括至少一个第一实例(Pod)副本,待迁移集群为每个第一实例副本提供有状态服务,以k8s集群内部署有MySQL子集群为例,MySQL子集群内部署有3个第一实例副本,包括:Amysql-0 Pod、Amysql-1Pod和Amysql-2 Pod。
在一种实施方式中,上述待迁移集群可以为集群资源紧张的容器集群,或需要进行改造升级的容器集群,或出现故障的容器集群,具体可基于实际需求选择待迁移集群,然后通过随机或人为指定等方式从其余容器集群中确定目的迁移集群。
步骤S104,在目的迁移集群中创建与每个第一实例副本分别对应的第二实例副本。其中,第二实例副本的实例类型与第一实例副本的副本类型相同,例如,第一实例副本为MySQL类型,则需要在目的迁移集群中创建MySQL类型的第二实例副本。在一种实施方式中,可以通过调用目的迁移集群中的相关接口实现第二实例副本的创建。
步骤S106,如果监听到目的迁移集群生成第二实例副本对应的存储卷声明,在第一实例副本对应的已有虚拟存储卷中确定与存储卷声明匹配的目标虚拟存储卷,以通过目的迁移集群根据目标虚拟存储卷为每个第二实例副本提供有状态服务。其中,存储卷声明(PVC,Persistent Volume Claim)用于描述第二实例副本所需的虚拟存储卷的相关信息,虚拟存储卷(PV,Persistent Volume)包括存储实例和存储实例的访问路径,存储实例可以为Fs(file system,文件系统)实例,已有虚拟存储卷(简称,已有PV)即为有状态迁移前第一Pod副本挂载的存储卷,目标虚拟存储卷(简称,目标PV)即为有状态迁移后第二Pod副本挂载的存储卷,可见有状态迁移前后Pod副本挂载的存储卷相同,因此可以实现跨容器集群迁移。在一种实施方式中,当在目的迁移集群中创建第二实例副本时会生成相应的PVC,目的迁移集群内配置的子存储提供器(Provisioner)会将该PVC转发至服务器配置的主存储提供器(Global Provisioner),Global Provisioner将会在已有PV中查找与PVC匹配的目标PV。
在一种实施方式中,可以将目标虚拟存储卷将存储卷声明进行绑定,相当于将目标虚拟存储卷内的存储资源确定为第二副本实例对应的存储资源,通过确定每个第二实例副本对应的存储资源,即可实现通过目的迁移集群为每个第二实例副本提供有状态服务。
本发明实施例提供的上述有状态服务的迁移方法,在目的迁移集群中穿件与存储子实例所包含的每个第一实例副本分别对应的第二实例副本,并在监听到目的迁移集群生成与第二实例副本对应的存储卷声明时,通过在已有虚拟存储卷实例中确定与该存储卷声明匹配的目标虚拟存储卷,将存储子集群从待迁移集群迁移至目的迁移集群,相较于现有技术中采用物理存储的方式,本发明实施例中实例副本对应的存储卷均为虚拟存储卷,在有状态迁移过程中无需依赖自身备份、恢复机制,通过使有状态服务前移前后存储子集群使用相同的虚拟存储卷,可以在无人为干预的情况下完成有状态服务的跨集群迁移操作,而且可以有效提高迁移效率。
为便于对前述实施例进行理解,本发明实施例提供了如图2所示的一种容器集群架构示意图,包括待迁移集群A和目的迁移集群B,待迁移集群A和目的迁移集群B内部署有相同名称的StorageClass(存储类),同时还部署有该StorageClass对应的Provisioner,服务器端部署有Global Provisioner,Provisioner只是提供代理服务,用于将自身所在容器集群内生成的PVC转发至Global Provisioner,Global Provisioner用于提供分配存储卷的逻辑。
请继续参见图2,假设待迁移集群A内部署的存储子集群为MySQL子集群,且该MySQL子集群包括三个第一实例副本:Amysql-0 Pod、Amysql-1Pod和Amysql-2 Pod,则在目的迁移集群B中也将生成相应的第二实例副本Bmysql-0 Pod、Bmysql-1 Pod和Bmysql-2Pod。另外,通过IaaS(Infrastructure as a Service,即基础设施即服务)平台为每个实例副本提供虚拟存储卷,以及通过Global Provisioner确定每个副本实例对应的虚拟存储卷,例如,Amysql-0 Pod和Bmysql-0 Pod均与存储实例FS-1内的“/data-mysql-0”绑定,从而实现有状态服务迁移前后实例副本挂载相同的虚拟存储卷。
在前述图2的基础上,本发明实施例分别提供了前述步骤S102至步骤S108的实施方式:
对于前述步骤S102,在从容器集群中确定待迁移集群和目的迁移集群时,可以从容器集群中确定待迁移集群,并在除待迁移集群之外的容器集群中随机确定目的迁移集群。以故障转移场景为例,可以将出现故障的容器集群确定为待迁移集群,然后在其余容器集群中随机选择一可用的容器集群作为目的迁移集群。在实际应用中,还可以采用其他方式确定目的迁移集群,诸如按照容器集群名称、容器集群优先级、容器集群的资源紧张程度等,具体可基于实际情况进行设置,本发明实施例对此不进行限定。
对于前述步骤S104,在创建与每个第一实例副本分别对应的第二实例副本时,可以基于第一实例副本的实例类型,在目的迁移集群中创建与每个第一实例副本分别对应的第二实例副本。考虑到本发明实施例的目的是将存储子集群从待迁移集群迁移至目的迁移集群,因此需要保证目的迁移集群内该存储子集群的实例副本的数量与类型均保持不变。
在实际应用中,k8s动态卷供应是指按需为Pod副本动态创建存储卷并挂载,通过StorageClass和相应的Provisioner提供k8s动态卷供应。为便于理解,本发明实施例提供了如图3一种StorageClass与Provisioner的协作流程图,包括如下步骤1至步骤6:
步骤1,如果k8s集群内未部署Provisioner,则管理员部署目的迁移集群对应的Provisioner。
步骤2,管理员创建一个或多个StorageClass并将其设置为默认值。
步骤3,用户创建PVC并引用其中一个StorageClass。
步骤4,k8s集群查找StorageClass和该StorageClass对应的Provisioner,并利用Provisioner根据PVC的访问路径、存储大小和StorageClass中参数确定新的PV。
步骤5,Provisioner提供实际存储,将PV绑定到PVC。
步骤6,用户创建Pod副本并引用PVC。
相关技术提出,VolumeClaimTemplates会为StatefulSet的每个Pod生成一个PVC,该PVC由storageClassName指定的Provisioner来动态分配PV。在本发明实施例中,当用户创建一个PVC并指定由某个StorageClass处理时,Provisioner则会监听到该PVC,将该PVC转发到服务器端的Global Provisioner,由Global Provisioner为该PVC分配PV,从而基于Global Provisioner实现有状态服务的跨集群迁移。
在一种可选的实施方式中,当确定将待迁移集群内的存储子集群迁移至目的迁移集群后,可以删除待迁移集群中部署的存储子集群的第一实例副本。具体的,可以调用k8s相关接口回收待迁移集群内的第一实例副本。
对于前述步骤S106,在确定与存储卷声明匹配的目标虚拟存储卷时,可以参见如下步骤a至步骤c:
步骤a,通过主存储提供器接收子存储提供器发送的存储卷声明。在一种实施方式中,当目的迁移集群内生成第二实例副本对应的PVC后,目的迁移集群的Provisioner将该PVC发送至Global Provisioner。
步骤b,基于存储卷声明的声明标识,在第一实例副本对应的已有虚拟存储卷中确定与存储卷声明匹配的目标虚拟存储卷。其中,声明标识可以包括PVC的Namespace和name。在一种实施方式中,待迁移集群中每个第一实例副本对应的PVC均绑定有已有PV,因此可以查找出Namespace和name均相同的PVC绑定的已有PV,便将该已有PV作为目标PV。
步骤c,如果已有虚拟存储卷中不存在与存储卷声明匹配的目标虚拟存储卷,向文件存储系统发送存储卷创建请求,以使文件存储系统创建与存储卷声明匹配的目标虚拟存储卷。考虑到已有虚拟存储卷所绑定的PVC中可能不存在与PVC匹配的目标虚拟存储卷,可以请求IaaS平台提供文件存储功能,从而创建所需的目标虚拟存储卷(FS实例和访问路径),确定该目标虚拟存储卷与上述PVC之间的绑定关系,从而根据FS实例和访问路径创建PV资源(也即,存储资源)。本发明实施例依赖的文件存储可以是任意IaaS平台提供的相应功能。通过IaaS平台提供的文件存储和动态卷供应机制,为多集群分配相同存储,从而实现有状态服务的跨集群迁移。
为便于对上述步骤S106进行理解,本发明实施例还提供了另一种有状态服务的迁移方法,参见图4所示的另一种有状态服务的迁移方法的流程示意图,该方法主要包括以下步骤S402至步骤S410:
步骤S402,Global Provisioner监听到PVC。
步骤S404,根据PVC的Namespace和name从数据库中查询是否已有匹配的FS实例和访问路径。如果是,执行步骤S408;如果否,执行步骤S406。其中,该数据库用于存储第一实例副本对应的PVC和PV的映射关系。
步骤S406,请求IaaS平台创建FS实例和访问路径。
步骤S408,保存PVC、FS实例和访问路径之间的映射关系到数据库。
步骤S410,根据FS实例和访问路径确定PV资源和PVC资源。
在确定与存储卷声明匹配的目标虚拟存储卷之后,还可以建立目标虚拟存储卷和存储卷声明之间的绑定关系,并基于目标虚拟存储卷和绑定关系,确定第二实例副本对应的存储资源,通过确定每个第二实例副本对应的存储资源,即可实现利用目的迁移集群为第二实例副本提供有状态服务。在实际应用中,通过绑定目标虚拟存储卷和存储卷声明,可以将第二实例副本挂载与第一实例副本相同的虚拟存储卷,由于目标虚拟存储卷定义了存储实例和访问路径,存储实例内存储有存储资源,因此相当于将有状态服务从待迁移集群整体迁移至目的迁移集群。
为便于对前述实施例进行理解,本发明实施例提供了一种有状态服务的迁移方法的应用示例,假设当需要迁移有状态服务时,MySQL子集群从待迁移集群A迁移到目的迁移集群B。具体的,(1)回收待迁移集群A内MySQL子集群的第一实例副本;(2)在目的迁移集群B开通MySQL子集群,并创建相同数量、相同类型的第二实例副本;(3)目的迁移集群B在创建Bmysql-0 Pod时同时生成PVC,目的迁移集群B的Provisioner监听到PVC后,将PVC发送到Global Provisioner,Global Provisioner发现相同Namespace和name的PVC已有对应的FS实例和访问路径,则直接使用该信息生成PV资源;(4)依次类推,MySQL子集群的每个实例副本都会找到其在待迁移集群A对应的FS实例和路径,从而完成有状态服务的跨集群迁移。
综上所述,本发明实施例提供的有状态服务的迁移方法,再有状态服务迁移过程中不再需要对服务进行备份、恢复,只需要回收一个集群(诸如,上述待迁移集群)内的服务,然后在另一个集群(诸如,上述目的迁移集群)相同命名空间下开通相同的服务即可。本发明实施例基于k8s集群的动态卷供应机制和IaaS平台的文件存储系统,增加一定逻辑,使得StatefulSet跨集群迁移后,对应的Pod副本所挂载的虚拟存储卷依旧使用与之前相同的存储(包括存储实例和访问路径),不需要额外的干预措施,类似于原地重启功能,控制待迁移集群关机并控制目的迁移集群开机,即可完成跨集群迁移。
对于前述实施例提供的上述有状态服务的迁移方法,本发明实施例提供了一种有状态服务的迁移装置,该装置应用于服务器,服务器与至少一个容器集群通信连接,参见图5所示的一种有状态服务的迁移装置的结构示意图,该装置主要包括以下部分:
集群确定模块502,用于从容器集群中确定待迁移集群和目的迁移集群;其中,待迁移集群中部署有存储子集群,存储子集群包括至少一个第一实例副本;
副本创建模块504,用于在目的迁移集群中创建与每个第一实例副本分别对应的第二实例副本;
迁移模块506,用于如果监听到目的迁移集群生成第二实例副本对应的存储卷声明,在第一实例副本对应的已有虚拟存储卷中确定与存储卷声明匹配的目标虚拟存储卷,以通过所述目的迁移集群根据所述目标虚拟存储卷为每个所述第二实例副本提供所述有状态服务。
本发明实施例提供的上述有状态服务的迁移装置,在目的迁移集群中穿件与存储子实例所包含的每个第一实例副本分别对应的第二实例副本,并在监听到目的迁移集群生成与第二实例副本对应的存储卷声明时,通过在已有虚拟存储卷实例中查找与该存储卷声明匹配的目标虚拟存储卷,将存储子集群从待迁移集群迁移至目的迁移集群,相较于现有技术中采用物理存储的方式,本发明实施例中实例副本对应的存储卷均为虚拟存储卷,在有状态迁移过程中无需依赖自身备份、恢复机制,通过使有状态服务前移前后存储子集群使用相同的虚拟存储卷,可以在无人为干预的情况下完成有状态服务的跨集群迁移操作,而且可以有效提高迁移效率。
在一种实施方式中,服务器配置有主存储提供器,目的迁移集群配置有子存储提供器;迁移模块506还用于:通过主存储提供器接收子存储提供器发送的存储卷声明;基于存储卷声明的声明标识,在第一实例副本对应的已有虚拟存储卷中查找与存储卷声明匹配的目标虚拟存储卷;其中,目标虚拟存储卷包括存储实例和存储实例的访问路径。
在一种实施方式中,迁移模块506还用于:如果已有虚拟存储卷中不存在与存储卷声明匹配的目标虚拟存储卷,向文件存储系统发送存储卷创建请求,以使文件存储系统创建与存储卷声明匹配的目标虚拟存储卷。
在一种实施方式中,迁移模块506还用于:建立目标虚拟存储卷和存储卷声明之间的绑定关系;基于目标虚拟存储卷和绑定关系,确定第二实例副本对应的存储资源。
在一种实施方式中,集群确定模块502还用于:从容器集群中确定待迁移集群,并在除待迁移集群之外的容器集群中随机确定目的迁移集群。
在一种实施方式中,副本创建模块504还用于:基于第一实例副本的实例类型,在目的迁移集群中创建与每个第一实例副本分别对应的第二实例副本。
在一种实施方式中,上述装置还包括删除模块,用于:删除待迁移集群中部署的存储子集群的第一实例副本。
本发明实施例所提供的装置,其实现原理及产生的技术效果和前述方法实施例相同,为简要描述,装置实施例部分未提及之处,可参考前述方法实施例中相应内容。
本发明实施例提供了一种服务器,具体的,该服务器包括处理器和存储器;存储器上存储有计算机程序,计算机程序在被所述处理器运行时执行如上所述实施方式的任一项所述的方法。
图6为本发明实施例提供的一种服务器的结构示意图,该服务器100包括:处理器60,存储器61,总线62和通信接口63,所述处理器60、通信接口63和存储器61通过总线62连接;处理器60用于执行存储器61中存储的可执行模块,例如计算机程序。
其中,存储器61可能包含高速随机存取存储器(RAM,Random Access Memory),也可能还包括非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。通过至少一个通信接口63(可以是有线或者无线)实现该系统网元与至少一个其他网元之间的通信连接,可以使用互联网,广域网,本地网,城域网等。
总线62可以是ISA总线、PCI总线或EISA总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图6中仅用一个双向箭头表示,但并不表示仅有一根总线或一种类型的总线。
其中,存储器61用于存储程序,所述处理器60在接收到执行指令后,执行所述程序,前述本发明实施例任一实施例揭示的流过程定义的装置所执行的方法可以应用于处理器60中,或者由处理器60实现。
处理器60可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器60中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器60可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(Digital SignalProcessing,简称DSP)、专用集成电路(Application Specific Integrated Circuit,简称ASIC)、现成可编程门阵列(Field-Programmable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本发明实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器61,处理器60读取存储器61中的信息,结合其硬件完成上述方法的步骤。
本发明实施例所提供的可读存储介质的计算机程序产品,包括存储了程序代码的计算机可读存储介质,所述程序代码包括的指令可用于执行前面方法实施例中所述的方法,具体实现可参见前述方法实施例,在此不再赘述。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上所述实施例,仅为本发明的具体实施方式,用以说明本发明的技术方案,而非对其限制,本发明的保护范围并不局限于此,尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。

Claims (10)

1.一种有状态服务的迁移方法,其特征在于,所述方法应用于服务器,所述服务器与至少一个容器集群通信连接,包括:
从所述容器集群中确定待迁移集群和目的迁移集群;其中,所述待迁移集群中部署有存储子集群,所述存储子集群包括至少一个第一实例副本,所述待迁移集群为每个所述第一实例副本提供有状态服务;
在所述目的迁移集群中创建与每个所述第一实例副本分别对应的第二实例副本;
如果监听到所述目的迁移集群生成所述第二实例副本对应的存储卷声明,在所述第一实例副本对应的已有虚拟存储卷中确定与所述存储卷声明匹配的目标虚拟存储卷,以通过所述目的迁移集群根据所述目标虚拟存储卷为每个所述第二实例副本提供所述有状态服务。
2.根据权利要求1所述的方法,其特征在于,所述服务器配置有主存储提供器,所述目的迁移集群配置有子存储提供器;
所述如果监听到所述目的迁移集群生成所述第二实例副本对应的存储卷声明,在所述第一实例副本对应的已有虚拟存储卷中确定与所述存储卷声明匹配的目标虚拟存储卷的步骤,包括:
通过所述主存储提供器接收所述子存储提供器发送的存储卷声明;
基于所述存储卷声明的声明标识,在所述第一实例副本对应的已有虚拟存储卷中查找与所述存储卷声明匹配的目标虚拟存储卷;其中,所述目标虚拟存储卷包括存储实例和所述存储实例的访问路径。
3.根据权利要求2所述的方法,其特征在于,所述方法还包括:
如果所述已有虚拟存储卷中不存在与所述存储卷声明匹配的目标虚拟存储卷,向文件存储系统发送存储卷创建请求,以使所述文件存储系统创建与所述存储卷声明匹配的目标虚拟存储卷。
4.根据权利要求1所述的方法,其特征在于,在所述第一实例副本对应的已有虚拟存储卷中确定与所述存储卷声明匹配的目标虚拟存储卷的步骤之后,所述方法还包括:
建立所述目标虚拟存储卷和所述存储卷声明之间的绑定关系;
基于所述目标虚拟存储卷和所述绑定关系,确定所述第二实例副本对应的存储资源。
5.根据权利要求1所述的方法,其特征在于,所述从所述容器集群中确定待迁移集群和目的迁移集群的步骤,包括:
从所述容器集群中确定待迁移集群,并在除所述待迁移集群之外的容器集群中随机确定目的迁移集群。
6.根据权利要求1所述的方法,其特征在于,所述在所述目的迁移集群中创建与每个所述第一实例副本分别对应的第二实例副本的步骤,包括:
基于所述第一实例副本的实例类型,在所述目的迁移集群中创建与每个所述第一实例副本分别对应的第二实例副本。
7.根据权利要求1所述的方法,其特征在于,所述方法还包括:
删除所述待迁移集群中部署的所述存储子集群的所述第一实例副本。
8.一种有状态服务的迁移装置,其特征在于,所述装置应用于服务器,所述服务器与至少一个容器集群通信连接,包括:
集群确定模块,用于从所述容器集群中确定待迁移集群和目的迁移集群;其中,所述待迁移集群中部署有存储子集群,所述存储子集群包括至少一个第一实例副本,所述待迁移集群为每个所述第一实例副本提供有状态服务;
副本创建模块,用于在所述目的迁移集群中创建与每个所述第一实例副本分别对应的第二实例副本;
迁移模块,用于如果监听到所述目的迁移集群生成所述第二实例副本对应的存储卷声明,在所述第一实例副本对应的已有虚拟存储卷中确定与所述存储卷声明匹配的目标虚拟存储卷,以通过所述目的迁移集群根据所述目标虚拟存储卷为每个所述第二实例副本提供所述有状态服务。
9.一种服务器,其特征在于,包括处理器和存储器,所述存储器存储有能够被所述处理器执行的计算机可执行指令,所述处理器执行所述计算机可执行指令以实现权利要求1至7任一项所述的方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令在被处理器调用和执行时,计算机可执行指令促使处理器实现权利要求1至7任一项所述的方法。
CN202111395207.XA 2021-11-23 2021-11-23 有状态服务的迁移方法、装置及服务器 Pending CN114090179A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111395207.XA CN114090179A (zh) 2021-11-23 2021-11-23 有状态服务的迁移方法、装置及服务器

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111395207.XA CN114090179A (zh) 2021-11-23 2021-11-23 有状态服务的迁移方法、装置及服务器

Publications (1)

Publication Number Publication Date
CN114090179A true CN114090179A (zh) 2022-02-25

Family

ID=80303321

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111395207.XA Pending CN114090179A (zh) 2021-11-23 2021-11-23 有状态服务的迁移方法、装置及服务器

Country Status (1)

Country Link
CN (1) CN114090179A (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114826908A (zh) * 2022-05-09 2022-07-29 新华智云科技有限公司 kubernetes集群服务保障方法、组件、系统
CN115484162A (zh) * 2022-08-24 2022-12-16 杭州趣链科技有限公司 一种软件系统的组件适配方法、装置、服务端及存储介质
CN116166204A (zh) * 2023-04-19 2023-05-26 安元科技股份有限公司 一种多版本加密存储的迁移方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070078988A1 (en) * 2005-09-15 2007-04-05 3Tera, Inc. Apparatus, method and system for rapid delivery of distributed applications
US20200409600A1 (en) * 2019-06-28 2020-12-31 Amazon Technologies, Inc. Virtualized block storage servers in cloud provider substrate extension
US20210149562A1 (en) * 2019-11-14 2021-05-20 Vmware, Inc. Optimizing Virtual Machine Storage Performance in a Stretched Cluster
CN112925852A (zh) * 2021-03-03 2021-06-08 浪潮云信息技术股份公司 一种分布式数据库指定节点缩容方法
CN113535411A (zh) * 2021-09-17 2021-10-22 阿里云计算有限公司 资源调度方法、设备及系统

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070078988A1 (en) * 2005-09-15 2007-04-05 3Tera, Inc. Apparatus, method and system for rapid delivery of distributed applications
US20200409600A1 (en) * 2019-06-28 2020-12-31 Amazon Technologies, Inc. Virtualized block storage servers in cloud provider substrate extension
US20210149562A1 (en) * 2019-11-14 2021-05-20 Vmware, Inc. Optimizing Virtual Machine Storage Performance in a Stretched Cluster
CN112925852A (zh) * 2021-03-03 2021-06-08 浪潮云信息技术股份公司 一种分布式数据库指定节点缩容方法
CN113535411A (zh) * 2021-09-17 2021-10-22 阿里云计算有限公司 资源调度方法、设备及系统

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
YAN_RONG_TECHNOLOGY: "有状态应用如何在Kubernetes平台上快速迁移和重建", Retrieved from the Internet <URL:https://blog.csdn.net/YAN_RONG_TECHNOLOGY/article/details/88064240> *
洪少佳: "Docker有状态服务的持久化存储与调度技术", 《中国优秀硕士学位论文全文数据库 信息科技辑》, vol. 2021, no. 2, 15 February 2021 (2021-02-15) *

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114826908A (zh) * 2022-05-09 2022-07-29 新华智云科技有限公司 kubernetes集群服务保障方法、组件、系统
CN114826908B (zh) * 2022-05-09 2024-03-26 新华智云科技有限公司 kubernetes集群服务保障方法、组件、系统
CN115484162A (zh) * 2022-08-24 2022-12-16 杭州趣链科技有限公司 一种软件系统的组件适配方法、装置、服务端及存储介质
CN115484162B (zh) * 2022-08-24 2024-06-07 杭州趣链科技有限公司 一种软件系统的组件适配方法、装置、服务端及存储介质
CN116166204A (zh) * 2023-04-19 2023-05-26 安元科技股份有限公司 一种多版本加密存储的迁移方法

Similar Documents

Publication Publication Date Title
US11226847B2 (en) Implementing an application manifest in a node-specific manner using an intent-based orchestrator
US10896102B2 (en) Implementing secure communication in a distributed computing system
CN114090179A (zh) 有状态服务的迁移方法、装置及服务器
US10642694B2 (en) Monitoring containers in a distributed computing system
CN102594849B (zh) 数据备份、恢复方法、虚拟机快照删除、回滚方法及装置
US9817750B2 (en) Profile-dependent write placement of data into a non-volatile solid-state storage
CN110247984B (zh) 业务处理方法、装置及存储介质
CN111061432B (zh) 一种业务迁移方法、装置、设备及可读存储介质
CN105531675A (zh) 分散型分布式计算系统
CN107465709B (zh) 分布式镜像构建任务方法及装置、系统
CN112463290A (zh) 动态调整计算容器的数量的方法、系统、装置和存储介质
WO2020029995A1 (en) Application upgrading through sharing dependencies
US10620871B1 (en) Storage scheme for a distributed storage system
CN112003895B (zh) OpenStack云平台中云主机疏散方法、装置、设备及存储介质
CN107566470B (zh) 云数据系统中管理虚拟机的方法和装置
CN115292003A (zh) 服务器故障恢复方法、装置、电子设备及存储介质
US20230376357A1 (en) Scaling virtualization resource units of applications
CN107783826B (zh) 一种虚拟机迁移方法、装置及系统
CN111078119A (zh) 一种数据重建方法、系统、装置及计算机可读存储介质
CN113419901A (zh) 数据灾备方法、装置及服务器
CN106254459A (zh) 一种用于云平台用户的资源弹性分配策略及装置
CN114328434A (zh) 数据处理系统、方法、设备及存储介质
CN115827745A (zh) 内存数据库集群的实现方法、装置及内存数据库集群
WO2016046951A1 (ja) 計算機システム及びそのファイル管理方法
US10152379B1 (en) Efficient garbage collection for distributed storage with forward error correction

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