CN110520843B - 集群环境中高度可用的有状态容器 - Google Patents
集群环境中高度可用的有状态容器 Download PDFInfo
- Publication number
- CN110520843B CN110520843B CN201880018234.5A CN201880018234A CN110520843B CN 110520843 B CN110520843 B CN 110520843B CN 201880018234 A CN201880018234 A CN 201880018234A CN 110520843 B CN110520843 B CN 110520843B
- Authority
- CN
- China
- Prior art keywords
- application
- virtual
- container
- state data
- computing environment
- 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.)
- Active
Links
Classifications
-
- 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/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/202—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
- G06F11/2023—Failover techniques
- G06F11/203—Failover techniques using migration
-
- 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/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/202—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
- G06F11/2041—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant with more than one idle spare processing component
-
- 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/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/202—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
- G06F11/2046—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant where the redundant components share persistent storage
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/302—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a software system
-
- 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
-
- 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/0803—Configuration setting
-
- 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
- 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
-
- 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/45591—Monitoring or debugging support
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
- G06F3/0637—Permissions
-
- 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/1036—Load balancing of requests to servers for services different from user content provisioning, e.g. load balancing across domain name servers
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Quality & Reliability (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Environmental & Geological Engineering (AREA)
- Hardware Redundancy (AREA)
- Stored Programmes (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
一种用于分布式计算环境中的有状态容器的***,包括具有通过网络通信连接的多个计算节点的服务器集群。所述服务器集群内的每个计算节点包括一个或多个虚拟主机、在每个虚拟主机之上操作的一个或多个容器以及在容器之上操作的应用程序实例,其通信地耦合到永久存储介质。每个虚拟主机实例化并绑定到唯一的虚拟网际协议地址,该地址链接到驻留应用程序状态数据的永久存储介质。
Description
相关申请
本申请涉及并要求2018年3月23日提交的美国非临时专利申请15/933,885的优先权,该15/933,885申请要求2017年3月23日提交的美国专利申请62/475,380的优先权,两者的全部内容通过引用结合于此,用于所有目的,如同在此完全阐述一样。
背景技术
发明领域
本发明的实施例总体上涉及集群环境中的应用程序的数据可用性,并且更具体地涉及容器化集群环境中的状态计算。
相关背景
应用程序通常使用配置为集群的多个互连计算机进行部署。集群配置可以为***带来各种好处,例如提高可扩展性和可用性。通过使***能够跨集群的多个节点分布负载,可以增强可伸缩性。例如,可以通过在每个节点上执行单独的应用程序实例来使用集群部署Web应用程序。由于每个应用程序实例都能够处理所有的Web请求,因此集群享有集群中所有节点的组合计算资源。通常,集群包括负载均衡器,其接收网络请求,应用一些负载平衡算法来决定哪个服务器实例应该为请求提供服务,并将请求转发到确定的节点。
集群配置可能增强的另一个属性是可用性。对于在非集群环境中执行的Web应用程序,服务器故障会导致Web应用程序不可用,直到修复服务器为止。相反,集群环境启用故障转移技术,从而当一个节点发生故障(主服务器)时,另一个节点(恢复/故障转移服务器)可以为故障的主节点的负载提供服务。努力实施故障转移技术,使服务器故障对客户端透明。
为Web应用程序实现透明故障转移的一个难点是服务器通常保留与每个客户端/服务器交换相对应的数据。这种状态数据的交换是服务器在客户端使用应用程序期间,而不是仅在一次交换的持续时间内,必须保留的数据。例如,电子商务Web应用程序可以维护会话数据,该会话数据指示用户已经存储在其购物车中的项目。***必须跨多个请求保留此类数据,以便用户的购物车保留项目,即使在用户导航到新页面之后也是如此。要实现透明故障转移,恢复服务器必须能够访问客户端的状态数据。
为存储此类数据的Web应用程序实现透明故障转移具有不同方法。在某些***中,服务器将此类数据保存到永久后端存储,例如共享数据库或文件***。如果服务器或应用程序崩溃(故障),则恢复服务器可以从共享的永久存储介质访问保存的数据。遗憾的是,将与客户端/服务器交换或状态数据相关的数据写入共享永久存储通常会造成显着的性能损失。此外,实现永久性存储意味着额外的成本和复杂性。
实现透明故障转移的另一种技术是在内存中复制状态数据。在此类***中,服务器将其状态数据备份到集群中的一个或多个其他服务器(备份服务器)上。如果节点发生故障,负载均衡器会将下一个客户端请求路由到另一个服务器,然后该服务器使用某些协议来定位备份服务器和相应的状态数据。服务器可以从备份服务器检索状态数据,也可以将客户端请求转发给备份服务器。无论哪个服务器处理请求,还会选择一个或多个新的备份服务器来复制会话数据。
当状态数据被复制到集群中的其他服务器时,单个服务器上的不同组件可以以彼此独立的方式复制它们各自的会话数据。因此,状态数据的不同部分可以被复制到不同的备份服务器。当服务器上的一部分状态数据被复制到一个备份服务器而另一部分状态数据被复制到另一个备份服务器时,从服务器的故障中恢复可能需要额外的时间和资源。因此,仍然需要在分布式计算环境中永久存储状态数据。
通过使用虚拟环境和应用程序容器,集群环境中的可用性和可伸缩性也得到了增强。容器用于将一组进程与操作***上的其他进程隔离。
容器镜像是一个轻量级、独立的、可执行的软件包,其包含运行它所需的一切:代码、运行时间、***工具、***库、设置。随着容器将软件与周围环境隔离,无论其运行环境如何,容器化软件都致力于运行相同的软件。例如,通过使用容器,可以增强开发和模拟环境之间的差异以及减少在同一基础架构上运行不同软件的客户端之间的冲突。从本质上讲,容器是应用程序层的抽象,它将代码和依赖关系打包在一起。多个容器可以在同一台机器上运行(虚拟或实际),并与其他容器共享操作***内核,每个容器都运行一个独立的进程。
通过利用现有的操作***功能,容器可以维护自己的操作***、文件***结构和网络接口的私有视图。虽然容器与其他进程共享操作***内核,但它们仍然可以在某种程度上限制使用一定量的资源,例如中央处理单元(CPU),随机存取存储器(RAM)或输入/输出(I/O)设备。容器已被证明是有利的,因为它们通常具有小的***占用。也就是说,容器在其中包含的任何应用之上和之外提供相对薄的封装层。因此,容器的实例化和部署相对较快。多个容器可以在同一台机器上运行,并与其他容器共享操作***内核,每个容器作为独立进程运行。
图1A和1B描绘了容器的典型实施方式。图1A示出了应用程序实例化所在的单个容器。一个或多个应用程序110可以作为实例130在容器120之上操作。类似地,图1B示出了分布式计算环境中的容器的实现。在这种情况下,多个容器120可用于一个或多个应用程序110的实例130。***在应用程序110和容器120之间的负载平衡器140管理应用程序110到分布式计算环境内的节点的分发。
另一方面,虚拟机的部署速度往往比容器慢。这是因为虚拟机是物理计算机的软件抽象。虚拟机通常包括客户机操作***和虚拟硬件平台。这些虚拟化***组件不存在于容器中。然而,虚拟机在某些情况下是有利的,因为相对于容器之间可实现的隔离程度,可以在虚拟机之间实现更高程度的隔离和安全性。
术语“虚拟化”在计算机和操作***以及存储和网络域中具有许多含义。可以虚拟化硬件(例如,CPU和***设备),以便通过添加软件层(例如,操作***)来“隐藏”如何与用户的硬件接口的细节。同样,可以虚拟化操作***,以便通过添加软件层(例如,管理程序)来“隐藏”如何与操作***交互的细节。用户可以编写代码来执行某些功能,而不必强烈依赖底层基础设施,例如特定操作***和/或特定供应商和/或特定硬件配置。
可以通过提供专门配置的“控制”虚拟机来抽象与底层存储设施和网络配置的接口有关的细节,并且用户可以编写在另一个“用户”虚拟机中运行的代码。这种抽象产生了包含数百或数千个节点的非常大的虚拟化***,并且可以由与配置面板接口的操作员配置和管理数百或数千(或数百万)个用户虚拟机,以配置所述数百或数千(或数百万)个虚拟机。
容器也可以部署在虚拟***中。如上所述,容器可以被配置为实现特定功能而不依赖于完全配置的硬件和/或软件平台。例如,可以定义容器以对某些输入执行某些简单操作并生成输出。在这种情况下,容器可能非常轻量级,只需要一种接收输入的方法,一种执行简单操作的方法,以及一种提供输出的方法。在这种情况下,管理程序和/或操作***的“量级”是不必要的。在某些情况下,可能会定义容器以提供稍微复杂的服务,在这种情况下,容器的开发人员可能会选择将一小部分操作***或管理程序带入容器中。在这种情况下,相对于引入整个操作***或管理程序的替代方案,所得到的容器仍然可以是轻量级的。在更多情况下,可以以这样的方式定义和开发一组容器,使得该组容器作为“应用程序”执行。这个概念可以扩展到包括数百或数千(或数百万)个容器。
虚拟机通过创建在主机操作***之上运行的虚拟机来模仿独立的物理机,与虚拟机相比,容器可以虚拟化可以在操作***内核上在用户空间中直接运行的应用程序。诸如从容器内运行的Web服务器或数据库之类的应用程序不需要仿真层或管理程序层来与物理机接口。相反,“容器化”应用程序可以使用操作***的正常***调用来运行。以这种方式,容器提供的操作***级虚拟化通常比虚拟机更快(例如,更快地传输,更快地“启动”或加载)。
广泛采用虚拟化技术(如虚拟机或容器)的一个原因是虚拟架构提供的资源优势。当物理机受限于单个专用操作***时,物理机在不活动期间没有做有用的工作。如果当前有其他物理机上的用户正在等待计算资源,则这是浪费且低效的。相反,虚拟化允许多个虚拟化计算机(例如,VM、容器)共享底层物理资源,使得在一个虚拟化计算机不活动期间,另一个虚拟化计算机可以利用资源可用性来处理进程负载。这可以为物理设备的使用带来很高的效率,并且可以减少冗余并且更好地进行资源成本管理。
尽管分布式计算(虚拟和真实)中的容器快速增长和实现,但是当容器从计算机中移除或发生故障时,其未存储在永久存储中的状态的任何更改都将丢失。可以在容器中存储数据,但是当该容器不再运行时(例如在因故障转移到新服务器期间)数据不会持久存在,并且如果另一个进程需要,将数据从容器中取出可能是一个挑战。容器的可写层当前紧密耦合到运行容器的主机(虚拟或真实),并且数据不容易移动。因此,需要提供状态数据的永久存储,以便即使在故障转移期间也最大化应用可用性。
本发明的其他优点和新颖特征将部分地在下面的描述中阐述,并且在阅读以下说明书后,本领域技术人员可以清楚地了解本发明,或者可以通过实施本发明来了解。借助于所附权利要求中特别指出的实例、组合、组合物和方法,可以实现和获得本发明的优点。
发明内容
提出了一种用于分布式计算环境中的有状态容器的***和相应方法。本发明为在容器化环境中运行的有状态计算应用程序提供高可用性。在这种情况下,“容器化”是指在主机上运行的应用程序,在该环境中,所有应用程序的程序代码、数据和其他资源都与***的其余部分(例如,容器)分区。在这种情况下,“有状态”是指应用程序保留关键的永久数据(例如数据库)的存储,没有这些数据应用程序将无用。在这种情况下,“高可用性”是指本发明为容器化的应用程序提供容错和快速恢复,其中如果托管应用程序的服务器故障,则本发明确保容器化的应用程序在另一服务器上自动重启,而无需用户干预。
本发明可用于减少作为容器运行的任务关键型应用程序的恢复时间目标。如果托管的服务器故障,则本发明不是手动排除故障并重新启动该服务器,而是自动选择另一个服务器以立即承担运行应用程序的角色,包括其所有的永久数据,并重新启动应用程序。
当前容器环境用于管理大量应用程序,这些应用程序要么(a)不需要永久数据,要么(b)将永久数据的存储委托给另一个应用程序,例如:连接到后端数据库的分层Web应用程序。通常,当前容器环境不支持需要(1)保留永久数据,(2)自动恢复,以及(3)短恢复时间目标的应用程序。本发明支持使用容器环境来托管具有这些要求的应用程序。本发明允许人们采用预先打包的容器应用程序,其需要存储永久数据,并立即使其高度可用,在托管应用程序的计算机发生故障的情况下具有短的恢复时间目标。
根据本发明的一个实施例,一种用于分布式计算环境中的有状态容器的***包括服务器集群,该服务器集群具有经由网络通信地耦合的多个计算节点。所述服务器集群内的每个计算节点还包括操作***、一个或多个虚拟主机、一个或多个容器以及永久存储介质,所述一个或多个容器在每个虚拟主机之上操作。
在该实施例中,每个虚拟主机在操作***之上操作。此外,每个虚拟主机实例化并绑定到唯一的虚拟网际协议(IP)地址。所述一个或多个容器在每个虚拟主机之上操作,其中每个容器是将代码和依赖关系打包在一起的抽象。并且一个或多个应用程序实例在每个容器之上操作。
本发明的另一方面是永久存储介质耦合到服务器集群内的每个计算节点。一个或多个应用程序实例中的每一个处理来自多个用户的请求并形成多个交换。有效交换在处理该有效交换期间访问和修改应用程序状态数据。通过应用程序实例所述虚拟主机将与有效交换相关的应用程序状态数据写入所述永久存储介质。
本发明在主机操作***或客户(虚拟)操作***上同样运行良好。值得注意的是,来自写入所述永久存储介质的应用程序实例的应用程序状态数据只能由具有当前交换并且与唯一的虚拟IP地址相关联的应用程序实例访问。
分布式计算环境内的每个服务器包括存储监视器,所述存储监视器维护永久存储介质的可用性状态并重新配置永久存储介质以满足其他的应用程序实例要求。根据本发明的一个实施例,所述存储监视器阻止来自其他交换和节点的应用程序状态数据的访问,以便保持每个有效应用程序实例的真实性和有效性。
在所述服务器集群中的每个节点上建立的主机引擎创建虚拟主机,并为每个虚拟主机建立唯一的虚拟IP地址。类似地,应用程序引擎在每个虚拟主机之上创建和配置一个或多个容器。最后,应用程序引擎在容器之上建立应用程序实例。所述应用程序实例、所述容器和所述虚拟主机绑定到唯一的虚拟IP地址。
根据本发明的一个实施例,健康监视器监视应用程序实例的健康和状态,并在必要时发出故障转移或故障恢复事件的信号。响应于故障转移或故障恢复事件,所述虚拟主机、所述容器和所述应用程序实例移动到所述服务器集群内的新计算节点/服务器,同时保持唯一的IP地址。由于唯一IP地址未改变,因此仍然保留对存储在所述永久存储介质上的应用程序状态数据的访问。
本公开中和以下详细描述中描述的特征和优点并非包括一切。鉴于附图、说明书和权利要求书,许多附加特征和优点对于相关领域的普通技术人员将是显而易见的。此外,应该注意的是,说明书中使用的语言主要是出于可读性和指导目的而选择的,并且并非被选择来描绘或限制本发明的主题;必须参考权利要求以确定本发明的主题。
附图的简要说明
通过参考以下结合附图对一个或多个实施例的描述,本发明的前述和其他特征和目的以及实现它们的方式将变得更加明显,并且将最好地理解本发明本身,其中:
图1A和1B分别示出了关于单个和分布式计算环境中的一个或多个应用程序的实例化的容器的实现;
图2示出了根据本发明一个实施例的分布式计算环境中的有状态容器的***的高层图。
图3是在服务器集群的一个实施例中实现了用于分布式计算环境中的有状态容器的***的高层视图;
图4是根据本发明的一个实施例中单个的用于虚拟主机容器化应用程序实例的高层图;
图5是根据本发明的一个实施例中分布式计算环境中的有状态容器的高层图;
图6A-6C形成了根据本发明一个实施例的用于在分布式计算环境中永久存储状态数据的方法的流程图;以及
图7A-7C形成了根据本发明一个实施例的用于在分布式计算环境中对有状态容器的***进行故障转移的方法的流程图。
附图仅出于说明的目的描绘了本发明的实施例。本领域技术人员在不脱离本文所述的本发明的原理下,可以从以下讨论中容易地认识到采用本文所示的结构和方法的替代实施例。
发明描述
以下通过示例描述分布式计算环境中的状态数据的永久存储。现有容器体系结构不支持应用程序状态数据的永久存储。本发明的一个实施例将永久存储介质耦合到形成服务器集群的多个计算节点中的每一个。所述服务器集群内的每个计算节点还包括在容器之上操作的一个或多个应用程序实例,该容器又在虚拟主机之上操作。所述虚拟主机、所述容器和所述应用程序实例与至少一个唯一的虚拟网际协议(IP)地址相关联。此外,应用程序实例将应用程序状态数据读取和写入所述永久存储介质。
响应于应用程序实例从服务器集群中的一个计算节点到同一服务器集群中的另一个计算节点的故障转移或故障恢复,基于绑定的容器、虚拟主机和唯一虚拟IP地址的移动,应用程序实例连续地从所述永久存储介质读取和写入应用程序状态数据。
下面参考附图详细描述本发明的实施例。尽管已经以一定程度的特征描述和说明了本发明,但是应该理解,本公开仅通过示例的方式进行,并且本领域技术人员可以在不脱离本发明的精神和范围的情况下对部件的组合和布置进行多种改变。
提供参考附图的以下描述以帮助全面理解由权利要求及其等同物限定的本发明的示例性实施例。它包括各种具体细节以帮助理解,但这些仅被视为示例性的。因此,本领域普通技术人员将认识到,在不脱离本发明的范围和精神的情况下,可以对这里描述的实施例进行各种改变和修改。此外,为了清楚和简明,以下描述中省略了对公知功能和结构的描述。
在以下描述和权利要求中使用的术语和名词不限于书面含义,而是仅由发明人使用以使得能够清楚和一致地理解本发明。因此,对于本领域技术人员来说显而易见的是,提供本发明的示例性实施例的以下描述仅用于说明目的,而不是为了限制由所附权利要求及其等同物限定的本发明的目的。
术语“基本上”是指所述特征、参数或值不需要精确地实现,而是可以实现为那些可能会以不排除所述特征意图提供的效果的量的偏差或变化,包括例如公差、测量误差、测量精度限制和本领域技术人员已知的其他因素。
相同的编号始终指代相同的元件。在附图中,为了清楚起见,可放大某些线、层、组件、元件或特征的尺寸。
这里使用的术语仅用于描述特定实施例的目的,而不是用于限制本发明。如这里所使用的,单数形式“一”,“一个”和“该”也旨在包括复数形式,除非上下文中另有特别说明。因此,例如,对“组件表面”的引用包括对一个或多个这样的表面的引用。
如本文所用,对“一个实施例”的任何引用旨在结合该实施例描述的特定元件、特征、结构或特性包括在至少一个实施例中。在说明书中各处出现的短语“在一个实施例中”不一定都指的是同一实施例。
如这里所使用的,术语“包括”、“包含”、“构成”、“具有”、“含有”或其任何其他变型旨在涵盖非排他性的包含。例如,包括元件列表的过程、方法、产品或装置不一定仅限于那些元件,而是可以包括未明确列出的或者这种过程、方法、产品或装置固有的其他元件。此外,除非有相反的明确说明,否则“或”是指包含性的或不是排他性的。例如,以下任何一项表示满足条件A或B:A为真(或存在)且B为假(或不存在),A为假(或不存在)且B为真(或存在),且A和B均为真(或存在)。
除非另外定义,否则这里使用的所有术语(包括技术和科学术语)具有与本发明所属领域的普通技术人员通常理解的含义相同的含义。将进一步理解,诸如在常用词典中定义的那些术语应被解释为具有与其在说明书的上下文中和相关领域的含义一致的含义,并且除非在本文中明确地如此定义,否则不应以理想化或过于正式的含义来解释。为简洁和/或清楚起见,可能未详细描述众所周知的功能或构造。
还应该理解,当一个元件被称为“接于”、“附接”、“连接”、“耦合”、“接触”、“安装”另一个元件时,它可以直接接于、附接、连接、耦合或接触其他元件,或者也可以存在中间元件。相反,当一个元件被称为例如“直接接于”、“直接附接”、“直接连接”、“直接耦合”或“直接接触”另一个元件时,不存在中间元件。本领域技术人员还将理解,对与另一特征“相邻”设置的结构或特征的引用可具有与相邻特征重叠或位于相邻特征之下的部分。
这里可以使用空间相对术语,例如“下面”,“底下”,“下方”,“外部”,“上面”等,以便于描述如图中所示的一个元件或特征与另一个元件或特征的关系。应当理解,除了图中所示的取向之外,空间相对术语旨在包括使用或操作中的装置的不同取向。例如,如果图中的装置被倒转,则被描述为在其他元件或特征“下方”或“下面”的元件将被“定向”在其他元件或特征之上。因此,示例性术语“下方”可以包括“上方”和“下方”的取向。装置可以以其他方式定向(旋转90度或在其他方位),并且相应地解释本文使用的空间相对描述。类似地,除非另有明确说明,否则本文使用术语“向上”、“向下”、“垂直”、“水平”等仅用于解释的目的。
定义
虚拟机:在计算和本发明中,虚拟机是计算机***的仿真。虚拟机基于计算机体系结构并提供物理计算机的功能。它们的实现可能涉及专用硬件、软件或硬件和软件的组合。***虚拟机(也称为完全虚拟化虚拟机)提供了对真实机器的替代。它们提供执行整个操作***所需的功能。管理程序使用本机执行来共享和管理硬件,允许多个相互隔离但仍存在于同一物理机器上的环境。现代虚拟机管理程序使用硬件辅助虚拟化,特定于虚拟化的硬件,主要来自主机CPU。进程虚拟机旨在在独立于平台的环境中执行计算机程序。
容器:容器是执行操作***级虚拟化的计算机程序。容器主要是为Linux开发的,它使用Linux内核的资源隔离功能,允许独立容器在单个Linux实例中运行,从而避免启动和维护完整虚拟机的开销。除了使用抽象的虚拟化接口之外,容器还包括它们自己的库,以直接使用Linux(和其他操作***)内核提供的虚拟化工具。无论环境如何,容器化软件都运行相同。容器将软件与周围环境隔离开来。
虚拟机管理程序:管理程序或虚拟机监视器是用于创建和运行虚拟机的计算机软件、固件或硬件。管理程序运行一个或多个虚拟机的计算机称为主机,每个虚拟机称为客户机。管理程序向客户机操作***提供虚拟操作平台并管理客户机操作***的执行。各种操作***的多个实例可以共享虚拟化硬件资源。这与操作***级虚拟化形成对比,其中所有实例(通常称为容器)必须共享单个内核,尽管客户机操作***的用户空间可能不同,例如具有相同内核的不同Linux分布。
有状态:有状态是指计算机或程序通常通过在为此目的指定的存储字段中设置值来跟踪关于交互或交换的关键和永久数据。无状态是指没有先前交互的记录,并且每个交互或交换请求必须完全基于其附带的信息来处理。
高可用性:高可用性指的是耐用且可能长时间无故障运行的***。该术语表明***的某些部分已经过全面测试,并且在许多情况下,存在冗余组件形式的故障。
服务器集群:服务器或计算机集群是一组松散或紧密连接的计算机,它们协同工作,因此在许多方面,它们可以被视为单个***。计算机集群依赖于集中管理方法,该方法使节点可用作协调的共享服务器。
守护程序:在多任务计算机操作***中,守护程序是作为后台进程运行的计算机程序,而不是由交互式用户直接控制。例如,***日志守护程序是实现***日志记录工具的守护程序后台进程。
网际协议:网际协议(IP)是用于使用该组通信协议在网络上中继数据报(也称为网络分组)的主要通信协议。因为它是最重要的协议,它通常是广域网中最流行的协议栈,并通常称为TCP/IP。IP负责跨网络边界路由数据包,并且是网际协议套件的网络层中的主要协议。为此,IP定义了封装要传递的数据的数据报结构。它还定义了用于标记数据报源和目标的寻址方法。
小型计算机***接口:小型计算机***接口(SCSI)是一组用于在计算机和***设备之间物理连接和传输数据的标准。SCSI标准定义命令、协议以及电气和光学接口。SCSI最常用于硬盘和磁带驱动器,但它可以连接各种其他设备,包括扫描仪和CD驱动器,但并非所有控制器都可以处理所有设备。SCSI标准定义了特定***设备类型的命令集;作为这些类型中的一种存在“未知”意味着理论上它可以用作几乎任何设备的接口,但该标准是高度务实的并且针对商业要求。
实例:在编程中,实例化是创建实例或抽象或模板的特定实现,例如一类对象或计算机进程。换句话说,使用Java,您可以实例化一个类来创建一个特定的类,该类也是可以在计算机中运行的可执行文件。
在面向对象的编程中,实例(或实例化)是对象的出现或副本,无论当前是否正在执行。类的实例共享同一组属性,但通常在这些属性包含的内容方面有所不同。例如,类“员工(Employee)”可能描述员工类的所有实例共有的属性。出于解决任务的目的,员工类对象可能通常相似,但在“姓名(name)”和“薪资(salary)”等属性方面有所不同。该类的描述将逐项列出这些属性并定义与该类相关的操作或动作,例如“增加薪资”或“更改电话号码”。然后可以讨论一个名为“Jane Doe”的员工类对象实例和另一个名称为“John Doe”的员工类对象实例。
此外,在面向对象的编程中,类是一种构造,用作创建自身实例的蓝图。这称为类实例、类对象、实例对象,或简称对象。类定义组成成员,使这些类实例具有状态和行为。数据字段成员(成员变量或实例变量)使类对象能够维护状态。其他类型的成员,尤其是方法,可以启用类对象的行为。类实例属于关联类的类型。
虚拟主机:虚拟主机是与其周围环境隔离的逻辑实例,其在物理和虚拟服务器之上运行,因此不包括操作***。虚拟主机不是虚拟机,而是执行操作***级虚拟化。每个虚拟主机实例化并绑定到至少一个虚拟IP地址。在故障转移时,虚拟主机(包括容器和应用程序实例)及其虚拟IP地址从其中一个服务器迁移到另一个服务器。
具体实施例
根据本发明的一个实施例,用于分布式计算环境中的有状态容器的***200如图2所示。如上所述,分布式计算环境或服务器集群是一组松散或紧密连接的计算机,它们一起工作,因此在许多方面,它们可以被视为单个***。服务器集群内的每个计算节点可以是物理机器,包括主机操作***在其上运行的硬件基础设施组件,或者在管理程序之上运行的虚拟机。这些计算节点一起作为单个***一起工作。
本发明向诸如服务器集群的分布式计算环境中的应用程序实例提供有状态永久数据。服务器集群内的每个计算节点310包括使计算节点310能够经由存储互连235(包括永久存储介质)与客户端220、集群内的其他计算节点225和各种附接存储设备230、320交互的组件。
根据本发明的一个实施例,一种用于分布式环境中的有状态容器的***,集群内的每个节点310包括操作***210、集群监视器240、存储监视器250、本地监视器260、健康监视器270、主机引擎280、应用程序引擎290和容器守护程序297。
为清楚起见,图3呈现了根据本发明一个实施例的分布式计算环境中的服务器集群的高层图。多个计算节点310经由网络340通信地耦合其他计算节点、一个或多个附接存储设备/介质320和客户端330。每个节点310可以是物理或虚拟机,并且每个客户端330可以是移动设备、台式计算机、终端等。类似地,网络附接存储设备320可以是各种形式的网络存储解决方案,例如SAN、SAS、SATA、iSCSI SAN、SAS RAID、NAS等。
图4是单个的用于虚拟主机容器化应用程序实例的高层图。如图所示,可以在容器430之上实例化420一个或多个应用程序410,容器430本身驻留在虚拟主机440之上。
图5示出了根据本发明的一个实施例的分布式计算环境中的有状态容器的高层图。与图4中所示的一样,图5在每个计算节点处示出了位于虚拟主机540之上的容器580之上的一个或多个应用程序510的实例520。与现有技术的服务器集群不同,各计算节点关于其能力和可用性与彼此通信,使得在故障转移时,新节点可以接受在虚拟主机之上操作的容器之上操作的整个实例。
回到图2,主机引擎280负责建立和维护一个或多个虚拟主机440、540,以及与每个虚拟主机440、540相关联并绑定到每个虚拟主机440、540的唯一虚拟IP地址。主机引擎280包括维护和管理虚拟主机的虚拟主机管理器282的子进程以及为每个虚拟主机创建和管理虚拟IP地址的网络地址管理器286。
应用程序引擎290负责建立和管理驻留在容器之上的应用程序。应用程序引擎290包括数据库管理器291,用于维护和管理每个实例的应用程序实例数据库文件。它还包括维护和管理容器镜像的容器管理器292,以及维护存储在磁盘上的实例配置的实例管理器293。最后,应用程序引擎包括用于处理实例注册的集成管理器294。
容器守护程序297负责为容器管理器292定义的每个容器运行或停止容器镜像。容器守护程序297还负责在健康监视器270查询时报告特定容器430、580是否正在运行。
与应用引擎290和容器守护程序297密切配合的是健康监视器270。健康监视器270负责监视应用程序实例健康并发出故障转移或故障恢复事件通知信号。在计算中,故障转移在先前有效应用程序、服务器、***、硬件、组件或网络的故障或异常终止/操作时切换到冗余或备用计算机服务器、***、硬件或网络。故障恢复是将先前处于故障状态的***、组件或服务恢复到其原始工作状态,并使备用***从功能恢复到备用状态的过程。
为了监视容器守护程序297和应用程序的健康状况,健康监视器270通过性能监视器272监视CPU、存储器和***的I/O利用以及相关的应用程序进程。服务观察器274监视服务健康并基于注册策略触发事件。最后,警报动作处理器276响应于警报和应用条件发送调用脚本的消息。健康监视器270监视计算节点,特别是应用程序实例以查看故障的迹象。当检测到故障时,健康监视器会触发故障转移或故障恢复条件。
每个计算节点的重要部分是它与客户端和其他节点通信的能力。本地监视器260负责接收和转发来自每个用户界面的请求到主机引擎、应用程序引擎和集群监视器。本地监视器260包括客户端管理器261,其处理来自客户端请求,将客户端请求传递给应用程序协调器或处理引擎(下文描述),并维护客户端连接。
本地监视器260通过同步管理器262维护虚拟主机和应用程序的管理配置,并在集群成员资格改变时同步***之间的配置。本地监视器260的另一个组件是应用程序协调器264,其执行集群范围的管理命令并维护与虚拟主机和托管应用程序相关的集群不变量。例如,如果***出现故障,并且该***正在托管特定应用程序,则应用程序协调器会确保在另一个可用***上重新启动应用程序。
本地监视器260还包括仲裁管理器265,用于基于配置确定有效集群是否具有仲裁。如果不存在仲裁,则仲裁管理器会关闭有效应用程序。例如,如果同一集群的两个子组能够相互通信但无法彼此通信,则它们将形成两个独立的集群。仲裁管理器265确保这些集群中只有一个尝试启动应用程序。
分配管理器266监视在每个***上有效的一组应用程序,并在文件***监视器268监视应用程序的文件***路径的可用性的同时,基于配置的资源要求和可用性引导自动应用程序放置决定,并将每个***路径状态报告给集群协调器。
最后,每个本地监视器260包括处理引擎269,其通过将请求转发给主机引擎、应用程序引擎和/或同步管理器来解析和执行客户机请求。
每个计算节点还经由存储互连235耦合到附接的存储设备230、320。驻留在每个计算节点上的存储监视器250维护每个***上的可用存储设备的状态,并重新配置存储设备以满足在该节点上实例化的应用程序要求。存储监视器250包括设备枚举器251,其维护本地***上存在的磁盘和卷设备的列表,并主动监视对该列表的改变。它还包括同步管理器253,其维护已知和受管磁盘设备的管理配置,以及当集群成员资格变化时在***之间同步配置。存储协调器255执行集群范围的管理命令并维护与存储设备相关的集群不变量。例如,如果用户请求创建卷,则存储协调器将确定要在其上创建卷的最佳***(节点),确保目标磁盘设备在该***上可用,然后将请求转发给那个***。防护工具257阻止对可能先前已经访问但不再是有效计算节点的一部分的***的存储设备的访问。最后,设备管理员259执行设备重新配置请求,包括将它们设置为在线、离线或创建/删除/扩展/缩小文件***卷。
存储监视器250将可用存储的状态传送到本地监视器260和集群监视器240。集群监视器240建立并负责与参与集群的所有可用计算节点通信,监视每个节点的可用性,通过其协调器提供虚拟同步,监视和同步集群服务的状态,以及在集群服务成员之间中继命令。对于每个计算节点的集群监视器240,集群服务是参与命名组的外部软件组件。集群监视器240通知参与相同群组的所有集群服务彼此的存在,以及可能对该群组发生的任何变化。本地监视器260和存储监视器250组件用作计算节点的集群服务,并传送该节点参与***(集群)。
每个集群监视器240包括组通信模块212,其建立与集群中涉及的所有可用***的通信,监视***可用性和通信信道,以及选择计算节点之一作为整体集群协调器。集群监视器240还包括集群服务状态机214,其监视集群服务的可用性(如上所述),处理对该组可用集群服务的改变,并通知在每个***上运行的当前服务成员资格的有效集群服务组件。命令状态机216监视由各种集群服务提交的中继命令的状态,并确保中继命令的一致排序,并且将可靠响应发送回那些命令的发布者。最后,每个集群监视器包括通信设置管理器218,其维护集群的管理配置细节,包括***列表、它们的网络地址和加密机密。设置管理器管理在有效集群中添加和删除计算节点的过程,同时在集群成员资格更改时同步***之间的配置。
上述***的实施通过使其高度可用和有状态来扩展容器能力。当容器在本发明的虚拟主机之上实例化时,容器及其所有容器化的应用程序数据变得高度可用且有状态。如果运行实例化的节点故障,则本文公开的发明将自动将虚拟主机故障转移到服务器集群中的另一个计算节点上,并且在这样做时,使虚拟主机、容器和应用程序实例回到具有他们数据的在线状态。在故障转移的实例中,不需要重新配置容器化应用程序以重新连接到容器化应用程序的新实例。他们只是继续通过虚拟主机访问现有的容器化应用程序,并通过这样做访问存储在永久数据存储设备中的状态数据。
说明书中包括描述可用于在分布式计算环境中永久存储状态数据的方法的示例的流程图。在以下描述中,将理解流程图图示的每个框以及流程图图示中的框的组合可以由计算机程序指令实现。这些计算机程序指令可以加载到计算机或以产生机器的其他可编程装置上,使得在计算机或其他可编程装置上执行的指令创建用于实现流程图框中指定的功能的方式。这些计算机程序指令还可以存储在计算机可读存储器中,该计算机可读存储器可以指示计算机或其他可编程装置以特定方式运行,使得存储在计算机可读存储器中的指令产生包括用于实现流程图框中指定的功能的方式的指令装置的制品。计算机程序指令也可以加载到计算机或其他可编程装置上,以使得在计算机或其他可编程装置上执行一系列操作步骤,以产生计算机实现的过程,使得在计算机上执行的指令或其他可编程装置提供用于实现流程图框中指定的功能的步骤。
因此,流程图图示的框支持用于执行指定功能的装置的组合以及用于执行指定功能的步骤的组合。还将理解,流程图图示的每个框以及流程图图示中的框的组合可以由执行特定功能或步骤的专用基于硬件的计算机***或专用硬件和计算机指令的组合来实现。
图6A-6C形成用于在分布式计算环境中永久存储状态数据的方法的流程图。该过程开始605,接收608在服务器集群内的计算节点上实例化应用程序的请求。该请求可以由寻求访问存在于云或分布式环境中的应用程序的功能的用户发起。在接收608建立应用程序的请求时,集群管理器监视集群内的哪些节点可以满足该请求。基于集群内每个节点的配置,选择将在其上实例化应用程序的计算节点。
在所选择的计算节点上,由驻留在该节点上的主机引擎形成610一个或多个虚拟主机。随着虚拟主机的形成,唯一的IP地址被绑定到每个虚拟主机615。所选节点上的应用程序引擎在每个虚拟主机之上创建和配置620一个或多个容器。
利用在虚拟主机之上建立620的一个或多个容器,在其中一个容器之上创建应用程序的实例625。实例、容器和虚拟主机与创建虚拟主机时形成的唯一IP地址相关联。
查询630该计算节点以及应用程序的绑定虚拟主机、容器和实例是否是应用程序的初始实例。当答案为否时,在集群中更新635计算节点的配置,使得集群中的其他节点知道该节点的可用性和能力。
如果查询的答案是肯定的,则与共享/附接存储设备建立640连接和通信。该设备通信地耦合到网络,并用于存储来自应用程序实例的状态数据。一旦加载了存储设备,就授予节点向存储设备写入和从存储设备读取状态数据的许可645,并将其链接到与虚拟主机绑定的唯一IP地址。
同时,建立650防火墙以阻止服务器集群内的所有其他计算节点、虚拟主机和容器访问当前应用程序实例的状态数据。该存储设备的该特定扇区被保留用于仅对由唯一IP地址标识的初始实例进行读写访问。
在建立防火墙并授予对数据存储设备的访问权限的情况下,启用660容器的操作,从而启用应用程序的操作。然后,计算节点向健康监视器注册670虚拟主机、容器和应用程序实例,以便节点可以确定应用程序的状态以及是否需要故障转移。
最后,在集群中更新675实例化操作的计算节点的状态,使得服务器集群中的其他节点知道该节点的新可用性和能力,结束695该过程。
图7A-7C形成了根据本发明一个实施例的用于在分布式计算环境中对有状态容器的***进行故障转移的方法的流程图。如本文所述,一旦在容器上实例化应用程序,在虚拟主机之上,就向驻留在该计算节点上的健康监视器注册该应用程序。故障转移的过程具有关于实例化是否故障的查询710。
如果对查询的响应为否,意味着实例化继续按预期操作,则故障转移过程结束795。
如果对查询的响应是肯定的,则向集群内的其他节点发出请求715被转发以重新定位故障的实例化。集群监视器了解集群中每个其他计算节点的功能和可用性。虽然超出了本说明书的范围,但是故障节点的集群监视器与其他节点一起识别720故障转移计算节点,虚拟主机、容器和应用程序实例将很快驻留在该故障转移计算节点上。
虚拟主机、在虚拟主机之上运行的容器以及在容器之上运行的应用程序实例(所有这些都与虚拟主机的唯一IP地址相关联)被绑定730到故障转移计算节点。
再次查询735关于该节点(故障转移节点)是否是初始实例化节点。考虑到在故障转移之前,前一个节点是初始实例化节点。为了完整性,如果对查询的响应为否,则在集群中更新740计算节点(故障转移节点)配置。
如果对查询的响应为是并且故障转移节点现在是应用程序的初始实例化,则使用唯一虚拟IP地址加载745存储设备以在应用程序实例和共享/附接存储设备之间建立连接和通信。
读取存储在存储设备上的应用程序状态数据的许可被授予750,同样的,利用唯一IP地址写入新应用程序状态数据的许可被授予。之后建立760防火墙撤销先前节点的访问并阻止所有其他节点访问应用程序实例状态数据。
恢复765容器和应用程序实例的操作,并且用新的故障转移节点的健康监视器注册770虚拟主机、容器和应用程序实例。最后,在故障转移过程结束795的集群中更新780与其可用性和能力相关的故障转移节点配置。
本发明通过将唯一的虚拟IP地址绑定到虚拟主机,实现分布式计算环境中的应用程序实例的有状态故障转移。在虚拟主机之上操作的容器之上操作的应用程序实例同样与相同的唯一虚拟IP地址相关联。从应用程序访问状态数据的存储与唯一的IP地址链接,以便在绑定的虚拟主机、容器和应用程序实例到新节点的故障转移时,可以快速重新建立对应用程序的状态数据的访问。
在阅读本公开后,本领域技术人员将理解通过本文公开的原理用于***和用于在分布式计算环境中永久存储状态数据的过程的另外的替代结构和功能设计。因此,虽然已经说明和描述了特定实施例和应用,但是应该理解,所公开的实施例不限于本文公开的精确构造和部件。在不脱离所附权利要求限定的精神和范围的情况下,可以在本文公开的方法和装置的布置、操作和细节中进行对本领域技术人员显而易见的各种修改、改变和变化。
用于分布式计算环境中的有状态容器的***的一个实施例包括:
·服务器集群,所述服务器集群包括通过网络通信连接的多个计算节点,其中所述服务器集群内的每个计算节点包括:
操作***,
一个或多个虚拟主机,其中每个所述虚拟主机在所述操作***之上操作,并且其中每个所述虚拟主机实例化并绑定至少一个唯一的虚拟网络协议网际协议(IP)地址,
在所述一个或多个虚拟主机之一上操作的一个或者多个容器,其中每个所述容器是将代码和依赖关系打包在一起的抽象化,以及
在每个所述容器上操作的一个或多个应用程序实例;以及
·耦合到所述服务器集群内的每个计算节点的永久存储介质,其中所述一个或多个应用实例中的每一个处理来自多个用户的请求并形成多个交换,并且其中在有效交换的处理期间有效交换访问和修改应用程序状态数据,并且其中所述虚拟主机将与所述有效交换相关的应用程序状态数据写入所述永久存储介质。
在其他实施例中,这种***的其他特征可以包括:
·其中所述操作***是主机操作***或客户机操作***;
·其中写入到所述永久存储介质的应用程序状态数据仅可由具有所述有效交换的所述应用程序实例访问;
·其中每个所述计算节点包括服务器集群监视器,其中所述服务器集群监视器在整个所述服务器集群中同步和协调服务;
·其中每个所述计算节点包括存储监视器,所述存储监视器维护所述永久存储介质的可用性状态并重新配置所述永久存储介质以满足应用程序要求;
·其中所述存储监视器仅对所述有效交换使能对所述永久存储介质上可用的应用程序状态数据的写访问和读访问;
·其中所述存储监视器阻止来自除所述有效交换之外的各交换对应用程序状态数据的访问。
·其中每个所述计算节点包括主机引擎,所述主机引擎建立和维护所述一个或多个虚拟主机和每个唯一的虚拟IP地址;
·其中每个所述计算节点包括应用引擎,所述应用引擎在所述一个或多个虚拟主机中的一个虚拟主机之上创建和配置每个容器;
·其中每个所述计算节点包括应用程序引擎,所述应用程序引擎在每个容器之上建立应用程序实例;
·其中每个所述计算节点包括健康监视器,所述健康监视器监视应用程序实例状态并发出故障转移事件或故障恢复事件的信号;
·其中响应于故障转移事件或故障恢复事件,所述一个或多个虚拟主机、所述一个或多个容器以及在所述一个或多个容器之上操作的所述一个或多个应用程序实例移动到新的计算节点,同时保持其唯一的虚拟IP地址;以及
·其中每个所述计算节点包括本地监视器,所述本地监视器接收来自所述多个用户的请求并将其转发到适当的应用程序实例。
在另一个实施例中,用于在分布式计算环境中永久存储状态数据的***可以包括:
·服务器集群,所述服务器集群包括通过网络通信连接的多个计算节点,其中所述服务器集群内的每个计算节点包括在容器上操作的一个或多个应用程序实例,并且其中所述容器在一个或多个虚拟主机上操作;以及
·耦合到所述服务器集群内的每个计算节点的永久存储介质,其中所述一个或多个应用程序实例中的每一个将应用程序状态数据写入所述永久存储介质。
该实施例的附加特征可包括:
·其中所述一个或多个虚拟主机中的每一个实例化并且绑定到唯一的虚拟网际协议(IP)地址;以及
·其中响应于与虚拟主机和容器相关联的应用程序实例从第一计算节点到第二计算节点的故障转移,所述虚拟主机连同所述容器和所述应用程序实例保持与至少一个唯一虚拟IP地址相绑定,并且其中所述应用程序实例连续地从所述永久存储介质读取和写入应用程序状态数据。
本发明的另一方面是一种用于在分布式计算环境中永久存储状态数据的计算机实现的方法,其中服务器集群中的多个服务器中的每一个包括被配置为执行体现为软件的指令的处理器。这种方法可能包括以下步骤:
·在所述服务器集群中的一个或多个服务器之一上形成虚拟主机,其中所述虚拟主机实例化并绑定至少一个唯一的虚拟网际协议(IP)地址;
·在所述虚拟主机之上建立容器;
·在所述容器之上实例化应用程序,其中实例化包括基于至少一个唯一虚拟IP地址与永久存储介质建立读和写通信,所述至少一个唯一虚拟IP地址用于读和写应用程序状态数据,所述永久存储介质被耦合到所述服务器集群中的一个或多个服务器中的一个;
·响应于应用程序实例化的故障,将所述虚拟主机、所述容器和所述应用程序实例故障转移到所述一个或多个服务器中的另一个服务器,同时使用所述至少一个唯一虚拟IP地址维护存储在所述永久存储介质上的应用程序状态数据的读和写通信。
用于在分布式计算环境中永久存储状态数据的这种方法的附加特征包括:
·响应于所述应用程序实例化的故障,将所述虚拟主机绑定到所述容器和所述至少一个唯一虚拟IP地址,并且其中所述应用程序实例连续地从所述永久存储介质读取和写入应用程序状态数据;
·还包括监视应用程序实例状态以发出故障转移事件或故障恢复事件的信号;以及
·将对所述永久存储介质上可用的应用程序状态数据的写和读访问限制为仅限于有效应用程序实例。
熟悉本领域的技术人员还将理解,在不脱离本发明的精神或基本特征的情况下,本发明可以以其他特定形式实施。同样,模块、管理器、功能、***、引擎、层、特征、属性、方法和其他方面的特定命名和划分不是强制性的或重要的,并且实现本发明或其特征的机制可以具有不同的名称、分区和/或格式。此外,对于相关领域的普通技术人员将显而易见的是,本发明的模块、管理器、功能、***、引擎、层、特征、属性、方法和其他方面可以实现为软件、硬件、固件或三者的任意组合。当然,在将本发明的组件实现为软件的任何地方,该组件可以实现为脚本、独立程序、较大程序的一部分、、多个单独的脚本和/或程序、静态、或者动态链接库、内核可加载模块、设备驱动程序和/或为计算机编程领域的技术人员所知的现在或将来的每种和任何其他方式。另外,本发明不限于以任何特定编程语言或任何特定操作***或环境的实现。因此,本发明的公开内容旨在说明而非限制本发明的范围,本发明的范围在所附权利要求中阐述。
本发明的部分可以用软件实现。体现本发明的软件编程代码通常由微处理器从某种类型的长期永久存储介质访问,例如闪存驱动器或硬盘驱动器。软件编程代码可以体现在各种已知介质中的任何一种上,以与数据处理***一起使用,例如磁盘、硬盘驱动器、CD-ROM等。代码可以分布在这样的介质上,或者可以通过某种类型的网络从一个计算机***的存储器分发到其他计算机***以供这些其他***使用。或者,编程代码可以体现在设备的存储器中,并由微处理器使用内部总线访问。在存储器中、在物理介质上实现软件编程代码和/或经由网络分发软件代码的技术和方法是公知的,并且在此不再进一步讨论。
通常,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等。此外,本领域技术人员将理解,本发明可以用其他计算机***配置来实践,包括手持设备、多处理器***、基于微处理器或可编程的消费电子产品、网络PC、微型计算机、大型计算机,等等。本发明还可以在分布式计算环境中实施,其中任务由通过通信网络链接的远程处理设备执行。在分布式计算环境中,程序模块可以位于本地和远程存储器存储设备中。
用于实现本发明的示例性***包括通用计算设备,诸如服务器、传统个人计算机、个人通信设备等形式,其包括处理单元、***存储器和将各种***组件(包括***存储器)耦合到处理单元的***总线。***总线可以是若干类型的总线结构中的任何一种,包括存储器总线或存储器控制器、***总线和使用各种总线架构中的任何总线架构的本地总线。***存储器通常包括只读存储器(ROM)和随机存取存储器(RAM)。基本输入/输出***(BIOS)存储在ROM中,其包含有助于在个人计算机内的元件之间传输信息的基本例程,例如在启动期间。个人计算机还可包括用于读取和写入硬盘的硬盘驱动器,用于读取或写入可移动磁盘的磁盘驱动器。硬盘驱动器和磁盘驱动器分别通过硬盘驱动器接口和磁盘驱动器接口连接到***总线。驱动器及其相关的计算机可读介质为个人计算机提供计算机可读指令、数据结构、程序模块和其他数据的非易失性存储。尽管这里描述的示例性环境采用硬盘和可移动磁盘,但是本领域技术人员应该理解,可以存储可由计算机访问的数据的其他类型的计算机可读介质也可以用于示例性的操作环境。
这里已经描述的本发明的实施例可以参考各种无线网络及其相关的通信设备来实现。网络还可以包括大型计算机或服务器,例如网关计算机或应用服务器(可以访问数据存储库)。网关计算机充当每个网络的入口点。网关可以通过通信链路耦合到另一网络。网关还可以使用通信链路直接耦合到一个或多个设备。此外,网关可以间接耦合到一个或多个设备。网关计算机还可以耦合到诸如数据存储库的存储设备。
本发明的实现还可以在Web环境中执行,其中使用诸如超文本传输协议(HTTP)之类的协议从Web服务器向通过网络连接的一个或多个目标计算机(设备、对象)下载软件安装包。或者,本发明的实现可以在其他非Web网络环境(使用因特网,公司内联网或外联网,或任何其他网络)中执行,其中使用诸如远程方法调用(“RMI)或公共对象请求代理体系结构(”CORBA“)等之类的技术来分发软件包以进行安装。环境配置包括客户端/服务器网络以及多层环境。此外,可能发生特定安装的客户端和服务器都驻留在同一物理设备中,在这种情况下不需要网络连接。
虽然上面已经结合用于分布式计算环境中的有状态容器的***和用于在分布式计算环境中永久存储状态数据的方法描述了本发明的原理,但是应该清楚地理解,前面的描述是仅作为示例而不是作为对本发明范围的限制。特别地,应认识到,前述公开内容的教导将暗示对相关领域的技术人员的其他修改。这些修改可以涉及本身已知的其他特征,并且可以代替或补充本文已经描述的特征的其他特征。尽管在本申请中已经将权利要求公式化为特征的特定组合,但是应当理解,本文公开的范围还包括明确或隐含地公开的任何新颖特征或特征的任何新颖组合,或者对于相关领域的技术人员显而易见的任何概括或修改,无论是否涉及与任何权利要求中目前要求保护的相同的发明,以及它是否减轻了与本发明所面临的任何或所有相同的技术问题。申请人在此保留在本申请或由此衍生的任何进一步申请的审查期间对这些特征和/或这些特征的组合提出新的权利要求的权利。
Claims (20)
1.一种用于分布式计算环境中的有状态容器的***,该***包括:
服务器集群,所述服务器集群包括通过网络通信连接的多个计算节点,其中所述服务器集群内的每个计算节点包括:
操作***,
一个或多个虚拟主机,其中每个所述虚拟主机在所述操作***之上操作,并且其中每个所述虚拟主机实例化并绑定至少一个唯一的虚拟网际协议IP地址,
在所述一个或多个虚拟主机之一上操作的一个或者多个容器,其中每个所述容器是将代码和依赖关系打包在一起的抽象化,以及
在每个所述容器上操作的一个或多个应用程序实例,其中所述一个或多个应用程序实例中的每一个包括与所述一个或多个虚拟主机中的一个的至少一个唯一的虚拟IP地址相联系的应用程序状态数据;以及
耦合到所述服务器集群内的每个计算节点的永久存储介质,其中所述一个或多个应用程序实例中的每一个处理来自多个用户的请求并形成多个交换,并且其中在有效交换的处理期间有效交换访问和修改应用程序状态数据,并且其中所述虚拟主机将与所述有效交换相关的应用程序状态数据写入所述永久存储介质。
2.如权利要求1所述的用于分布式计算环境中的有状态容器的***,其特征在于,所述操作***是主机操作***或客户机操作***。
3.如权利要求1所述的用于分布式计算环境中的有状态容器的***,其特征在于,写入到所述永久存储介质的应用程序状态数据仅可由具有所述有效交换的所述应用程序实例访问。
4.如权利要求1所述的用于分布式计算环境中的有状态容器的***,其特征在于,每个所述计算节点包括服务器集群监视器,其中所述服务器集群监视器在整个所述服务器集群中同步和协调服务。
5.如权利要求1所述的用于分布式计算环境中的有状态容器的***,其特征在于,每个所述计算节点包括存储监视器,所述存储监视器维护所述永久存储介质的可用性状态并重新配置所述永久存储介质以满足应用程序要求。
6.如权利要求5所述的用于分布式计算环境中的有状态容器的***,其特征在于,所述存储监视器仅对所述有效交换使能对所述永久存储介质上可用的应用程序状态数据的写访问和读访问。
7.如权利要求5所述的用于分布式计算环境中的有状态容器的***,其特征在于,所述存储监视器阻止来自除所述有效交换之外的各交换对应用程序状态数据的访问。
8.如权利要求1所述的用于分布式计算环境中的有状态容器的***,其特征在于,每个所述计算节点包括主机引擎,所述主机引擎建立和维护所述一个或多个虚拟主机和每个唯一的虚拟IP地址。
9.如权利要求1所述的用于分布式计算环境中的有状态容器的***,其特征在于,每个所述计算节点包括应用引擎,所述应用引擎在所述一个或多个虚拟主机中的一个虚拟主机之上创建和配置每个容器。
10.如权利要求1所述的用于分布式计算环境中的有状态容器的***,其特征在于,每个所述计算节点包括应用程序引擎,所述应用程序引擎在每个容器之上建立应用程序实例。
11.如权利要求1所述的用于分布式计算环境中的有状态容器的***,其特征在于,每个所述计算节点包括健康监视器,所述健康监视器监视应用程序实例状态并发出故障转移事件或故障恢复事件的信号。
12.如权利要求1所述的用于分布式计算环境中的有状态容器的***,其特征在于,响应于故障转移事件或故障恢复事件,所述一个或多个虚拟主机、所述一个或多个容器以及在所述一个或多个容器之上操作的所述一个或多个应用程序实例移动到新的计算节点,同时保持其唯一的虚拟IP地址。
13.如权利要求1所述的用于分布式计算环境中的有状态容器的***,其特征在于,每个所述计算节点包括本地监视器,所述本地监视器接收来自所述多个用户的请求并将其转发到适当的应用程序实例。
14.一种用于在分布式计算环境中永久存储状态数据的***,包括:
服务器集群,所述服务器集群包括通过网络通信连接的多个计算节点,其中所述服务器集群内的每个计算节点包括在容器上操作的一个或多个应用程序实例,并且其中所述容器在一个或多个虚拟主机上操作,并且,其中所述一个或多个应用程序实例中的每一个包括与所述一个或多个虚拟主机中的一个的至少一个唯一的虚拟IP地址相联系的应用程序状态数据;以及
耦合到所述服务器集群内的每个计算节点的永久存储介质,其中所述一个或多个应用程序实例中的每一个将应用程序状态数据写入所述永久存储介质。
15.根据权利要求14所述的用于在分布式计算环境中永久存储状态数据的***,其特征在于,所述一个或多个虚拟主机中的每一个实例化并且绑定到唯一的虚拟网际协议IP地址。
16.根据权利要求15所述的用于在分布式计算环境中永久存储状态数据的***,其特征在于,响应于与虚拟主机和容器相关联的应用程序实例从第一计算节点到第二计算节点的故障转移,所述虚拟主机连同所述容器和所述应用程序实例保持与至少一个所述唯一的虚拟IP地址相绑定,并且其中所述应用程序实例连续地从所述永久存储介质读取和写入应用程序状态数据。
17.一种用于在分布式计算环境中永久存储状态数据的计算机实现的方法,其中服务器集群中的多个服务器中的每一个包括被配置为执行体现为软件的指令的处理器,该软件在被执行时包括以下步骤:
在所述服务器集群中的一个或多个服务器之一上形成虚拟主机,其中所述虚拟主机实例化并绑定至少一个唯一的虚拟网际协议IP地址;
在所述虚拟主机之上建立容器,其中每个所述容器是将代码和依赖关系打包在一起的抽象化;
在所述容器之上实例化应用程序,其中实例化包括基于至少一个唯一虚拟IP地址与永久存储介质建立读和写通信,所述至少一个唯一虚拟IP地址用于读和写应用程序状态数据,所述永久存储介质被耦合到所述服务器集群中的一个或多个服务器中的一个,并且,其中一个或多个应用程序实例中的每一个包括与所述一个或多个虚拟主机中的一个的至少一个唯一的虚拟IP地址相联系的应用程序状态数据;
所述一个或多个应用程序实例中的每一个处理来自多个用户的请求并形成多个交换,并且其中有效交换通过所述至少一个唯一的虚拟IP地址访问和修改应用程序状态数据,并且所述虚拟主机将与所述有效交换相关的应用程序状态数据写入所述永久存储介质;以及
响应于应用程序实例化的故障,将所述虚拟主机、所述容器和所述应用程序实例故障转移到所述一个或多个服务器中的另一个服务器,同时使用所述至少一个唯一虚拟IP地址维护存储在所述永久存储介质上的应用程序状态数据的读和写通信。
18.如权利要求17所述的用于在分布式计算环境中永久存储状态数据的方法,其特征在于,还包括:响应于所述应用程序实例化的故障,将所述虚拟主机绑定到所述容器和所述至少一个唯一虚拟IP地址,并且其中所述应用程序实例连续地从所述永久存储介质读取和写入应用程序状态数据。
19.如权利要求17所述的用于在分布式计算环境中永久存储状态数据的方法,其特征在于,还包括监视应用程序实例状态以发出故障转移事件或故障恢复事件的信号。
20.如权利要求17所述的用于在分布式计算环境中永久存储状态数据的方法,其特征在于,还包括:将对所述永久存储介质上可用的应用程序状态数据的写和读访问限制为仅限于有效应用程序实例。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201762475380P | 2017-03-23 | 2017-03-23 | |
US62/475,380 | 2017-03-23 | ||
PCT/US2018/023987 WO2018175864A1 (en) | 2017-03-23 | 2018-03-23 | Highly available stateful containers in a cluster environment |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110520843A CN110520843A (zh) | 2019-11-29 |
CN110520843B true CN110520843B (zh) | 2023-08-29 |
Family
ID=61966078
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201880018234.5A Active CN110520843B (zh) | 2017-03-23 | 2018-03-23 | 集群环境中高度可用的有状态容器 |
Country Status (7)
Country | Link |
---|---|
US (1) | US10558536B2 (zh) |
EP (2) | EP3586230A1 (zh) |
CN (1) | CN110520843B (zh) |
AU (1) | AU2018237327B2 (zh) |
CA (1) | CA3055987C (zh) |
SG (1) | SG11201908309SA (zh) |
WO (1) | WO2018175864A1 (zh) |
Families Citing this family (33)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10073691B2 (en) * | 2016-08-23 | 2018-09-11 | Cisco Technology, Inc. | Containerized upgrade in operating system level virtualization |
US10929232B2 (en) * | 2017-05-31 | 2021-02-23 | Intel Corporation | Delayed error processing |
US10503441B2 (en) * | 2017-11-28 | 2019-12-10 | Portworx, Inc. | Resolving failed or hanging mount points in a clustered storage solution for containers |
US10732995B2 (en) | 2018-02-27 | 2020-08-04 | Portworx, Inc. | Distributed job manager for stateful microservices |
US10831540B2 (en) | 2018-02-27 | 2020-11-10 | Portworx, Inc. | Hyper-convergence with scheduler extensions for software-defined container storage solutions |
US11263098B2 (en) * | 2018-07-02 | 2022-03-01 | Pivotal Software, Inc. | Database segment load balancer |
CN110896404B (zh) * | 2018-09-12 | 2021-09-14 | 华为技术有限公司 | 数据处理的方法、装置和计算节点 |
US10929166B2 (en) | 2018-10-19 | 2021-02-23 | Hewlett Packard Enterprise Development Lp | Enhanced data storage of virtual nodes in a data processing environment |
CN109710492A (zh) * | 2018-12-29 | 2019-05-03 | 北方工业大学 | 应用程序运行监控方法、介质及电子设备 |
US11726758B2 (en) * | 2019-02-07 | 2023-08-15 | Microsoft Technology Licensing, Llc | Efficient scaling of a container-based application in a distributed computing system |
WO2020222683A1 (en) | 2019-04-30 | 2020-11-05 | Telefonaktiebolaget Lm Ericsson (Publ) | Load balancing systems and methods |
CN110311973B (zh) * | 2019-06-28 | 2021-06-01 | 东北大学 | 一种面向多租户的影像云服务***及方法 |
US11119976B2 (en) * | 2019-09-24 | 2021-09-14 | International Business Machines Corporation | Stateful container migration |
US11467775B2 (en) | 2019-10-15 | 2022-10-11 | Hewlett Packard Enterprise Development Lp | Virtual persistent volumes for containerized applications |
CN111225063B (zh) * | 2020-01-20 | 2020-09-22 | 北京一流科技有限公司 | 用于静态分布式计算架构的数据交换***及其方法 |
US11917001B2 (en) * | 2020-02-04 | 2024-02-27 | Nutanix, Inc. | Efficient virtual IP address management for service clusters |
CN111488247B (zh) * | 2020-04-08 | 2023-07-25 | 上海云轴信息科技有限公司 | 一种管控节点多次容错的高可用方法及设备 |
US11687267B2 (en) | 2020-04-14 | 2023-06-27 | Hewlett Packard Enterprise Development Lp | Containerized application manifests and virtual persistent volumes |
US11693573B2 (en) | 2020-06-18 | 2023-07-04 | Hewlett Packard Enterprise Development Lp | Relaying storage operation requests to storage systems using underlying volume identifiers |
WO2021262058A1 (en) * | 2020-06-26 | 2021-12-30 | Telefonaktiebolaget Lm Ericsson (Publ) | A controller, a load balancer and methods therein for handling failures or changes of processing elements in a virtual network |
US11960773B2 (en) * | 2020-07-31 | 2024-04-16 | Hewlett Packard Enterprise Development Lp | Modifying virtual persistent volumes based on analysis of performance metrics |
US20220091572A1 (en) * | 2020-09-22 | 2022-03-24 | Rockwell Automation Technologies, Inc. | Integrating container orchestration systems with operational technology devices |
CN112131088B (zh) * | 2020-09-29 | 2024-04-09 | 北京计算机技术及应用研究所 | 一种基于健康检查和容器的高可用方法 |
US11563802B2 (en) * | 2020-11-06 | 2023-01-24 | Dh2I Company | Systems and methods for hierarchical failover groups |
CN112463290A (zh) * | 2020-11-10 | 2021-03-09 | 中国建设银行股份有限公司 | 动态调整计算容器的数量的方法、***、装置和存储介质 |
JP2022117711A (ja) * | 2021-02-01 | 2022-08-12 | 株式会社日立製作所 | サーバ管理システム、サーバ管理方法及びサーバ管理プログラム |
US11704165B2 (en) | 2021-03-16 | 2023-07-18 | International Business Machines Corporation | Persistently available container services through resurrection of user jobs in new compute container instances designated as lead instances |
CN113114571A (zh) * | 2021-03-26 | 2021-07-13 | 咪咕文化科技有限公司 | 数据包处理方法、装置、电子设备及存储介质 |
CN114095964B (zh) * | 2021-11-19 | 2023-05-26 | 中国联合网络通信集团有限公司 | 一种故障恢复方法、装置及计算机可读存储介质 |
CN114465847B (zh) * | 2022-01-21 | 2024-05-28 | 中国船舶重工集团公司第七0九研究所 | 一种基于容器的动态冗余可靠***和方法 |
CN115412530B (zh) * | 2022-08-30 | 2024-01-30 | 上海道客网络科技有限公司 | 一种多集群场景下服务的域名解析方法及*** |
CN115714713A (zh) * | 2022-10-25 | 2023-02-24 | 南方电网数字电网研究院有限公司 | 电力监控***多群组服务实例切换方法和装置 |
CN116996369B (zh) * | 2023-09-26 | 2024-02-09 | 苏州元脑智能科技有限公司 | 容器化管理服务器及其主备管理方法、装置和存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101398770A (zh) * | 2007-09-30 | 2009-04-01 | 赛门铁克公司 | 迁移一个或多个虚拟机的***和方法 |
CN106302771A (zh) * | 2016-08-23 | 2017-01-04 | 浪潮电子信息产业股份有限公司 | 一种基于Docker容器创建的应用的域名配置方法 |
Family Cites Families (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7712274B2 (en) | 2006-12-29 | 2010-05-11 | Usg Interiors, Inc. | Downwardly accessible lift-and-shift ceiling system |
US7769864B2 (en) * | 2007-08-02 | 2010-08-03 | Sap Ag | Adaptation of clusters to virtualization technologies |
US8250588B2 (en) | 2009-06-16 | 2012-08-21 | Microsoft Corporation | Persisting application state |
US9344494B2 (en) | 2011-08-30 | 2016-05-17 | Oracle International Corporation | Failover data replication with colocation of session state data |
US9515869B2 (en) * | 2012-01-18 | 2016-12-06 | Dh2I Company | Systems and methods for server cluster application virtualization |
US9251194B2 (en) | 2012-07-26 | 2016-02-02 | Microsoft Technology Licensing, Llc | Automatic data request recovery after session failure |
US9323628B2 (en) * | 2012-10-09 | 2016-04-26 | Dh2I Company | Instance level server application monitoring, load balancing, and resource allocation |
US9674249B1 (en) | 2013-03-11 | 2017-06-06 | DataTorrent, Inc. | Distributed streaming platform for real-time applications |
US9148465B2 (en) * | 2013-04-01 | 2015-09-29 | Oracle International Corporation | Update management for a distributed computing system |
US10237342B2 (en) * | 2014-09-17 | 2019-03-19 | Dh2I Company | Coordinated and high availability storage access |
EP3304295B1 (en) | 2015-06-05 | 2024-05-29 | Nutanix, Inc. | Architecture for managing i/o and storage for a virtualization environment using executable containers and virtual machines |
US9921885B2 (en) | 2015-06-19 | 2018-03-20 | Vmware, Inc. | Resource management for containers in a virtualized environment |
US10579403B2 (en) * | 2015-06-29 | 2020-03-03 | Vmware, Inc. | Policy based provisioning of containers |
US9998356B2 (en) * | 2015-07-15 | 2018-06-12 | Cisco Technology, Inc. | Synchronizing network convergence and virtual host migration |
US10425348B2 (en) | 2015-07-22 | 2019-09-24 | The Regents Of The University Of Colorado | Stateless network functions |
CA2957584A1 (en) | 2016-02-12 | 2017-08-12 | Coho Data, Inc. | Methods, systems, and devices for adaptive data resource assignment and placement in distributed data storage systems |
US10812582B2 (en) | 2016-03-10 | 2020-10-20 | Vmware, Inc. | Management of applications across nodes using exo-clones |
US10153941B2 (en) | 2016-05-17 | 2018-12-11 | Microsoft Technology Licensing, Llc | Distributed operational control in computing systems |
US20170366605A1 (en) | 2016-06-16 | 2017-12-21 | Alcatel-Lucent Usa Inc. | Providing data plane services for applications |
-
2018
- 2018-03-23 US US15/933,885 patent/US10558536B2/en active Active
- 2018-03-23 SG SG11201908309S patent/SG11201908309SA/en unknown
- 2018-03-23 WO PCT/US2018/023987 patent/WO2018175864A1/en unknown
- 2018-03-23 EP EP18717480.0A patent/EP3586230A1/en active Pending
- 2018-03-23 CN CN201880018234.5A patent/CN110520843B/zh active Active
- 2018-03-23 EP EP23183930.9A patent/EP4242841A3/en active Pending
- 2018-03-23 AU AU2018237327A patent/AU2018237327B2/en active Active
- 2018-03-23 CA CA3055987A patent/CA3055987C/en active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101398770A (zh) * | 2007-09-30 | 2009-04-01 | 赛门铁克公司 | 迁移一个或多个虚拟机的***和方法 |
CN106302771A (zh) * | 2016-08-23 | 2017-01-04 | 浪潮电子信息产业股份有限公司 | 一种基于Docker容器创建的应用的域名配置方法 |
Also Published As
Publication number | Publication date |
---|---|
EP4242841A3 (en) | 2023-09-27 |
US20190102265A1 (en) | 2019-04-04 |
AU2018237327B2 (en) | 2023-02-02 |
US10558536B2 (en) | 2020-02-11 |
WO2018175864A1 (en) | 2018-09-27 |
SG11201908309SA (en) | 2019-10-30 |
EP4242841A2 (en) | 2023-09-13 |
EP3586230A1 (en) | 2020-01-01 |
CA3055987A1 (en) | 2018-09-27 |
CN110520843A (zh) | 2019-11-29 |
AU2018237327A1 (en) | 2019-10-03 |
CA3055987C (en) | 2023-03-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110520843B (zh) | 集群环境中高度可用的有状态容器 | |
US10042628B2 (en) | Automated upgrade system for a service-based distributed computer system | |
US9684545B2 (en) | Distributed and continuous computing in a fabric environment | |
US9515869B2 (en) | Systems and methods for server cluster application virtualization | |
US9519795B2 (en) | Interconnect partition binding API, allocation and management of application-specific partitions | |
US10237342B2 (en) | Coordinated and high availability storage access | |
US9582221B2 (en) | Virtualization-aware data locality in distributed data processing | |
US10025638B2 (en) | Multiple-cloud-computing-facility aggregation | |
US11070419B2 (en) | Methods and systems to troubleshoot and localize storage failures for a multitenant application run in a distributed computing system | |
US10404613B1 (en) | Placement of control and data plane resources | |
US12028411B2 (en) | Systems and methods for hierarchical failover groups | |
CN112965790B (zh) | 一种基于pxe协议的虚拟机启动方法及电子设备 | |
Sedaghat et al. | Nefele: Process Orchestration for the Cloud | |
CN116189781A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |