CN112099918A - 容器化环境中的集群的实时迁移 - Google Patents
容器化环境中的集群的实时迁移 Download PDFInfo
- Publication number
- CN112099918A CN112099918A CN202010954736.8A CN202010954736A CN112099918A CN 112099918 A CN112099918 A CN 112099918A CN 202010954736 A CN202010954736 A CN 202010954736A CN 112099918 A CN112099918 A CN 112099918A
- Authority
- CN
- China
- Prior art keywords
- cluster
- processors
- control plane
- pods
- cloud
- 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
- 238000013508 migration Methods 0.000 title abstract description 131
- 230000005012 migration Effects 0.000 title abstract description 130
- 238000000034 method Methods 0.000 claims abstract description 75
- 238000012545 processing Methods 0.000 claims abstract description 15
- 230000008859 change Effects 0.000 claims description 23
- 230000003362 replicative effect Effects 0.000 claims description 4
- 230000008878 coupling Effects 0.000 claims 1
- 238000010168 coupling process Methods 0.000 claims 1
- 238000005859 coupling reaction Methods 0.000 claims 1
- 230000002085 persistent effect Effects 0.000 description 36
- 230000008569 process Effects 0.000 description 28
- 230000015654 memory Effects 0.000 description 19
- 238000010586 diagram Methods 0.000 description 14
- 230000007613 environmental effect Effects 0.000 description 7
- 238000004891 communication Methods 0.000 description 6
- 230000009471 action Effects 0.000 description 5
- 239000003795 chemical substances by application Substances 0.000 description 5
- 230000000694 effects Effects 0.000 description 4
- 239000000835 fiber Substances 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 230000001934 delay Effects 0.000 description 2
- 238000003745 diagnosis Methods 0.000 description 2
- 230000008439 repair process Effects 0.000 description 2
- 230000010076 replication Effects 0.000 description 2
- 238000013515 script Methods 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 238000013500 data storage Methods 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
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
- H04L67/1097—Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
-
- 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5083—Techniques for rebalancing the load in a distributed system
- G06F9/5088—Techniques for rebalancing the load in a distributed system involving task migration
-
- 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
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1479—Generic software techniques for error detection or fault masking
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/284—Relational databases
- G06F16/285—Clustering or classification
-
- 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
-
- 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/485—Task life-cycle, e.g. stopping, restarting, resuming execution
-
- 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5077—Logical partitioning of resources; Management or configuration of virtualized resources
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/08—Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
- H04L43/0805—Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters by checking availability
- H04L43/0817—Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters by checking availability by checking functioning
-
- 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
- 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
- H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
- H04L67/1004—Server selection for load balancing
- H04L67/1008—Server selection for load balancing based on parameters of servers, e.g. available memory or workload
-
- 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
- H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
- H04L67/1031—Controlling of the operation of servers by a load balancer, e.g. adding or removing servers that serve requests
-
- 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
- H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
- H04L67/1034—Reaction to server failures by a load balancer
-
- 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/50—Network services
- H04L67/60—Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
-
- 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/45591—Monitoring or debugging support
-
- 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)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Databases & Information Systems (AREA)
- Quality & Reliability (AREA)
- Data Mining & Analysis (AREA)
- Environmental & Geological Engineering (AREA)
- Computer Hardware Design (AREA)
- Hardware Redundancy (AREA)
- Debugging And Monitoring (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
该技术提供了容器化环境中的集群的实时迁移。例如,当接收到对一个或多个集群控制平面的请求时,可以将所接收的请求的预定部分分配给第二集群的控制平面,而将所接收的请求的剩余部分可以分配给第一集群的控制平面。使用第二集群的控制平面来处理请求的预定部分。在处理请求的预定部分时,检测在第二集群中是否存在故障。基于在第二集群中未检测到故障,可以在预定阶段增加分配给第二集群的控制平面的请求的预定部分,直到将所有请求分配给第二集群的控制平面为止。
Description
相关申请的交叉引用
本申请要求2019年9月13日提交的美国临时专利申请No.62/899,794的提交日期的权益,其公开内容通过引用结合于此。
技术领域
本公开涉及容器化环境中的集群的实时迁移。
背景技术
容器化环境可以被用来在分布式或云计算系统上有效运行应用。例如,可以将应用的各种服务打成容器。容器可以在逻辑上分组为容器荚(pod),然后可以将容器荚部署在云计算系统上,例如作为虚拟机(“VM”)的节点的集群上。集群可以包括运行容器的一个或多个工作节点以及根据各种云和用户定义的配置和策略管理工作节点的工作负载和资源的一个或多个主节点。集群控制平面是在集群的主节点上运行的逻辑服务,该逻辑服务可以包括多个软件进程和存储集群当前状态的数据库。为了增加可用性,可以复制集群中的主节点,在这种情况下,主节点副本的仲裁集必须同意集群修改集群的任何状态。集群可以由云提供商运营或者最终用户自行管理。例如,云提供商可以具有对云上的所有集群设置规则和策略的云控制平面,或者为用户提供在集群上执行管理任务的简便方法。
当云提供商或最终用户对集群环境进行改变时,这些改变可能会给集群带来风险。示例性环境改变可能包括软件升级,该软件升级可以对节点、集群控制平面或云控制平面的升级。另一个示例性环境改变可以包括集群资源在位置之间,诸如在不同物理位置的数据中心之间或者在不同逻辑位置之间(诸如同一数据中心内的区域或地区之间)的移动。另外,用户可能希望从用户作为云提供商运营的自我管理集群迁移到由云提供商管理的集群,或者通常在由不同云提供商管理的两个集群之间迁移。这种迁移带来风险,因为它涉及将集群的控制平面转变为新的云提供商的控制。作为又一个示例,用户可能希望在不停止集群的情况下改变集群的云,这可能会对集群中当前正在运行的进程造成风险。
图1A和1B示出了改变集群环境的当前过程,特别是对集群控制平面的软件升级。例如,云控制平面可以引入软件升级,诸如用于由云提供商托管的VM的配置和策略的新版本。如图1A所示,为将集群从旧版本“v1.1”切换到新版本“v1.2”,云控制平面删除集群中的旧主节点,并在其位置创建新主节点。在如图1B所示的替换过程期间,可能会阻止新主节点附接到持久磁盘(“PD”),直到将旧主节点与PD分离并且删除旧主节点为止。
发明内容
本公开提供从第一集群迁移到第二集群的方法,该方法包括通过一个或多个处理器接收对一个或多个集群控制平面的请求,其中,一个或多个集群控制平面包括第一集群的控制平面和第二集群的控制平面;通过一个或多个处理器将所接收的请求的预定部分分配给第二集群的控制平面,并且将所接收的请求的剩余部分分配给第一集群的控制平面;通过一个或多个处理器使用第二集群的控制平面处理所接收的请求的预定部分;在处理所接收的请求的预定部分的同时,通过一个或多个处理器检测第二集群中是否存在故障;以及通过一个或多个处理器基于在第二集群中未检测到故障,在预定阶段增加分配给第二集群的控制平面的所接收的请求的预定部分,直到将所有接收的请求分配给第二集群的控制平面为止。
可以由第一集群的集群桥接聚合器和第二集群的集群桥接聚合器来分配所接收的请求,其中,第一集群和第二集群在同一云上操作。所接收的请求可以包括来自在第一集群中运行的工作负载的请求,其中,来自工作负载的请求可以被第一集群中注入的边车(sidecar)容器拦截,并且被路由到第二集群的集群桥接聚合器,其中,第一集群和第二集群在不同的云上操作。
可以在多个预定阶段中执行对所接收的请求的分配,其中,基于下述中的一项或多项,将请求定向到第一集群或第二集群:用户代理、用户帐户、用户组、对象类型、资源类型、对象的位置或请求的发送者的位置。
该方法可以进一步包括通过一个或多个处理器将第二集群的控制平面中的一个或多个数据库联接(join)到包括第一集群的控制平面中的一个或多个数据库的仲裁集(quorum),其中,第一集群和第二集群在同一云上运行。该方法可以进一步包括通过一个或多个处理器使第二集群的控制平面中的一个或多个数据库与第一集群的控制平面中的一个或多个数据库同步,其中,第一集群和第二集群在不同的云上操作。
该方法可以进一步包括通过一个或多个处理器将对象锁的预定部分分配给第二集群的一个或多个控制器,并且将对象锁的剩余部分分配给第一集群的一个或多个控制器;通过一个或多个处理器致动由第二集群的一个或多个控制器锁定的对象;在致动所锁定的对象的同时,通过一个或多个处理器检测第二集群中是否存在故障;通过一个或多个处理器基于在第二集群未检测到故障,增加分配给第二集群的一个或多个控制器的对象锁的预定部分。
该方法可以进一步包括通过一个或多个处理器确定所有接收的请求都被分配给第二集群的控制平面;通过一个或多个处理器基于确定,删除第一集群的控制平面,其中,第一集群和第二集群在同一云上操作。该方法可以进一步包括通过一个或多个处理器基于在第二集群中检测到一个或多个故障,停止将所接收的请求分配给第二集群的控制平面。该方法可以进一步包括:通过一个或多个处理器基于在第二集群中检测到一个或多个故障,生成包括关于所检测到的故障的信息的输出。该方法可以进一步包括:通过一个或多个处理器基于在第二集群中检测到故障,减少分配给第二集群的控制平面的所接收的请求的预定部分,直到将所有接收的请求分配给第一集群的控制平面为止。该方法可以进一步包括:通过一个或多个处理器确定所有接收到的请求都分配给第一集群的控制平面;通过一个或多个处理器基于确定,删除第二集群。
该方法可以进一步包括:通过一个或多个处理器调度第二集群中的容器荚;通过一个或多个处理器记录第一集群中的容器荚的状态;通过一个或多个处理器将所记录的第一集群中的容器荚的状态发送到第二集群中的容器荚。该方法可以进一步包括:通过一个或多个处理器暂停由第一集群中的容器荚执行工作负载;通过一个或多个处理器复制自从记录第一集群中的容器荚的状态以来的第一集群中的容器荚的状态变化;通过一个或多个处理器将所复制的状态变化发送到第二集群中的容器荚;通过一个或多个处理器恢复由第二集群中的容器荚执行工作负载;通过一个或多个处理器将定向到第一集群中的容器荚的流量转发到第二集群中的容器荚;通过一个或多个处理器删除第一集群中的容器荚。
该方法可以进一步包括通过一个或多个处理器确定第一集群中的第一工作节点具有要移动到第二集群的一个或多个容器荚;通过一个或多个处理器在第二集群中创建第二工作节点;通过一个或多个处理器阻止第一集群中的第一工作节点添加新容器荚;通过一个或多个处理器将第一工作节点中的一个或多个容器荚移动到第二集群中的第二工作节点;通过一个或多个处理器确定第一集群中的第一工作节点不再具有要移动到第二集群的容器荚;通过一个或多个处理器删除第一集群中的第一工作节点。
该方法可以进一步包括通过一个或多个处理器接收对一个或多个工作负载的请求,其中,一个或多个工作负载包括第一集群中运行的工作负载和第二集群中运行的工作负载;一个或多个处理器使用至少一个全局负载均衡器,将所接收的请求分配给在第一集群中运行的工作负载和在第二集群中运行的工作负载之间的一个或多个工作负载。
该方法可以进一步包括通过一个或多个处理器确定在第二集群中运行的容器荚引用了第一集群的存储;通过一个或多个处理器在第二集群中创建存储,其中,第一集群的存储和第二集群的存储位于不同的位置;通过一个或多个处理器使用存储驱动器在第二集群的存储中读取与第二集群中的容器荚有关的数据;通过一个或多个处理器使用存储驱动器在第一集群的存储中读取与第二集群中的容器荚有关的数据。该方法可以进一步包括:通过一个或多个处理器将第二集群中的容器荚所做的改变写入第二集群的存储;通过一个或多个处理器将容器荚未改变的数据从第一集群的存储复制到第二集群的存储。
本公开进一步提供一种用于从第一集群迁移到第二集群的系统,该系统包括:一个或多个处理器,一个或多个处理器被配置为:接收对一个或多个集群控制平面的请求,其中,一个或多个集群控制平面包括第一集群的控制平面和第二集群的控制平面;将所接收的请求的预定部分分配给第二集群的控制平面,并且将所接收的请求的剩余部分分配给第一集群的控制平面;使用第二集群的控制平面处理所接收的请求的预定部分;在处理所接收的请求的预定部分的同时,检测第二集群中是否存在故障;以及基于在第二集群中未检测到故障,在预定阶段增加分配给第二集群的控制平面的所接收的请求的预定部分,直到将所有接收的请求分配给第二集群的控制平面为止。
第一集群和第二集群可以是下述的至少一个:操作不同的软件版本、在不同的位置操作、在由不同的云提供商提供的不同的云上操作、在其中至少一个云为用户的本地数据中心的不同的云上操作,或连接到不同的网络。
附图说明
图1A和1B示出了用于实现集群的环境改变的现有过程。
图2示出了根据本公开的方面,可以在其上操作集群的示例性分布式系统。
图3示出了根据本公开的方面,可以在其中进行实时集群迁移的示例性分布式系统。
图4示出了根据本公开的方面的示例性集群。
图5示出了根据本公开的方面,实时集群迁移中涉及的示例性组件。
图6示出了根据本公开的方面,在云内的实时迁移期间,路由对集群控制平面的请求的示例性特征。
图7示出了根据本公开的方面,在不同云之间的实时迁移期间,路由对集群控制平面的请求的示例性特征。
图8示出了根据本公开的方面,在不同位置或云之间的实时迁移期间,对集群控制平面执行存储同步的示例性特征。
图9示出了根据本公开的方面,用于工作负载的迁移的示例性特征。
图10示出了根据本公开的方面,对不同位置或云之间的工作负载执行实时存储迁移的示例性特征。
图11A、11B和11C是示出根据本公开的方面,用于集群控制平面的示例实时迁移的时序图。
图12是示出了根据本发明的方面,用于工作负载的实例实时迁移的时序图。
图13是示出了根据本发明的方面的迁移后动作的时序图。
图14是根据本公开的方面的示例性流程图。
具体实施方式
概述
该技术通常涉及修改分布式计算环境中的节点集群的环境。为了减少软件升级或在位置、网络或云之间移动涉及的环境改变的风险和停机时间,系统被配置为经由分阶段部署(rollout)的实时迁移来修改集群的环境。就此而言,当第一源集群仍在运行时,可以创建第二目的集群。
在实时迁移期间,操作由源集群和目的集群共同处理。就此而言,各种操作和/或组件可以逐渐从由源集群处理转移到由目的集群处理。该转移可以是分阶段部署,其中,在每个阶段中,可以将不同组的操作和/或组件从源集群转移到目的集群。此外,为了减轻故障情况下的损坏,在每个阶段内,将操作或组件从源集群转移到目的集群可以是逐步的或“固定的(canaried)”。可以对集群的控制平面以及集群的工作负载执行实时迁移。
例如,在集群控制平面的实时迁移期间,可以在源集群的集群控制平面和目的集群的集群控制平面之间分配流量。就此而言,在源集群和目的集群在同一云上操作的情况下,集群桥接聚合器可以被配置为将输入请求(诸如来自用户应用和/或来自工作负载的API调用)路由到源集群和目的集群两者的集群控制平面。在源集群和目的集群在不同的云上操作的情况下,特别是云之一可能不支持集群迁移的情况下,可以在不具有集群桥接聚合器的集群中注入一个或多个边车容器。这些边车容器可以拦截API调用并将其路由到具有集群桥接聚合器的集群,以进行进一步的路由/重新路由。
在实时迁移期间,对集群控制平面分配请求流量可以是固定的。例如,最初可以将请求的预定部分分配给目的集群的集群控制平面,而将请求的其余部分分配给源集群的集群控制平面。当目的集群的集群控制平面正在处理请求的预定部分时,可以对该目的集群进行监视。如果未检测到故障,则可以逐渐增加对目的集群的集群控制平面的请求的分配,直到最终将所有请求分配给目的集群的集群控制平面为止。
源集群和目的集群的集群控制平面之间的请求的分配可以基于预定规则。例如,请求可以基于资源类型、对象类型或位置来分配。此外,请求可以在预定阶段中分配。
作为另一个示例,在集群控制平面的实时迁移期间,对象致动可以在源集群的集群控制平面和目的集群的集群控制平面之间被分配。为了进一步减轻故障情况下的损坏,对象致动的分配也可以是固定的。例如,首先,可以将对象锁的预定部分分配给目的集群的控制器,而将对象的剩余部分分配给源集群的控制器。在致动由对象锁的预定部分锁定的对象时,可以监视目的集群。如果未检测到故障,或者在迁移之前至少没有在源集群中尚未发生的其他故障,则可以增加将对象锁分配给目的集群的控制器,直到由目的集群的控制器最终致动所有对象为止。
此外,在实时迁移期间,将维护用于集群控制平面的一致数据存储。就此而言,如果源集群和目的集群位于同一数据中心中,并由此共享相同的存储后端,则可以例如通过加入同一仲裁集来桥接源集群和目的集群的数据库。另一方面,如果源集群和目的集群在不同的位置或云上操作,以使得它们无法访问彼此的存储后端,则可以同步源集群和目的集群的数据库。
此外,还可以对集群中运行的工作负载执行迁移。就此而言,工作负载的迁移也可能是实时的。例如,当在目的集群中创建新节点时,可以在目的集群中创建容器荚。可能会暂停源集群中的容器荚的执行,而不是立即删除源集群中的容器荚。源集群中的容器荚的状态可以被传送到目的集群中的容器荚中,并且执行可以在目的集群中的容器荚中恢复。此外,全局负载均衡器可以被配置为将请求路由到在源集群和目的集群中运行的工作负载。在工作负载迁移在不同位置或云之间的情况下,可以对工作负载执行实时存储迁移,以改变工作负载的存储位置。
一旦集群控制平面的所有组件和/或工作负载的所有组件都被转移到目的集群,并且在迁移之前,源集群中没有尚未发生的其他故障,则可以释放或删除源集群的组件。但是,如果在实时迁移期间或之后检测到故障,则可以停止实时迁移。另外,可以启动从目的集群回滚到源集群,并且可以释放和删除目的集群的组件。
该技术之所以具有优势,是因为它提供了用于修改集群基础结构的逐步且受监视的部署过程。分阶段和固定的部署过程在出现问题时提供更多机会以停止升级,从而防止大规模损坏。在同时运行的源集群和目的集群之间的流量分配(诸如,对集群控制平面的请求和/或对工作负载的请求)可以减少或消除升级期间的停机时间。此外,由于流量分配,从客户端的角度来看,它可能看起来像在实时迁移期间仅存在一个集群。如果升级失败,系统将提供回滚选项,因为除非成功完成升级,否则不会删除源集群。该技术还提供了能够在位于不同位置的集群之间以及在云中之一不支持实时迁移的不同云上操作的集群之间实现实时迁移的特征。
示例性系统
图2是示出了可以在其上操作集群的示例性分布式系统200的功能图。如所示,系统200可以包括多个计算设备,诸如耦合到网络290的服务器计算机210、220、230、240。例如,服务器计算机210、220、230、240可以是由云提供商运营的云计算系统的一部分。云提供商可以进一步维护一个或多个存储,诸如存储280和存储282。进一步如所示,系统200可以包括一个或多个客户端计算设备,诸如能够在网络290上与服务器计算机210、220、230、240通信的客户端计算机250。
服务器计算机210、220、230、240和存储280、282可以在一个或多个数据中心中由云提供商维护。例如,如所示,服务器计算机210、220和存储280可以位于数据中心260中,而服务器计算机230、240和存储282可以位于另一个数据中心270中。数据中心260、270和/或服务器计算机210、220、230、240可以彼此隔开相当大的距离,诸如在不同的城市、州、国家、大陆等中。此外,在数据中心260、270内,可以存在一个或多个区域或地区。例如,可以基于任何适当的属性在逻辑上划分区域或地区。
集群可以在分布式系统200上操作。例如,集群可以由数据中心中的一个或多个处理器实现,诸如由服务器计算机210的处理器212或由服务器计算机230和240的处理器232和242实现。此外,可以在云计算系统上(诸如在存储280、282中或在服务器计算机210、220、230、240的数据218、228、238、248中实现用于维护集群的状态的持久且一致的记录的存储系统,诸如持久磁盘(“PD”)。
可以类似地配置服务器计算机210、220、230、240。例如,如所示,服务器计算机210可以包含一个或多个处理器212、存储器214以及通用计算机中通常存在的其他组件。存储器214可以存储可由处理器212访问的信息,包括可以由处理器212执行的指令216。存储器还可以包括可以由处理器212检索、操纵或存储的数据218。存储器214可以是能够存储可由处理器212访问的信息的一种非暂时性计算机可读介质,诸如硬盘驱动器、固态驱动器、磁带驱动器、光学存储器、存储卡、ROM、RAM、DVD、CD-ROM、能写入和只读存储器。处理器212可以是公知的处理器或其他鲜为人知的类型的处理器。替代地,处理器212可以是专用控制器,诸如GPU或ASIC,例如TPU。
指令216可以是由处理器212直接执行的一组指令,诸如计算设备代码,或间接由处理器212执行的一组指令,诸如脚本。就此而言,术语“指令”、“步骤”和“程序”在本文中可以互换使用。指令216可以以目标代码格式存储,以供处理器212直接处理,或者以其他类型的计算机语言(包括按需进行解释或预先编译的脚本或独立源代码模块的集合)存储。指令的功能、方法和例程在上述示例和以下示例性方法中进行了更详细的说明。指令216可以包括本文描述的任何示例性特征。
数据218可以由处理器212根据指令216检索、存储或修改。例如,尽管系统和方法不受特定数据结构的限制,但数据218可以被存储在计算机寄存器中、作为具有多个不同字段和记录的表存储在关系或非关系数据库中,或者存储为JSON、YAML、原始或XML文档。数据218也可以以计算机可读格式来格式化,诸如但不限于二进制值、ASCII或Unicode。此外,数据218可以包括足以识别相关信息的信息,诸如数字、描述性文本、专有代码、指针、对存储在其他存储器中的数据的引用,包括其他网络位置,或者由函数使用来计算相关信息的信息。
尽管图2在功能上将处理器212和存储器214图示为在同一块内,但是处理器212和存储器214实际上可以包括可以或可以不存储在同一物理壳体内的多个处理器和存储器。例如,某些指令216和数据218可以存储在可移动CD-ROM上,而其他指令和数据可以存储在只读计算机芯片中。一些或全部指令和数据可以存储在物理上远离处理器212但仍可被处理器212访问的位置。类似地,处理器212可以包括可以并行或可以不并行操作的处理器的集合。服务器计算机210、220、230、240可以均包括提供定时信息的一个或多个内部时钟,其可以被用于由服务器计算机210、220、230、240运行的操作和程序的时间测量。
服务器计算机210、220、230、240可以实现许多体系结构和技术中的任何一种,包括但不限于直接附加存储(DAS)、网络附加存储(NAS)、存储区域网络(SAN))、光纤通道(FC)、以太网光纤通道(FCoE)、混合架构网络等。在某些情况下,服务器计算机210、220、230、240可以是虚拟化环境。
服务器计算机210、220、230、240和客户端计算机250可以均位于网络290的一个节点上,并且能够与网络290的其他节点直接和间接通信。例如,服务器计算机210、220、230、240可以包括网络服务器,该网络服务器能够经由网络290与客户端计算机250进行通信,使得其使用网络290将信息传送到在客户端计算机250上运行的应用。服务器计算机210、220、230、240也可以是一个或多个负载均衡服务器场中的计算机,它们可以与网络290的不同节点交换信息,以接收、处理数据并将数据传送到客户端计算机250。尽管在图2中仅描绘了几个服务器计算机210、220、230、240,存储280、282和数据中心260、270,但应当意识到,典型系统可以包括分别位于网络290的不同节点上的大量连接的服务器计算机、大量的存储器和/或大量的数据中心。
客户端计算机250还可以类似于服务器计算机210、220、230、240被配置有处理器252、存储器254、指令256和数据258。客户端计算机250可以具有通常结合个人计算设备使用的所有组件,诸如中央处理单元(CPU)、存储数据和指令的存储器(例如RAM和内部硬盘驱动器)、输入和/或输出设备、传感器、时钟等。客户端计算机250可以包括全尺寸个人计算设备,它们可以替代地包括能够通过诸如因特网的网络与服务器无线地交换数据的移动计算设备。例如,客户端计算机250可以是台式计算机或膝上型计算机,或者是移动电话或诸如能够经由互联网获得信息的无线使能PDA、平板PC或上网本的设备,或可穿戴设备等。
客户端计算机250可以包括应用接口模块251。应用接口模块251可以被用来访问可由一个或多个服务器计算机(诸如服务器计算机210、220、230、240)获得的服务。应用接口模块251可以包括子例程、数据结构、对象类别以及用于允许服务器和客户端彼此通信的其他类型的软件组件。在一方面,应用接口模块251可以是结合本领域中已知的几种操作系统可操作的软件模块。存储器254可以存储由应用接口模块251访问的数据258。数据258还可以存储在可移动介质,诸如磁盘、磁带、SD卡或CD-ROM上,其可以连接到客户端计算机250。
进一步如图2所示,客户计算机250可以包括一个或多个用户输入253,诸如键盘、鼠标、机械致动器、软致动器、触摸屏、麦克风、传感器和/或其他组件。客户端计算机250可以包括一个或多个输出设备255,诸如用户显示器、触摸屏、一个或多个扬声器、换能器或其他音频输出、触觉接口或向用户提供非视觉和非听觉信息的其他触觉反馈。此外,尽管在图2中仅描绘了一个客户端计算机250,但是应当意识到,典型系统可以服务位于网络290的不同节点处的大量客户端计算机。例如,系统200中的服务器计算机可以运行用于大量客户端计算机上的应用的工作负载。
与存储器214一样,存储280、282可以是任何类型的计算机化存储,其能够存储可由服务器计算机210、220、230、240和客户端计算机250中的一个或多个访问的信息,诸如硬盘驱动器、存储卡、ROM、RAM、DVD、CD-ROM、可写入和只读存储器。在一些情况下,存储280、282可以包括一个或多个持久磁盘(“PD”)。另外,存储280、282可以包括分布式存储系统,其中,数据被存储在物理上可以位于相同或不同地理位置的多个不同存储设备上。存储280、282可以如图2所示经由网络290连接到计算设备和/或可以直接连接到服务器计算机210、220、230、240和客户端计算机250中的任何一个。
服务器计算机210、220、230、240和客户端计算机250能够诸如通过网络290直接和间接通信。例如,使用Internet套接字,客户端计算机250可以通过Internet协议套件连接到在远程服务器计算机210、220、230、240上运行的服务。服务器计算机210、220、230、240可以设置侦听套接字,该侦听套接字可以接受用于发送和接收信息的发起连接。网络290和中间节点可以包括各种配置和协议,包括因特网、万维网、内联网、虚拟专用网、广域网、局域网、使用专用于一个或多个公司的通信协议的专用网、以太网、WiFi(例如802.81、802.81b、g、n或其他此类标准)和HTTP,以及上述的各种组合。可以通过能够向和从其他计算机发送数据的设备,诸如调制解调器(例如,拨号、电缆或光纤)和无线接口来促进这种通信。
图3是示出可以在其上进行实时集群迁移的示例性分布式系统300的功能图。分布式系统300包括第一云310和第二云320。如所示,云310可以包括数据中心260、270中的服务器计算机210、220、230、240以及连接到网络290的存储280、282。一个或多个客户端计算机,诸如客户端计算机250可以连接到网络290并使用由云310提供的服务。此外,如所示,云320可以类似地包括计算设备(诸如在一个或多个数据中心(诸如数据中心330)中组织的服务器计算机332、334)以及一个或多个存储器(例如连接到网络390的存储380)。一个或多个客户端计算机(诸如客户端计算机350)可以连接到网络390,并使用云320提供的服务。尽管在图3中仅描绘了几个服务器计算机、数据中心、存储器和客户端计算机,但应当理解到,典型系统可以包括均位于网络的不同节点上的大量连接的服务器计算机、大量数据中心、大量存储和/或大量客户端计算机。
云310和云320可以由不同的云提供商操作。这样,云310和云320可以具有不同的配置,使得在云310和云320上操作的集群在不同的软件环境中运行。此外,由云310和云320托管的集群可以共享或可以不共享任何存储后端、连接到相同网络或位于相同物理位置。这样,云310和云320上的集群可能不能彼此修改或甚至访问资源、软件组件和/或配置。在一些情况下,云310和云320之一或两者可以由用户自我管理。
分布式系统300中的实时集群迁移可以以多种方式中的任何一种发生。例如,当集群在数据中心260中运行时,云310的云提供商可以为云控制平面、在主节点上运行的集群控制平面或工作节点引入软件升级。这样,可以对集群中的对象执行迁移到在数据中心260中创建的符合软件升级的目的集群。在这种情况下,迁移是在同一数据中心260内、在同一网络290上以及在同一云310中。
作为另一个示例,实时集群迁移可以包括在物理位置之间移动。例如,用于云310的云提供商可能正在重定位资源,或者正在集群上运行的应用的开发人员可能想要移动到其他位置等。因此,可以对数据中心260的集群中的对象执行迁移到在数据中心270中创建的目的集群。在这种情况下,迁移可能仍在同一网络290和同一云310中。
然而,有时,用户可能希望从使用可能由一个云运营商自行管理或运营的一个云切换到由另一个云运营商运营的另一云。例如,可以对云320上的集群中的对象执行实时迁移到云310中创建的目的集群。除了改变云之外,这种迁移在一些情况下还可以涉及网络的改变和/或区域中的改变。
如下文的示例中进一步所解释的,对于云之间的迁移,云310和云320之一或两者可以配置有用于执行实时集群迁移的特征(feature)。例如,在云310和云320都包括用于执行实时集群迁移的特征的情况下,这些特征可以一起促进实时集群迁移。在云310包括用于执行实时集群迁移的特征而云320不包括用于执行实时集群迁移的特征的情况下,云310和云310上的迁移集群可以使用其他工具和方法来促进迁移,而这些不适合于云320和云320上的迁移集群。
图4是示出示例性集群400的功能图。例如,诸如开发人员的用户可以使用诸如图2的客户端计算机250的客户端计算机来设计应用,并且为该应用提供配置数据。由云(诸如图3的云310)提供的容器编排架构可以被配置为将应用的各种服务打包成容器。容器编排架构可以被配置为为容器分配资源、加载由容器提供的均衡服务,以及(例如通过复制和删除)缩放容器。
如图4所示,容器编排架构可以被配置为集群400,该集群400包括一个或多个主节点(诸如主节点410)和多个工作节点(诸如工作节点420和工作节点430)。集群400的每个节点可以在物理机或虚拟机上运行。集群400可以在诸如系统200的分布式系统上运行。例如,集群400的节点可以在图2所示的数据中心260中的一个或多个处理器上运行。主节点410可以控制工作节点420、430。工作节点420、430可以包括形成用户应用的一部分的计算机代码和程序运行时的容器。
进一步如所示,在一些情况下,容器可以被进一步组织成一个或多个容器荚。例如,如图4所示,工作节点420可以包括容器421、423、425,其中,容器423和425被组织成容器荚427,而工作节点430可以包括容器431、433、435,其中,容器431节点433和433被组织成容器荚437。工作节点的容器和容器荚可以具有在它们之上运行的各种工作负载,例如,这些工作负载可以为应用的网站或进程提供内容。容器荚可以属于“服务”,其将容器荚暴露于来自工作负载的用户(诸如应用的用户或网站的访问者)的网络流量。一个或多个负载均衡器可以配置为将流量(例如来自服务的请求)分配给集群400上运行的工作负载。例如,可以在集群400的工作节点中的容器荚之间分配流量。
此外,一些节点(诸如工作节点420)可以在逻辑上被组织为节点池(诸如节点池429)的一部分。例如,节点池可以是共享一个或多个属性(诸如内存大小、附接的CPU/GPU等)的一组节点。在一些情况下,节点池的所有节点可以位于云的同一位置,其可以是同一数据中心、数据中心内的同一区域/地区等。
主节点410可以被配置为管理工作节点420、430的工作负载和资源。就此而言,主节点410可以包括形成集群的控制平面的一部分的各种软件组件或进程。例如,如所示,主节点410可以包括彼此通信的API服务器440、数据库470、控制器管理器480和调度器490。
尽管仅示出了一个主节点410,但是集群400可以另外包括多个主节点。例如,主节点410可以被复制以生成多个主节点。集群400可以包括多个集群控制平面进程。例如,集群400可以包括多个API服务器、多个数据库等。在这些情况下,副本主节点的仲裁集,诸如大多数副本主节点必须同意集群400修改集群400的任何状态。此外,可以在集群400运行的云上提供一个或多个负载均衡器,以在多个API服务器之间分配请求,诸如API调用。即使当一个或多个主节点发生故障时,多个主节点也可以通过继续管理集群400来提高集群400的性能。在一些情况下,多个主节点可以分布到不同的物理和/或虚拟机上。
API服务器440可以被配置为接收请求,例如来自用户应用或来自工作节点上运行的工作负载的输入API调用,并且管理工作节点420、430以运行用于处理这些API调用的工作负载。如所示,API服务器440可以包括多个服务器,诸如内置资源服务器460和扩展服务器462。此外,如所示,API服务器440可以包括聚合器450,其被配置为将输入请求路由到API服务器440的适当服务器。例如,当API调用来自用户应用时,聚合器450可以确定该API调用是由云的内置资源来处理还是由扩展的资源来处理。基于该确定,聚合器450可以将API调用路由到内置资源服务器460或扩展服务器462。
API服务器440可以配置和/或更新存储在数据库470中的对象。API服务器440可以根据模式进行处理,该模式可以包括集群中的API对象必须遵循的格式以便由集群的其他组件(包括集群中的其他API服务器)理解、提供服务和/或存储。对象可以包括关于容器、容器组、复制组件等的信息。例如,API服务器440可以被配置为被告知集群400中的各个项目的状态的变化,并且基于这些变化,更新存储在数据库470中的对象。这样,数据库470可以被配置为存储用于集群400的配置数据,其可以是集群400的整体状态的指示。例如,数据库470可以包括多个对象,这些对象可以包括一个或多个状态,诸如意图和状态。例如,用户可以提供配置数据,诸如集群400的期望状态。
API服务器440可以被配置为向控制器管理器480提供集群400的意图和状态。控制器管理器480可以被配置为运行控制循环以将集群400驱动到期望状态。就此而言,控制器管理器480可以通过API服务器440监视集群400的节点共享的状态,并且进行尝试将当前状态移向期望状态的改变。控制器管理器480可以被配置为执行许多功能中的任何一个,包括管理节点(诸如初始化节点、获得关于节点的信息、检查无响应的节点等)、管理容器和容器组的复制等。
API服务器440可以被配置为向调度器490提供集群400的意图和状态。例如,调度器490可以被配置为跟踪每个工作节点上的资源使用,以确保超过可用资源不调度工作负载。为此,可以为调度器490提供资源需求、资源可用性以及其他用户提供的约束和策略指令,诸如服务质量、亲和力/反亲和力需求、数据位置等等。这样,调度器490的作用可以是使资源供给与工作负载需求匹配。
API服务器440可以被配置为与工作节点420、430通信。例如,API服务器440可以被配置为确保数据库470中的配置数据与工作节点420、430中的容器(诸如容器421、423、425、431、433、435)的配置数据匹配。例如,如所示,API服务器440可以被配置为与工作节点的容器管理器(诸如容器管理器422、432)通信。容器管理器422、432可以被配置为基于来自主节点410的指令来启动、停止和/或维护容器。对于另一个示例,API服务器440也可以被配置为与工作节点的代理(诸如代理424、434)进行通信。代理424、434可以被配置为诸如经由网络或其他通信信道来管理路由和流送(诸如TCP、UDP、SCTP)。例如,代理424、434可以管理工作节点420、430之间的数据的流送。
图5示出了实时迁移中涉及的两个集群的一些示例性组件。图5将第一集群400示为要从其迁移对象的源集群,以及将第二集群500示为将向其其迁移对象的目的集群。图5进一步示出了具有复制的主节点的集群400和集群500,因此集群400和集群500都被示为具有多个API服务器440、442、540、542以及相应的聚合器450、452、550、552。尽管为便于说明,在图5中仅示出了两个副本,但应当意识到,可以生成许多副本中的任何一个。
目的集群500在与源集群400不同的环境中运行。如上参考图3所述,不同的环境可以是不同的软件版本、数据中心的不同物理位置、不同的网络、不同云上的不同云控制平面等。代替删除源集群和创建目的集群以改变诸如图1A-B所示的环境,在集群400和500仍在运行的同时,可以通过将各种对象从源集群400实时迁移到目的集群500来执行环境的改变。
在实时迁移期间,可以在源集群400和目的集群500之间分配对集群控制平面的请求。例如,可以在源集群400的API服务器440、442和目的集群500的API服务器540、542之间分配诸如API调用的流量。如下文详细所述,可以通过对聚合器450、452、550、552的修改(参见图6)或添加拦截API流量的组件(参见图7)来实现。此外,为了处理路由到集群400的API调用,集群400可以运行控制器580以管理集群400中的资源,诸如管理工作节点和对象的复制。同样,为了处理路由到集群500的API调用,集群500可以运行控制器582来管理集群500中的资源。
如下文详细所述,集群400和500之间的实时迁移可以包括处理为数据库470和数据库570中的集群控制平面存储的对象。例如,如果集群400和500在同一数据中心中并且因此共享同一存储后端,可以桥接数据库470和数据库570。另一方面,如果集群400和集群500位于不同的位置或云上,使得它们无法访问彼此的存储后端,则可能需要同步数据库470和数据库570(参见图8)。
除了针对集群控制平面的迁移之外,还可以对集群中运行的工作负载(诸如在源集群400上运行的工作负载581和在目的集群上运行的工作负载583)执行实时迁移。可以在源集群400和目的集群500之间,例如通过使用全局负载均衡器(参见图9),路由对工作负载的请求(诸如对工作负载的API调用)。此外,对跨不同位置或不同云的迁移,可能需要改变用于存储工作负载的位置(参见图10)。
进一步如图5所示,可以例如由云310的云提供商提供协调器590,其包括用于实施实时迁移的各种规则。就此而言,如果迁移在诸如云310的同一云内,则源集群400和目的集群500都可以基于在协调器590中设置的规则来执行迁移。另一方面,如果迁移在两个不同的云(诸如云310和云320)之间,在一些情况下,只有在与协调器590同一云中的集群才能够遵循在协调器590中设置的规则。例如,目的集群500可以是在云310上,并且能够基于在协调器590中设置的规则来执行实时迁移;而源集群400可以在自我管理或由不同云管理的云320上,并且可能没有遵循在协调器590中设置的规则的必要特征。因此,云310可以包括促进从云320迁移或迁移到云320的其他特征。
关于集群控制平面的实时迁移,图6示出了示例性集群桥接聚合器,其被配置为在同一云内的实时迁移期间,在两个集群的控制平面之间路由诸如API调用的请求。图6将第一集群400示为要从其迁移对象的源集群,以及将第二集群500示为要向其迁移对象的目的集群。在该示例中,源集群400和目的集群500都被托管在同一云(诸如云310)上。图6进一步示出了具有复制的主节点的集群400和集群500,因此,集群400和集群500都被示为具有多个API服务器440、442、540、542和相应的集群桥接聚合器650、652、654、656。
一个或多个负载均衡器可以被配置为基于业务量,在各种API服务器之间分配输入请求,诸如API调用。例如,负载均衡器可以诸如通过API服务器的网络地址与集群的所有API服务器相关联。但是,负载均衡器可以被配置为提供集群的客户端(诸如集群运行的应用、用于发送所有API调用的单个网络地址)。例如,单个网络地址可以是分配给负载均衡器的网络地址。当负载均衡器接收到输入API调用时,然后,负载均衡器可以基于业务量来路由API调用。例如,负载均衡器可以在集群的API服务器之间划分API调用,并且基于API服务器的网络地址来发送API调用。
进一步如所示,源集群400和目的集群500中的聚合器都被修改为集群桥接聚合器650、652、654、656。集群桥接聚合器650、652、654、656被配置为从负载均衡器610接收输入请求,诸如API调用,并且进一步将请求路由到API服务器440、442、540、542。例如,云310的控制平面(例如通过协调器590)可以通知集群桥接聚合器650、652、654、656何时启动迁移。一旦集群桥接聚合器650、652、654、656知道了迁移,集群桥接聚合器650、652、654、656就可以确定输入API调用应当由源集群400还是由目的集群500处理。基于该确定,集群桥接聚合器650、652、654、656可以将API调用路由到适当的API服务器。
例如,如果API调用到达源集群400的集群桥接聚合器650,则集群桥接聚合器650可以确定该API调用应当由源集群400的API服务器还是目的集群500的API服务器处理。如果集群桥接聚合器650确定API调用将由源集群400的API服务器处理,则集群桥接聚合器650可以将API调用路由到相应的API服务器440。否则,集群桥接聚合器650可以将API调用重新路由到目的集群500的API服务器。同样地,如果API调用到达目的集群500的集群桥接聚合器654,则集群桥接聚合器654可以确定API调用应该由目的集群500还是由源集群400处理。如果集群桥接聚合器654确定API调用将由目的集群500处理,则集群桥接聚合器654可以将API调用路由到相应的API服务器540。否则,集群桥接聚合器654可以将API调用路由到源集群400的API服务器。由于源集群400的API服务器和目的集群500的API服务器可以为它们处理的对象实现不同的模式,因此API流量分配的改变可以有效地改变符合目的集群500的模式的对象部分。
集群桥接聚合器650、652、654、656可以基于许多因素中的任何一个来路由或重新路由API调用。例如,路由可以基于诸如容器荚、服务等的资源类型。例如,集群桥接聚合器650、652可以将用于所有容器荚的API调用路由到源集群400中的API服务器440、442,并且将所有服务的API调用重新路由到目的集群500。路由可以替代地基于对象类型。例如,集群桥接聚合器650、652可以将用于容器荚对象的50%的API调用路由到源集群400中的API服务器440、442,并且将其余API调用重新路由到目的集群500。作为另一替代,路由可以基于资源的物理位置。例如,集群桥接聚合器650、652可以为特定数据中心中的容器荚路由30%的API调用,然后将其余API调用重新路由到目的集群500。其他示例性因素可以包括用户代理、用户帐户、用户组、请求的发送者的位置等。可以在协调器590中,由云310的云提供商设置API调用路由的因素。
集群桥接聚合器650、652、654、656可以以分阶段的方式路由或重新路由API调用。例如,集群桥接聚合器654、656可以在一个阶段中开始将用于一种资源类型的API调用路由到目的集群500的API服务器540、542,然后在下一阶段中,改变以包括将用于另一资源类型的API调用路由到目的集群500的API服务器540、542等。可替代地,集群桥接聚合器654、656可以在一个阶段中开始将用于一个物理位置的API调用路由到目的集群500的API服务器540、542,然后,在下一阶段,改变以包括将用于另一物理位置的API调用路由到目的集群500的API服务器540、542等。作为另一示例,集群桥接聚合器654、656可以以增加的比例将API调用路由到API服务器540、542,诸如在一个阶段中将用于10%的容器荚对象的API调用路由到目的集群500的API服务器540、542,并且在下一阶段,将用于20%的容器荚对象的API调用路由到目的集群500的API服务器540、542等。API调用路由的阶段可以由云310的云提供商在协调器590中设置。
为了确定是路由还是重新路由请求,可以为集群桥接聚合器650、652、654、656提供关于要进行的分配的信息。例如,集群桥接聚合器650、652、654、656可以被配置为访问一个或多个数据库,诸如目的集群500的数据库570,以将部分流量分配给源集群400和分配给目的集群500。这样,当API调用例如到达集群桥接聚合器654时,集群桥接聚合器654可以基于要分配给目的集群500的API调用的部分(0<F<1),计算用于API调用的哈希值。哈希值可以进一步基于API调用的其他信息(诸如API调用的源的IP地址和API调用的元数据)来计算。这些信息可以被用来确定在上述分阶段部署过程中相关的资源类型、对象类型、物理位置等。在一些示例中,哈希值也可以被解释为0到1之间的部分的数值p。如果p<F,则集群桥接聚合器654可以将API调用路由到目的集群500,否则,集群桥接聚合器654可以将API调用路由到源集群400。基于哈希值做出的决定可以被确定性地定义,使得无论迁移涉及的哪个集群桥接聚合器接收到API调用,它都会做出与其他集群桥接聚合器相同的决定。这样,就无需多次重新路由API调用。在一些情况下,在上述分阶段部署的过渡期间,可以设置不同的部分F,例如不同的资源、不同的物理位置等。
此外,集群桥接聚合器可以进一步被配置为在两个集群之间分配其他资源。例如,与源集群400所使用的控制器相比,目的集群500可以使用不同的控制器来运行控制循环。这样,源集群的控制器与目的集群的控制器之间的切换也可以分阶段部署执行。例如,为了确保不对对象进行不一致的改变,控制器可以在操作对象之前获取锁。这样,集群桥接聚合器650、652、654、656可以被配置为在源集群400的控制器与目的集群500的控制器之间分配控制器锁。分配还可以在预定阶段执行,这可以是固定的。
图6中的API服务器440、442、540、542和集群桥接聚合器650、652、654、656基本上一起形成了逻辑API服务。因此,该逻辑API服务的客户端可以将请求发送到该逻辑API服务,并且这些请求将由各种集群桥接聚合器路由并由各种API服务器处理。对于客户端,除了可能的延迟之外,可能没有其他可观察到的差异。
但是,如果第一源集群400和第二目的集群500托管在不同的云上,则可能没有为源集群400或目的集群500中的一个提供集群桥接聚合器,图7示出了当在两个不同的云之间执行实时集群迁移时,拦截到集群控制平面的请求(诸如API调用)的其他组件。在所示的该示例中,目的集群500在被配置为执行实时迁移的云310上,而源集群400在自我管理或由未被配置为执行实时迁移的不同云提供商管理的云320上。这样,如上所述,云310上的目的集群500被提供有集群桥接聚合器654、656,而云320上的源集群400被提供有不能在集群之间路由和重新路由API调用的聚合器450、452。
由于在此的两个集群位于不同的云上,因此不会通过如图6所示的同一负载均衡器610接收请求(诸如API调用)。相反,API调用将基于它们的不同网络地址(诸如IP地址)被路由到源集群400和目的集群500中的集群桥接聚合器。
进一步如图7所示,由于集群400不包括集群桥接聚合器,因此可以将边车容器注入云320上的容器荚中以拦截请求,例如针对集群400中本地API服务器的API调用,以及将它们重新路由到目的集群500中的集群桥接聚合器654、656。例如,可以通过用户安装在云320的云控制平面上的扩展来注入边车容器。可以将边车容器注入到在源集群400中运行的每个工作负载容器荚。例如,如所示,边车容器720被注入到集群400中的容器荚710中。边车容器720可以被配置为拦截来自在容器荚710中运行的工作负载730、针对API服务器440或442的API调用,并且模拟源集群400中不存在的集群桥接聚合器。它简单地通过将这些API调用重定向到目的集群500中的集群桥接聚合器654、656来完成该模拟。然后,集群桥接聚合器654、656可以确定这些API调用是否应当由API服务器540、542本地处理,或者是否应当被发送回源集群的API服务器440、442。集群桥接聚合器654、656可以以上参考图6做出决定,并且相应地路由API调用。
图7中的API服务器440,442,540,542、聚合器450,452、边车容器712、集群桥接聚合器654,656基本上一起形成逻辑API服务。因此,该逻辑API服务的客户端可以向该逻辑API服务发送请求,并且该请求可以由边车容器720拦截,和/或由各种集群桥接聚合器路由,并且由各种API服务器处理。对于客户端,除了可能的延迟之外,可能没有其他可观察到的差异。
作为如上所述注入边车容器的替代方案,可以使用其他组件或进程来拦截和重新路由请求。例如,域名服务(DNS)条目可以被注入到节点中,以重新路由到目的集群的集群桥接聚合器。
返回图5,关于集群控制平面的存储,在源集群400和目的集群500在同一云上且在同一数据中心内的情况下,数据库570可以加入与数据库470相同的仲裁集。这样,包括数据库470或数据库570的数据库仲裁集必须在对象被修改或写入任何数据库仲裁集之前达成协议。例如,当大多数数据库副本同意改变时,可以达成协议。这确保了数据库570和数据库470及其副本反映了一致的变化。在一些示例中,数据库570可以首先加入为数据库仲裁集的非投票成员,然后成为仲裁集的投票成员。
但是,如果源集群400和目的集群500不在同一云或同一数据中心上,则数据库570可能无法加入数据库470的仲裁集。这样,图8示出了在用于不同云和/或区域上的集群的实时迁移期间的示例性集群控制平面存储同步。例如,第一源集群400可以在云320上,而第二目的集群500可以在云310上。作为另一个示例,目的集群500可以在数据中心260中,而源集群400可以在数据中心270中。
在容器化环境中,对象的一些字段只能由API服务器修改,否则是不可变的。因此,一旦对象的不可变字段被源集群400的API服务器(诸如API服务器440或442)写入或修改,目的集群500的API服务器(诸如API服务器540或542)就可能无法修改存储在源集群400的数据库470中的这些字段。因此,如所示,例如,当API调用进入集群桥接聚合器654从而请求创建新对象或修改不可变字段时,API调用可以由集群桥接聚合器654修改,并且首先被发送到源集群400,例如发送到聚合器450。API服务器440可以根据修改的API调用来创建或修改存储在数据库470中的对象810。
然后,集群桥接聚合器654可以使用其本地API服务器540在数据库470中创建对象810的其自己的副本,诸如数据库570中的对象820所示。例如,集群桥接聚合器654可以读取具有由源集群400的API服务器440选择的值的不可变字段,并且将这些值写入对象820。
在一些情况下,集群桥接聚合器654、656可以在对对象进行写操作的同时阻止对该对象的只读操作,以确保API调用者看到世界的一致视图。否则,API调用者只能观察到执行的改变部分,因为如上所述,在该迁移环境中进行写入可能是多步骤过程。另外,API调用者对需要对这些调用者透明的进程维持的API服务器的并发模型抱有期望。
在另一方面,还可以为集群中运行的工作负载执行迁移。图9示出了执行工作负载迁移所涉及的示例性特征。例如,示出了具有节点池429的第一源集群400,其包括节点910、912、914。一个或多个容器荚可以在集群400的节点中运行,诸如所示的容器荚920和容器荚922。集群400可以进一步包括本地负载均衡器930,用于将流量分配给集群400中的工作负载。例如,可以由本地负载均衡器930接收来自由工作负载服务的网站或应用的请求,并且本地负载均衡器930可以将这些请求分配到节点池429中的各个容器荚和节点。例如,由集群400的工作负载所服务的网站或应用可以被配置有将网站或应用与本地负载均衡器930的网络地址相关联的域名服务(DNS)记录。
进一步如所示,集群400内的工作负载将被迁移到第二目的集群500。集群500可以利用不具有任何节点的节点池940以及用于只要在集群500中创建了容器荚和节点就将输入请求分配给工作负载的本地均衡器970来初始化。可以从同一位置内(诸如同一数据中心内或数据中心的同一区域/地区内)对节点池429执行从集群400到集群500的迁移,或者可以在不同位置之间迁移。迁移也可以在同一云内或不同云之间执行。尽管集群400和500仅被示为具有一个节点池,但是在实际示例中,集群400和500可以包括多个节点池。在集群尚未将节点分组成节点池的情况下,在迁移期间,每个节点都可以被视为其自己的节点池,或者可以将具有类似大小的节点分组在一起等。
一旦目的集群500被初始化,则节点池940的大小可以逐渐增加。例如,可以在节点池940中分配新节点950。新节点950最初可以不包括任何容器荚。响应于节点池940的大小的增加,旧节点池429的大小可以减小。例如,旧节点910可以被删除。新节点的分配和旧节点的删除可以由云提供商按照协调器的指示执行。
源集群400和/或目的集群500的集群控制平面可以被告知节点910现在丢失,并且将先前存在于节点910中的所有容器荚(诸如所示的容器荚920和922)注册为丢失。这样,目的集群500的集群控制平面可以在新节点池940中创建替换容器荚。例如,目的集群500的控制器可以确定节点池940中的新节点950具有容量,并且可以在新节点950中创建替换容器荚,诸如所示的替换容器荚960和962。因此,有效地,容器荚920、922被作为容器荚960、962被移动到第二集群中。这可以对节点池429中的其他节点重复进行,诸如如所示,在节点池940中创建与节点912、914相对应的新节点952和954,并替换任何丢失的容器荚,直到节点池429不再具有任何节点和/或容器荚为止。
作为在移动任何容器荚之前删除节点910和添加节点950的替代方案,可以执行实时迁移。例如,只要创建了新节点950,节点910可以“被隔离”,使得防止在节点910上调度新容器荚。然后,在节点950中创建新容器荚960。可以记录容器荚920的状态并将其发送到容器荚960。然后,可以暂停执行容器荚920中的进程。如果自记录状态以来对容器荚920进行了任何改变,则这些改变也可以被复制到容器荚960中。然后可以在容器荚960中恢复暂停的执行。然后可以删除容器荚920。在该实时迁移期间,可以将定向到容器荚920的流量(例如对工作负载的请求)转发到容器荚960,直到容器荚920被删除为止。例如,负载均衡器可能在知道新创建的容器荚960之前已经将请求定向到容器荚920。可以对源集群400的各个节点和节点池中的每个容器荚重复该操作,直到没有剩余的容器荚为止。
此外,工作负载的迁移除了容器荚的迁移之外还可以包括容器荚所属的服务的迁移。服务的迁移可能与容器荚的迁移重叠。例如,只要在目的集群500中创建了一个或多个容器荚,先前由源集群400的容器荚处理的服务可能会被迁移到由目的集群500中的容器荚处理。此外,服务的迁移可能需要在源集群400中没有更多的容器荚来处理服务之前完成。
就此而言,可以创建一个或多个全局负载均衡器。例如,只要启动工作负载节点和容器荚迁移但在移动任何节点之前,源集群400和目的集群500可以均与一个或多个负载均衡器相关联,负载均衡器被配置为将请求路由到在源集群400和目的集群500中运行的工作负载400。例如,如所示,本地负载均衡器930和本地负载均衡器970都可以与全局负载均衡器980相关联。因此,如果源集群400和目的集群500位于不同的位置或云中,全局负载均衡器980可以被配置为将请求路由到这些不同的位置或云。先前由集群400的工作负载服务的网站或应用可以配置有DNS记录,该DNS记录将网站或应用与全局负载均衡器980的网络地址相关联,而不是先前与本地负载均衡器930的关联。同样地,只要工作负载节点和容器荚迁移开始,来自网站或应用的请求可以通过全局负载均衡器980路由到本地负载均衡器930和970。
一旦工作负载节点和容器荚迁移完成,就可以去除本地负载均衡器970和全局负载均衡器980之间的关联。此外,先前由集群400和集群500两者服务的网站或应用可以被配置有DNS记录,该DNS记录将网站或应用与本地负载均衡器970的网络地址相关联。因此,从现在开始,本地负载均衡器970可以被配置来将来自网站或应用的请求路由到仅在目的集群500中运行的工作负载。
此外,在如图9所示的工作负载的迁移是在不同位置之间或不同云之间的情况下,可能需要执行工作负载存储的实时迁移。图10示出了不同位置或云之间的实时工作负载存储迁移。例如,实时工作负载存储迁移可以与如图9所示的容器荚的迁移同时发生。用于容器化环境的存储系统可以包括存储数据的各种对象。例如,存储系统可以包括由云提供商提供的持久磁盘以及包含引用的元数据对象。例如,元数据对象可以被用来为容器荚或容器设置或“安装”持久磁盘。作为一些示例,元数据对象可以包括引用持久磁盘上的数据的持久卷,以及引用持久卷并存储通过容器或容器荚使用这些数据的信息的持久卷申请。
当迁移是在不同位置或云之间进行时,元数据对象可以被复制到目的环境,但是持久磁盘可以不被复制到目的环境。因此,可以通过跟踪每个持久磁盘的位置、在目的环境中复制元数据对象以及使用即写即拷系统复制数据执行用于工作负载的存储系统的实时迁移。
例如,如所示,容器荚920在第一源集群400中运行时,可以具有已经存在的元数据对象1010,该元数据对象可以引用持久磁盘1012。为制作这些存储对象的有效副本,可以在源集群400中创建助手容器荚1030,并将其附加到元数据对象1010。可以将助手容器荚1030配置为在容器荚920迁移到第二目的集群500作为容器荚960之后从持久磁盘1012读取。
然后,将迁移的容器荚960附接到目的集群500中的节点和新创建的元数据对象1020,该元数据对象可以是元数据对象1010的副本。可以确定迁移的容器荚960的元数据对象1020包括对持久磁盘1012的引用。为了对迁移的容器荚960设置存储,存储驱动器1050可以确定持久磁盘1012在不同的集群中。这样,可以在目的集群500中创建新持久磁盘1022。
然而,容器荚960可以通过存储驱动器1050初始地执行读取和/或写入,而不是直接附接到新持久磁盘1022,这可以确定容器荚960和元数据对象1020正在引用两个不同位置处的持久磁盘。例如,存储驱动器1050可以运行为图9的节点910上的插件。存储驱动器1050可以被配置为例如经由对助手容器荚1030的网络访问来访问旧持久磁盘1012,以及访问新持久磁盘1022。
例如,为了读取,容器荚960可以使用存储驱动器1050从新持久磁盘1022读取。另外,存储驱动器1050还可以调用助手容器荚1030,其可以从持久磁盘1012读取。
为了写入,容器荚960也可以通过存储驱动器1050来这样做。存储驱动器1050可以被配置为将所有写入引导到持久磁盘1022。这样,任何新改变都被写入到新持久磁盘1022中。可以通过即写即拷来执行写入,其中,将改变直接写入新持久磁盘1022,同时从旧持久磁盘1012复制未改变的数据。
此外,可以在后台执行迁移,以将所有数据从源集群400中的存储对象逐渐移动到目的集群500。例如,当网络不忙时,存储驱动器1050可以继续从持久磁盘1012读取数据,然后将该数据写入持久磁盘1022。一旦所有数据被复制,持久磁盘1022将包含完整的文件系统,并且容器荚960可以直接附接到持久磁盘1022,而无需存储驱动器1050。可以删除旧持久磁盘1012。在该过程中,从容器荚960的角度来看,除了可能的延迟之外没有其他区别。
尽管图10显示了容器荚和持久磁盘之间的一个元数据对象,但在一些示例中,可能存在相互引用的多个元数据对象,从而形成了引用链。例如,容器荚可以引用持久卷申请,该申请可以引用持久卷,然后其引用持久磁盘。
示例性方法
继上述示例性系统,现在描述示例性方法。可以使用上述系统、其改进或具有不同配置的多个系统中的任何一个来执行这样的方法。应当理解到,下述方法所涉及的操作不必以所描述的精确顺序执行。相反,可以以不同的顺序或同时地处理各种操作,并且可以添加或省略操作。
例如,图11A-C是示出用于集群控制平面的示例性实时集群迁移的时序图。图11A-C示出了发生在第一源集群中的源主节点1111、第二目的集群中的目的主节点1112、逻辑API服务1113和协调器1114处的各种动作。源主节点1111和目的主节点1112可以如图4-7中的任何一个所示配置。尽管示出了仅一个源主节点1111和仅一个目的主节点1112,但是诸如图4-7所示,在源集群和目的集群中的一个或两个中可以有任意数量的主节点。逻辑API服务1113可以是用于一个或多个集群的API服务器的仲裁集,集群包括如图4-6所示的聚合器和/或集群桥接聚合器,和/或如图7所示的边车容器。时序图可以可以在系统上,诸如通过图2或图3所示的一个或多个处理器执行。
参考图11A,最初,源集群的源主节点1111可能已经在云上运行。这样,源主节点1111已经附接到PD,并且源主节点1111的API服务器可能已经是逻辑API服务1113的成员。
在某个时候,云或用户的云提供商可能会发起环境改变,例如引入软件升级、移动到其他数据中心、移动到不同云或从不同云移动等。云提供商可能会进一步定义用于实时迁移的规则以在协调器1114中实现环境改变,并且协调器1114可以指示逻辑API服务1113实现规则。例如,规则可以包括用于工作负载流量分配和迁移阶段的因素。
一旦启动环境改变,就可以创建目的主节点1112并将其附接到PD。为保持与源主节点1111一致的改变,目的主节点1112的一个或多个数据库可以与源主节点1111的一个或多个数据库桥接或同步。例如,在源主节点1111和目的主节点1112位于同一云和位置的情况下,目的主节点1112的数据库可以加入与源主节点1111的数据库相同的仲裁集。在源主节点1111和目的主节点1112位于不同的云或位置的情况下,目的主节点1112的数据库可以与源主节点1111的数据库同步,如图8所示。
此时,目的主节点1112可以开始运行,而源主节点1111继续运行。这样,与图1A和1B所示的过程相比,可以减少或消除停机时间。为了同时处理对集群控制平面的请求,诸如API调用,目的主节点1112的API服务器可以加入逻辑API服务1113。例如,目的主节点1112的API服务器可以如图6所示,经由集群桥接聚合器加入逻辑API服务1113,或者可以如图7所示创建边车容器荚。
一旦协调器1114观察到目的主节点的API服务器,协调器1114可以开始分阶段部署以改变环境。继续图11B,该时序图示出了API流量从源集群到目的集群的示例性分阶段部署。如所示,协调器1114可以指示逻辑API服务1113来在源主节点1111的API服务器和目的主节点1112的API服务器之间实现分阶段流量分配。API流量分配可以使用图6所示的集群桥接聚合器和/或使用图7所示的一个或多个边车容器实现,由于源集群和目的集群的API服务器可以基于不同的模式处理对象,因此当API流量越来越多地路由到目的主节点1112的API服务器时,逐步部署用于目的环境中的对象的目的模式。
如图11B所示,在部署阶段期间,可以经由逻辑API服务1113,将输入API调用路由到目的主节点1112的API服务器和源主节点1111的API服务器。协调器1114可以设置API流量分配的预定比例。在所示的特定示例中,最初,所接收的API调用的1%可以由目的主节点1112的API服务器处理,而所接收的API调用的剩余99%可以由源主节点1111的API服务器处理。换句话说,最初,只有1%的API调用由目的主节点1112的API服务器根据目的环境的模式处理,其余的则由源主节点1111的API服务器根据源环境的模式处理。除了按预定比例分配API流量或作为其替代,API流量可以根据其他标准(诸如按资源类型、按用户、按名称空间、按对象类型等)进一步分配。
在部署过程期间,可以监视目的主节点1112的API服务器中的活动。例如,协调器1114可以监视诸如API服务器、控制器管理器等的集群控制平面组件的活动。协调器1114可以进一步监视工作负载,诸如比较由源集群和目的集群处理的工作负载是否存在问题性差异。这样,如果没有检测到由目的主节点1112的API服务器处理的API调用的一个比例发生故障,或者至少没有迁移之前在源集群400中尚未发生的其他故障,然后,可以将到目的主节点1112的API服务器的API流量增加到更高的比例,依此类推。例如,如所示,路由到目的主节点1112的API服务器的API调用可以从1%增加到2%、5%、10%等。但是,如果在由目的主节点1112的API服务器处理的API调用比例中检测到一个或多个故障,则该故障可以充当如果目的主节点1112的API服务器处理了较大比例的API调用,则可能会导致更多故障的警告。可以基于该警告采取适当的动作,诸如将所有API流量归还给源API服务器,如图11所示。
进一步如所示,在一些情况下,只有当目的主节点1112的API服务器处理所有输入API调用时,才可以使包括关于目的环境的信息(诸如跟在对象后的确切模式)的发现文档可用于用户。例如,随着每种类型的对象变得完全由目的集群处理,发现文档中用于相应类型对象的部分可以使用该类型对象的目的模式进行更新。换句话说,当所有对象都基于目的模式,由目的主节点1112的API服务器处理时,直到此时,终端用户可能都无法观察到任何环境的变化。此时,源主节点1111不再接收API流量,因此,无对象由源主节点1111的API服务器基于旧模式处理。源主节点1111的控制平面也可能观察到新发现文档,并被告知模式迁移已完成。
一旦协调器1114观察到完成的模式迁移,则协调器1114可以可选地开始集群的一个或多个其他方面的分阶段部署。例如,继续图11C,该时序图示出了控制器的示例性分阶段部署。在一些情况下,环境改变可能涉及致动集群对象的控制器的改变。例如,与源主节点1111使用的控制器相比,目的环境中的目的主节点1112可以使用不同控制器来运行控制循环。这样,也可以分阶段部署执行在源主节点1111的控制器和目的主节点的控制器之间的切换。例如,为了确保不对对象进行不一致的改变,控制器可以在操作对象之前获取锁。这样,协调器1114可以指示逻辑API服务1113在源集群的控制器和目的集群的控制器之间实现分阶段控制器锁分配。
因此,在图11C所示的特定示例中,最初仅将1%的控制器锁提供给目的主节点1112的控制器,其余的控制器锁则被提供给源主节点1111的控制器。如同API服务器的部署一样,协调器1114可以监视集群控制平面组件(诸如API服务器、控制器管理器和/或工作负载)的活动,以查看由于切换到目的主节点1112的控制器而引起的任何故障。如果未检测到故障,或者至少没有迁移之前在源集群400中尚未发生的其他故障,则可以逐渐增加提供给目的主节点1112的控制器的控制器锁的比例。此外,为了确保在对控制器锁分配进行调整(诸如从1%锁调整到2%锁分配)时,没有对象由两个控制器操纵,可以将控制器配置维持在前一阶段它们已经控制的对象上的锁。最终,可以将所有控制器锁提供给目的主节点1112的控制器,并且此时,在源主节点1111处不再有任何控制器活动。
此时,可选地,协调器1114可以切换任何其他剩余的附件。例如,对象可以由目的主节点1112的附加组件而不是源主节点1111的附加组件来处理。示例性附加组件可以包括用户界面,诸如仪表板、域名系统(DNS)服务器等。可选地,可以如上针对API服务器和控制器所述,在分阶段部署中切换附加组件。
一旦完成了从源环境到目的环境的部署,就可以开始源主节点1111的关闭过程。例如,可以停止源主节点1111与目的主节点1112之间的数据库的任何桥接、同步或迁移。此外,PD可以从源主节点1111分离,然后可以删除源主节点1111。一旦源主节点1111被破坏,则协调器1114可以将成功完成的迁移报告给云。
除了集群控制平面的迁移之外,还可以为工作负载执行实时迁移。图12是示出用于集群中的工作负载从一个环境到另一环境的示例性实时迁移的时序图。图12示出了在第一源集群的节点上的旧容器荚1201、第二目的集群的节点上创建的新容器荚1202以及两个集群的集群控制平面1203处发生的各种动作。容器荚可以被配置在如图4或9中的任意一个所示的工作节点上,例如,旧容器荚1201可以被配置在源集群400的节点910上,而新容器荚1202可以被配置在集群500的节点950上。尽管示出了涉及仅一个旧容器荚1201和仅一个新容器荚1202的示例性操作,但可以对源集群和目的集群中的任何数量的容器荚对进行这种操作。控制平面1203可以包括来自目的集群和源集群两者的控制平面的组件,诸如图4-7中所示的那些。该时序图可以在系统上例如由图2或图3所示的一个或多个处理器执行。
参考图12,当旧容器荚1201仍在源集群的节点上运行时,集群控制平面1203可以调度新容器荚1202。例如,可以由目的集群500的控制器调度新容器荚1202。集群控制平面1203可以记录旧容器荚1201的状态,然后将这些状态发送到新容器荚1202。集群控制平面1203可以暂停旧容器荚1201的执行。然后,集群控制平面1203可以复制旧容器荚1201的状态的任何改变,并且将这些改变发送到新容器荚1202。然后,集群控制平面1203可以恢复容器荚1202的执行。
一旦容器荚1202开始执行,集群控制平面1203可以将网络流量(诸如来自针对旧容器荚1201的应用或网站的请求)转发到新容器荚1202。例如,可以通过如参考图9所述的全局负载均衡器执行分配。一旦工作负载迁移完成,就可以关闭到旧容器荚1201的连接。然后可以删除旧容器荚1201。更进一步,在实时工作负载迁移期间,可以如图10所示,执行工作负载存储的实时迁移。例如,可以在请求到工作负载的实时迁移期间执行工作负载存储的实时迁移。
如上所述,可以在实时迁移期间和/或之后监视目的集群的故障。这样,图13示出了可以基于实时迁移是成功还是失败而采取的示例性进一步动作。如所示,可以由指示协调器1114的云平台1311启动从源环境到目的环境的改变。然后,云平台1311可以指示云控制平面1312启动一个或多个新目的VM以迁移。如果协调器1114在向云平台1311迁移期间或之后报告故障,则云平台1311可以指示协调器1114停止或暂停迁移。另外,可以生成包括关于所检测的故障的信息的输出。例如,可以向云管理员、用户等显示该信息。
替代地或附加地,云平台1311可以指示协调器1114发起从目的环境改变回源环境。一旦回滚完成,云平台1311可以指示云控制平面1312删除为迁移创建的目的VM。然后可以例如由云平台1311的管理员执行错误报告、诊断和修复。一旦修复了错误,云平台1311就可以指示协调器1114重新启动从源环境改变到目的环境。重要的是,即使迁移失败并回滚,集群上运行的工作负载也不会遭受非常小的中断。
进一步如所示,在一些情况下,协调器1114可以报告成功的迁移。在这种情况下,如果源VM与云平台1311在同一云上,则云平台1311可以指示云控制平面1312删除源VM。如果源VM与云平台1311在不同的云上,则云平台1311可能无法对源VM做任何事情。在这种情况下,用户可能需要指示其他云删除这些源VM。
尽管图13示出了许多示例性动作,但是并非所有动作都需要被执行,并且顺序可以不同。例如,是否开始完整的回滚或仅暂停迁移以修复某些故障可以基于故障严重性的确定,或者故障在迁移之前是否已经存在。此外,就此而言,故障的报告、诊断和修复可能会附加地或替代地在暂停迁移后发生,并且目的VM可能不会被删除,而是保留下来,使得只要修复错误,就可以恢复迁移。
图14是可以由诸如一个或多个处理器212、222的一个或多个处理器执行的流程图1400。例如,处理器212、222可以如流程图中所示,接收数据并做出各种确定。图14示出了从第一集群的控制平面到第二集群的控制平面的示例性实时迁移。参考图14,在框1410,接收对一个或多个集群控制平面的请求,其中,一个或多个集群控制平面可以包括第一集群的控制平面和第二集群的控制平面。在框1420,将所接收的请求的预定部分分配给第二集群的控制平面,并将所接收的请求的剩余部分分配给第一集群的控制平面。在框1430,使用第二集群的控制平面来处理请求的预定部分。在框1440,在处理请求的预定部分时,检测第二集群中是否存在故障。在框1450,基于在第二集群中未检测到故障,在预定阶段增加分配给第二集群的控制平面的请求的预定部分,直到将所有所接收的请求分配给第二集群的控制平面。
该技术之所以具有优势,是因为它提供了用于更新集群或修改集群环境的其他方面的逐步且受监视的部署过程。分阶段和固定的部署过程在出现问题时提供更多机会以停止升级,从而防止大规模损坏。在同时运行的源集群和目的集群之间的工作负载流量分配可以减少或消除升级期间的停机时间。此外,由于工作负载流量分配,从客户端的角度来看,它可能看起来像在实时迁移期间仅存在一个集群。如果升级失败,系统将提供回滚选项,因为除非成功完成升级,否则不会删除源集群。该技术还提供了使得在位于不同物理位置的集群之间以及在云中之一不支持实时迁移的不同云上操作的集群之间能够实时迁移的特征。
除非另有说明,否则前述替代示例不是互相排斥的,而是可以以各种组合实现以实现独特的优点。由于可以在不背离权利要求所限定的主题的情况下利用以上讨论的特征的这些和其他变形以及组合,因此,对实施例的前述描述应当通过示例的方式而不是通过由权利要求限定的主题的限制的方式进行。另外,本文描述的示例的提供以及用短语表达为“诸如”、“包括”等的用语不应当被解释为将权利要求的主题限制于具体示例;相反,这些示例仅旨在示例许多可能的实施例之一。此外,不同附图中的相同附图标记可以标识相同或相似的元件。
Claims (20)
1.一种用于从第一集群迁移到第二集群的方法,包括:
通过一个或多个处理器接收对一个或多个集群控制平面的请求,其中,所述一个或多个集群控制平面包括所述第一集群的控制平面和所述第二集群的控制平面;
通过所述一个或多个处理器将所接收的请求中的预定部分分配给所述第二集群的控制平面,并且将所接收的请求中的剩余部分分配给所述第一集群的控制平面;
通过所述一个或多个处理器使用所述第二集群的控制平面处理所述预定部分的请求;
在处理所述预定部分的请求的同时,通过所述一个或多个处理器检测在所述第二集群中是否存在故障;以及
通过所述一个或多个处理器基于在所述第二集群中未检测到故障,在预定阶段增加分配给所述第二集群的控制平面的所述预定部分的请求,直到将所有所接收的请求都被分配给所述第二集群的控制平面为止。
2.根据权利要求1所述的方法,其中,所接收的请求是由所述第一集群的集群桥接聚合器和所述第二集群的集群桥接聚合器来分配的,其中,所述第一集群和所述第二集群在同一云上操作。
3.根据权利要求1所述的方法,其中,所接收的请求包括来自在所述第一集群中运行的工作负载的请求,其中,来自所述工作负载的请求被所述第一集群中注入的边车容器拦截并且被路由到所述第二集群的集群桥接聚合器,其中,所述第一集群和第二集群在不同的云上操作。
4.根据权利要求1所述的方法,其中,对所接收的请求的分配是在多个预定阶段中执行的,其中,所接收的请求是基于以下一项或多项而被定向到所述第一集群或所述第二集群的:用户代理、用户帐户、用户组、对象类型、资源类型、对象的位置或请求的发送者的位置。
5.根据权利要求1所述的方法,进一步包括:
通过所述一个或多个处理器将所述第二集群的控制平面中的一个或多个数据库联接到包括所述第一集群的控制平面中的一个或多个数据库的仲裁集,其中,所述第一集群和所述第二集群在同一云上运行。
6.根据权利要求1所述的方法,进一步包括:
通过所述一个或多个处理器使所述第二集群的控制平面中的一个或多个数据库与所述第一集群的控制平面中的一个或多个数据库同步,其中,所述第一集群和所述第二集群在不同的云上操作。
7.根据权利要求1所述的方法,进一步包括:
通过所述一个或多个处理器将预定部分的对象锁分配给所述第二集群的一个或多个控制器,并且将剩余部分的对象锁分配给所述第一集群的一个或多个控制器;
通过所述一个或多个处理器致动由所述第二集群的所述一个或多个控制器锁定的对象;
在致动所述锁定的对象的同时,通过所述一个或多个处理器检测在所述第二集群中是否存在故障;
通过所述一个或多个处理器基于在所述第二集群未检测到故障,增加分配给所述第二集群的所述一个或多个控制器的所述预定部分的对象锁。
8.根据权利要求1所述的方法,进一步包括:
通过所述一个或多个处理器确定所有接收的请求都被分配给所述第二集群的控制平面;
通过所述一个或多个处理器基于所述确定,删除所述第一集群的控制平面,其中,所述第一集群和所述第二集群在同一云上操作。
9.根据权利要求1所述的方法,进一步包括:
通过所述一个或多个处理器基于在所述第二集群中检测到一个或多个故障,停止将所接收的请求分配给所述第二集群的控制平面。
10.根据权利要求1所述的方法,进一步包括:
通过所述一个或多个处理器基于在所述第二集群中检测到一个或多个故障,生成包括关于所检测到的故障的信息的输出。
11.根据权利要求1所述的方法,进一步包括:
通过所述一个或多个处理器基于在所述第二集群中检测到故障,减少分配给所述第二集群的控制平面的所述预定部分的请求,直到将所有接收到的请求分配给所述第一集群的控制平面为止。
12.根据权利要求1所述的方法,进一步包括:
通过所述一个或多个处理器确定所有接收到的请求都分配给所述第一集群的控制平面;
通过所述一个或多个处理器基于所述确定,删除所述第二集群。
13.根据权利要求1所述的方法,进一步包括:
通过所述一个或多个处理器调度所述第二集群中的容器荚;
通过所述一个或多个处理器记录所述第一集群中的容器荚的状态;
通过所述一个或多个处理器将所记录的所述第一集群中的所述容器荚的状态发送到所述第二集群中的所述容器荚。
14.根据权利要求13所述的方法,进一步包括:
通过所述一个或多个处理器暂停由所述第一集群中的所述容器荚执行工作负载;
通过所述一个或多个处理器复制自从记录所述第一集群中的所述容器荚的状态以来的所述第一集群中的所述容器荚的状态变化;
通过所述一个或多个处理器将所复制的状态变化发送到所述第二集群中的所述容器荚;
通过所述一个或多个处理器恢复由所述第二集群中的所述容器荚执行工作负载;
通过所述一个或多个处理器将定向到所述第一集群中的所述容器荚的流量转发到所述第二集群中的所述容器荚;
通过所述一个或多个处理器删除所述第一集群中的所述容器荚。
15.根据权利要求1所述的方法,进一步包括:
通过所述一个或多个处理器确定所述第一集群中的第一工作节点具有要移动到所述第二集群的一个或多个容器荚;
通过所述一个或多个处理器阻止所述第一集群中的第一工作节点添加新容器荚;
通过所述一个或多个处理器将所述第一工作节点中的一个或多个容器荚中的一些容器荚移动到所述第二集群中的一个或多个现有工作节点;
通过所述一个或多个处理器确定所述第二集群中的所述一个或多个现有工作节点中没有更多容量;
通过所述一个或多个处理器在所述第二集群中创建一个或多个附加工作节点;
通过所述一个或多个处理器将所述第一工作节点中的剩余一个或多个容器荚移动到所述第二集群中的所述一个或多个附加工作节点;
通过所述一个或多个处理器确定所述第一集群中的所述第一工作节点不再具有要移动到所述第二集群的容器荚;
通过所述一个或多个处理器删除所述第一集群中的第一工作节点。
16.根据权利要求13所述的方法,进一步包括:
通过所述一个或多个处理器接收对一个或多个工作负载的请求,其中,所述一个或多个工作负载包括第一集群中运行的工作负载和第二集群中运行的工作负载;
通过所述一个或多个处理器使用至少一个全局负载均衡器,将所接收的请求分配给在所述第一集群中运行的工作负载和在所述第二集群中运行的工作负载之间的一个或多个工作负载。
17.根据权利要求1所述的方法,进一步包括:
通过所述一个或多个处理器确定在所述第二集群中运行的容器荚引用了所述第一集群的存储;
通过所述一个或多个处理器在所述第二集群中创建存储,其中,所述第一集群的存储和所述第二集群的存储位于不同的位置;
通过所述一个或多个处理器使用存储驱动器在所述第一集群的存储中读取与所述第二集群中的所述容器荚有关的数据。
18.根据权利要求17所述的方法,进一步包括:
通过所述一个或多个处理器将所述第二集群中的所述容器荚所做的改变写入所述第二集群的存储;
通过所述一个或多个处理器将所述第二集群中的所述容器荚未改变的数据从所述第一集群的存储复制到所述第二集群的存储。
19.一种用于从第一集群迁移到第二集群的系统,所述系统包括一个或多个处理器,所述一个或多个处理器被配置为:
接收对一个或多个集群控制平面的请求,其中,所述一个或多个集群控制平面包括所述第一集群的控制平面和所述第二集群的控制平面;
将所接收的请求的预定部分分配给所述第二集群的控制平面,并且将所接收的请求的剩余部分分配给所述第一集群的控制平面;
使用所述第二集群的控制平面处理所述预定部分的请求;
在处理所述预定部分的请求的同时,检测所述第二集群中是否存在故障;以及
基于在所述第二集群中未检测到故障,在预定阶段增加分配给所述第二集群的控制平面的所述预定部分的请求,直到将所有所接收的请求分配给所述第二集群的控制平面为止。
20.根据权利要求19所述的系统,其中,所述第一集群和所述第二集群是以下至少一项:操作不同的软件版本、在不同的位置处操作、在由不同的云提供商提供的不同的云上操作、在其中至少一个云为用户的本地数据中心的不同的云上操作、以及连接到不同的网络。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410728068.5A CN118733191A (zh) | 2019-09-13 | 2020-09-11 | 容器化环境中的集群的实时迁移 |
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201962899794P | 2019-09-13 | 2019-09-13 | |
US62/899,794 | 2019-09-13 | ||
US16/579,945 US10965752B1 (en) | 2019-09-13 | 2019-09-24 | Live migration of clusters in containerized environments |
US16/579,945 | 2019-09-24 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410728068.5A Division CN118733191A (zh) | 2019-09-13 | 2020-09-11 | 容器化环境中的集群的实时迁移 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112099918A true CN112099918A (zh) | 2020-12-18 |
CN112099918B CN112099918B (zh) | 2024-06-14 |
Family
ID=72474097
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010954736.8A Active CN112099918B (zh) | 2019-09-13 | 2020-09-11 | 容器化环境中的集群的实时迁移 |
CN202410728068.5A Pending CN118733191A (zh) | 2019-09-13 | 2020-09-11 | 容器化环境中的集群的实时迁移 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410728068.5A Pending CN118733191A (zh) | 2019-09-13 | 2020-09-11 | 容器化环境中的集群的实时迁移 |
Country Status (5)
Country | Link |
---|---|
US (3) | US10965752B1 (zh) |
EP (1) | EP3792760B1 (zh) |
KR (3) | KR102430869B1 (zh) |
CN (2) | CN112099918B (zh) |
CA (1) | CA3092364C (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112689015A (zh) * | 2020-12-24 | 2021-04-20 | 北京顺达同行科技有限公司 | 跨集群服务发现实现集群迁移的方法、系统及计算机设备 |
CN112817611A (zh) * | 2021-01-29 | 2021-05-18 | 深圳忆联信息系统有限公司 | 系统测试异常环境的拦截方法、装置、计算机设备及存储介质 |
CN113127203A (zh) * | 2021-04-25 | 2021-07-16 | 华南理工大学 | 面向云边计算的深度学习分布式编译器及构造方法 |
CN113485981A (zh) * | 2021-08-12 | 2021-10-08 | 北京青云科技股份有限公司 | 数据迁移方法、装置、计算机设备和存储介质 |
CN113596187A (zh) * | 2021-06-25 | 2021-11-02 | 新浪网技术(中国)有限公司 | 域名配置管理系统 |
EP4016299A1 (en) * | 2020-12-21 | 2022-06-22 | Amadeus S.A.S. | A method and a system for managing the computing resources in data regions |
CN114765610A (zh) * | 2021-01-15 | 2022-07-19 | 北京小米移动软件有限公司 | 云平台、基于云的资源管理系统及基于云的交互方法 |
CN115640169A (zh) * | 2022-12-22 | 2023-01-24 | 苏州浪潮智能科技有限公司 | 保障主集群停止提供服务的方法、系统、设备和存储介质 |
CN118381822A (zh) * | 2024-06-27 | 2024-07-23 | 腾讯科技(深圳)有限公司 | 一种业务迁移方法、装置、系统、电子设备和存储介质 |
Families Citing this family (32)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11734038B1 (en) * | 2019-11-21 | 2023-08-22 | Amazon Technologies, Inc | Multiple simultaneous volume attachments for live migration between cloud regions and edge locations |
US11573839B1 (en) | 2019-11-21 | 2023-02-07 | Amazon Technologies, Inc. | Dynamic scheduling for live migration between cloud regions and edge locations |
CN112887355B (zh) * | 2019-11-29 | 2022-09-27 | 北京百度网讯科技有限公司 | 异常服务器的业务处理方法及装置 |
US11907905B2 (en) | 2020-04-01 | 2024-02-20 | VMware LLC | Namespace management techniques for facilitating multi-cluster application development |
US11620166B2 (en) * | 2020-04-14 | 2023-04-04 | Vmware, Inc. | Communications framework for multi-cluster management systems |
US11182219B2 (en) | 2020-04-14 | 2021-11-23 | Vmware, Inc. | SaaS infrastructure for flexible multi-tenancy |
US11755385B2 (en) * | 2020-05-29 | 2023-09-12 | Vmware, Inc. | Cross-cluster load balancer |
US11178011B1 (en) * | 2020-07-16 | 2021-11-16 | Micro Focus Llc | Identifying representative entities in clusters for it management |
EP4193302A1 (en) | 2020-08-05 | 2023-06-14 | Avesha, Inc. | Performing load balancing self adjustment within an application environment |
US11204818B1 (en) * | 2021-01-28 | 2021-12-21 | Sap Se | Cloud application programming model |
US11238206B1 (en) * | 2021-03-26 | 2022-02-01 | Xilinx, Inc. | Partition wire assignment for routing multi-partition circuit designs |
US12013974B2 (en) * | 2021-03-31 | 2024-06-18 | Lenovo Enterprise Solutions (Singapore) Pte. Ltd. | Provisioning a computing subsystem with disaggregated computing hardware resources selected in compliance with a physical location requirement of a workload |
US20220350675A1 (en) | 2021-05-03 | 2022-11-03 | Avesha, Inc. | Distributed computing system with multi tenancy based on application slices |
WO2022235624A1 (en) * | 2021-05-03 | 2022-11-10 | Avesha, Inc. | Controlling placement of workloads of an application within an application environment |
US11922183B2 (en) | 2021-06-23 | 2024-03-05 | Microsoft Technology Licensing, Llc. | Cross-platform deployment of application |
WO2023281295A1 (en) * | 2021-07-06 | 2023-01-12 | Telefonaktiebolaget Lm Ericsson (Publ) | Stateful endpoint mobility in a federated cloud computing system |
US20230028837A1 (en) * | 2021-07-23 | 2023-01-26 | Vmware, Inc. | Scaling for split-networking datapath |
US11838206B2 (en) | 2021-07-23 | 2023-12-05 | Vmware, Inc. | Edge node with datapath split between pods |
CN113923216B (zh) * | 2021-09-29 | 2023-12-15 | 阿里巴巴(中国)有限公司 | 一种分布式集群限流系统及方法和分布式集群节点 |
KR20230067224A (ko) | 2021-11-09 | 2023-05-16 | 주식회사 나눔기술 | 다중 엣지 서버 환경에서 클러스터 장치들 간의 서비스 데이터의 이동 및 배치를 제어할 수 있는 컨테이너 오케스트레이션 시스템 |
US11909818B2 (en) * | 2021-11-19 | 2024-02-20 | Avaya Management L.P. | Reaching a quorum with a number of master nodes |
US11656957B1 (en) | 2021-12-01 | 2023-05-23 | International Business Machines Corporation | Managing nodes of a DBMS |
US11706105B2 (en) * | 2021-12-14 | 2023-07-18 | International Business Machines Corporation | Selecting low priority pods for guaranteed runs |
WO2023201179A1 (en) * | 2022-04-12 | 2023-10-19 | Netapp, Inc. | Distributed control plane for reformatting communication between a container orchestration platform and a distributed storage architecture |
US11775204B1 (en) | 2022-04-12 | 2023-10-03 | Netapp, Inc. | Distributed control plane for facilitating communication between a container orchestration platform and a distributed storage architecture |
US11789660B1 (en) | 2022-04-12 | 2023-10-17 | Netapp, Inc. | Distributed control plane tracking object ownership changes within a distributed storage architecture |
KR20230174137A (ko) * | 2022-06-20 | 2023-12-27 | 삼성전자주식회사 | 컨테이너 기반 다중 클러스터 환경에서 데이터 동기화를 위한 방법 및 장치 |
US20240028322A1 (en) * | 2022-07-21 | 2024-01-25 | Vmware, Inc. | Coordinated upgrade workflow for remote sites of a distributed container orchestration system |
US20240045739A1 (en) * | 2022-08-08 | 2024-02-08 | Morgan Stanley Services Group Inc. | Dynamic api gateway routing in response to backend health metrics |
WO2024123350A1 (en) * | 2022-12-09 | 2024-06-13 | Robin Systems, Inc | Batch upgrade management in network computing environments |
WO2024123351A1 (en) * | 2022-12-09 | 2024-06-13 | Robin Systems, Inc. | Managing tenant users in coordination with identity provider |
WO2024155311A1 (en) * | 2023-01-17 | 2024-07-25 | OpenLegacy Technologies Ltd. | Partial migration of applications to the cloud |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100299666A1 (en) * | 2009-05-25 | 2010-11-25 | International Business Machines Corporation | Live Migration of Virtual Machines In a Computing environment |
KR20120063662A (ko) * | 2010-12-08 | 2012-06-18 | 텔코웨어 주식회사 | 로드 밸런서 및 이를 이용한 부하 분산 관리 방법 |
US20120222041A1 (en) * | 2011-02-28 | 2012-08-30 | Jason Allen Sabin | Techniques for cloud bursting |
US20140059232A1 (en) * | 2012-08-24 | 2014-02-27 | Hasso-Plattner-Institut Fuer Softwaresystemtechnik Gmbh | Robust tenant placement and migration in database-as-a-service environments |
US20160239350A1 (en) * | 2015-02-12 | 2016-08-18 | Netapp, Inc. | Load balancing and fault tolerant service in a distributed data system |
CN106020934A (zh) * | 2016-05-24 | 2016-10-12 | 浪潮电子信息产业股份有限公司 | 一种基于虚拟集群在线迁移的优化部署方法 |
CN106445473A (zh) * | 2015-08-06 | 2017-02-22 | 华为技术有限公司 | 一种容器部署方法及装置 |
US20170123929A1 (en) * | 2015-11-02 | 2017-05-04 | Chicago Mercantile Exchange Inc. | Clustered Fault Tolerance Systems and Methods Using Load-Based Failover |
US20170364423A1 (en) * | 2016-06-21 | 2017-12-21 | EMC IP Holding Company LLC | Method and apparatus for failover processing |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7734726B2 (en) * | 2001-11-27 | 2010-06-08 | International Business Machines Corporation | System and method for dynamically allocating processing on a network amongst multiple network servers |
US20060053216A1 (en) * | 2004-09-07 | 2006-03-09 | Metamachinix, Inc. | Clustered computer system with centralized administration |
US20060123111A1 (en) * | 2004-12-02 | 2006-06-08 | Frank Dea | Method, system and computer program product for transitioning network traffic between logical partitions in one or more data processing systems |
US9152448B2 (en) | 2012-05-11 | 2015-10-06 | Vmware, Inc. | Performance of load balancing modules with migration awareness |
US9934056B2 (en) * | 2014-01-06 | 2018-04-03 | Red Hat Israel, Ltd. | Non-blocking unidirectional multi-queue virtual machine migration |
WO2015126411A1 (en) * | 2014-02-21 | 2015-08-27 | Hewlett-Packard Development Company, L.P. | Migrating cloud resources |
US10108465B1 (en) * | 2016-06-23 | 2018-10-23 | EMC IP Holding Company LLC | Automated cloud service evaluation and workload migration utilizing standardized virtual service units |
JP7203096B2 (ja) * | 2017-09-30 | 2023-01-12 | オラクル・インターナショナル・コーポレイション | デプロイされたコンテナプラットフォームにおけるインスタンスのリアルタイムデバッグ |
US11238012B1 (en) * | 2018-05-15 | 2022-02-01 | Splunk Inc. | Log data extraction from data chunks of an isolated execution environment |
US11055010B2 (en) * | 2019-09-05 | 2021-07-06 | Microsoft Technology Licensing, Llc | Data partition migration via metadata transfer and access attribute change |
-
2019
- 2019-09-24 US US16/579,945 patent/US10965752B1/en active Active
-
2020
- 2020-09-04 KR KR1020200113106A patent/KR102430869B1/ko active IP Right Grant
- 2020-09-08 CA CA3092364A patent/CA3092364C/en active Active
- 2020-09-11 EP EP20195669.5A patent/EP3792760B1/en active Active
- 2020-09-11 CN CN202010954736.8A patent/CN112099918B/zh active Active
- 2020-09-11 CN CN202410728068.5A patent/CN118733191A/zh active Pending
-
2021
- 2021-02-24 US US17/183,848 patent/US11563809B2/en active Active
-
2022
- 2022-08-04 KR KR1020220097293A patent/KR102628362B1/ko active Application Filing
- 2022-12-21 US US18/086,201 patent/US20230208914A1/en active Pending
-
2024
- 2024-01-18 KR KR1020240008001A patent/KR20240013827A/ko active Application Filing
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100299666A1 (en) * | 2009-05-25 | 2010-11-25 | International Business Machines Corporation | Live Migration of Virtual Machines In a Computing environment |
KR20120063662A (ko) * | 2010-12-08 | 2012-06-18 | 텔코웨어 주식회사 | 로드 밸런서 및 이를 이용한 부하 분산 관리 방법 |
US20120222041A1 (en) * | 2011-02-28 | 2012-08-30 | Jason Allen Sabin | Techniques for cloud bursting |
US20140059232A1 (en) * | 2012-08-24 | 2014-02-27 | Hasso-Plattner-Institut Fuer Softwaresystemtechnik Gmbh | Robust tenant placement and migration in database-as-a-service environments |
US20160239350A1 (en) * | 2015-02-12 | 2016-08-18 | Netapp, Inc. | Load balancing and fault tolerant service in a distributed data system |
CN106445473A (zh) * | 2015-08-06 | 2017-02-22 | 华为技术有限公司 | 一种容器部署方法及装置 |
US20170123929A1 (en) * | 2015-11-02 | 2017-05-04 | Chicago Mercantile Exchange Inc. | Clustered Fault Tolerance Systems and Methods Using Load-Based Failover |
CN106020934A (zh) * | 2016-05-24 | 2016-10-12 | 浪潮电子信息产业股份有限公司 | 一种基于虚拟集群在线迁移的优化部署方法 |
US20170364423A1 (en) * | 2016-06-21 | 2017-12-21 | EMC IP Holding Company LLC | Method and apparatus for failover processing |
Non-Patent Citations (2)
Title |
---|
GEORGE JOHN 等: "Blue/Green Deployments on AWS", HTTPS://D1.AWSSTATIC.COM/WHITEPAPERS/AWS_BLUE_GREEN_DEPLOYMENTS.PDF * |
汤小春 等: "数据流计算环境下的集群资源管理技术", 大数据, no. 03 * |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP4016299A1 (en) * | 2020-12-21 | 2022-06-22 | Amadeus S.A.S. | A method and a system for managing the computing resources in data regions |
US11907769B2 (en) | 2020-12-21 | 2024-02-20 | Amadeus S.A.S. | Method and a system for managing the computing resources in data regions |
CN112689015A (zh) * | 2020-12-24 | 2021-04-20 | 北京顺达同行科技有限公司 | 跨集群服务发现实现集群迁移的方法、系统及计算机设备 |
CN114765610A (zh) * | 2021-01-15 | 2022-07-19 | 北京小米移动软件有限公司 | 云平台、基于云的资源管理系统及基于云的交互方法 |
CN112817611A (zh) * | 2021-01-29 | 2021-05-18 | 深圳忆联信息系统有限公司 | 系统测试异常环境的拦截方法、装置、计算机设备及存储介质 |
CN112817611B (zh) * | 2021-01-29 | 2023-08-29 | 深圳忆联信息系统有限公司 | 系统测试异常环境的拦截方法、装置、计算机设备及存储介质 |
CN113127203A (zh) * | 2021-04-25 | 2021-07-16 | 华南理工大学 | 面向云边计算的深度学习分布式编译器及构造方法 |
CN113596187A (zh) * | 2021-06-25 | 2021-11-02 | 新浪网技术(中国)有限公司 | 域名配置管理系统 |
CN113596187B (zh) * | 2021-06-25 | 2023-05-05 | 新浪技术(中国)有限公司 | 域名配置管理系统 |
CN113485981A (zh) * | 2021-08-12 | 2021-10-08 | 北京青云科技股份有限公司 | 数据迁移方法、装置、计算机设备和存储介质 |
CN115640169A (zh) * | 2022-12-22 | 2023-01-24 | 苏州浪潮智能科技有限公司 | 保障主集群停止提供服务的方法、系统、设备和存储介质 |
CN118381822A (zh) * | 2024-06-27 | 2024-07-23 | 腾讯科技(深圳)有限公司 | 一种业务迁移方法、装置、系统、电子设备和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
US11563809B2 (en) | 2023-01-24 |
EP3792760A1 (en) | 2021-03-17 |
KR20210031829A (ko) | 2021-03-23 |
CA3092364A1 (en) | 2021-03-13 |
US20230208914A1 (en) | 2023-06-29 |
KR20240013827A (ko) | 2024-01-30 |
EP3792760B1 (en) | 2024-11-06 |
CN112099918B (zh) | 2024-06-14 |
US20210084103A1 (en) | 2021-03-18 |
KR20220113663A (ko) | 2022-08-16 |
US10965752B1 (en) | 2021-03-30 |
KR102628362B1 (ko) | 2024-01-24 |
KR102430869B1 (ko) | 2022-08-09 |
CN118733191A (zh) | 2024-10-01 |
US20210185125A1 (en) | 2021-06-17 |
CA3092364C (en) | 2023-10-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112099918B (zh) | 容器化环境中的集群的实时迁移 | |
US10855770B2 (en) | Deploying and managing containers to provide a highly available distributed file system | |
JP7391862B2 (ja) | 自動的に配備される情報技術(it)システム及び方法 | |
US11314687B2 (en) | Container data mover for migrating data between distributed data storage systems integrated with application orchestrators | |
US11663085B2 (en) | Application backup and management | |
US8473692B2 (en) | Operating system image management | |
US9817721B1 (en) | High availability management techniques for cluster resources | |
RU2653292C2 (ru) | Перенос служб через границы кластеров | |
US20200026786A1 (en) | Management and synchronization of batch workloads with active/active sites using proxy replication engines | |
US8316110B1 (en) | System and method for clustering standalone server applications and extending cluster functionality | |
CN112035293A (zh) | 虚拟机集群备份 | |
US8082344B2 (en) | Transaction manager virtualization | |
JP2015164067A (ja) | 複製されたデータインスタンスのプロビジョニングおよび管理 | |
SG189417A1 (en) | Upgrade of highly available farm server groups | |
US11588698B2 (en) | Pod migration across nodes of a cluster | |
SG189899A1 (en) | Machine manager service fabric | |
US11809735B1 (en) | Snapshot management for cloud provider network extensions | |
CN114996352B (zh) | 数据库管理系统及方法 | |
US11880586B2 (en) | Storage array remote replication | |
CN112468349B (zh) | 适用于FT2000+平台部署Ceph的主节点 | |
US11853317B1 (en) | Creating replicas using queries to a time series database | |
WO2024042396A1 (en) | Integrating mirrored storage to remote replication site | |
CN115878269A (zh) | 集群迁移方法、相关装置及存储介质 | |
CN112433811A (zh) | 虚拟硬盘更换方法、装置、设备、系统及可读存储介质 | |
Vugt et al. | Creating an Open Source SAN |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |