WO2022037268A1 - 一种容器管理方法、设备以及介质 - Google Patents

一种容器管理方法、设备以及介质 Download PDF

Info

Publication number
WO2022037268A1
WO2022037268A1 PCT/CN2021/103320 CN2021103320W WO2022037268A1 WO 2022037268 A1 WO2022037268 A1 WO 2022037268A1 CN 2021103320 W CN2021103320 W CN 2021103320W WO 2022037268 A1 WO2022037268 A1 WO 2022037268A1
Authority
WO
WIPO (PCT)
Prior art keywords
container
offline
key
value pair
state
Prior art date
Application number
PCT/CN2021/103320
Other languages
English (en)
French (fr)
Inventor
张会健
Original Assignee
苏州浪潮智能科技有限公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 苏州浪潮智能科技有限公司 filed Critical 苏州浪潮智能科技有限公司
Publication of WO2022037268A1 publication Critical patent/WO2022037268A1/zh

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45562Creating, deleting, cloning virtual machine instances
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45575Starting, stopping, suspending or resuming virtual machine instances
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45595Network integration; Enabling network access in virtual machine instances

Definitions

  • the value in the key-value pair corresponding to the state is updated from the deletion state to the deletion completed state.
  • the value in the key-value pair corresponding to the state is updated from the takeover state is offline, and selects the takeover worker node again to restart the offline container.
  • a memory where the memory stores a computer program that can be executed on the processor, wherein when the processor executes the program, the processor executes the steps of any one of the container management methods described above.
  • FIG. 3 is a flowchart of a container state monitoring process on a worker node provided by an embodiment of the present invention
  • an embodiment of the present invention provides a container management method, as shown in FIG. 1 , which may include the steps:
  • IP Internet Protocol, Internet Protocol
  • the key-value pair to record the container name can be /member/node_ip/container/container_id/Name
  • the key-value pair to record the container's external service IP can be /member/node_ip/container/container_id/IP
  • the key-value pair to record the container's external service port can be /member/node_ip/container/container_id/Port
  • the key-value pair to record the configuration file directory can be /member/node_ip/container/container_id/ConfigDir.
  • the container operation status monitoring service judges whether the container is running normally through the following conditions: querying whether the container is running through docker ps, judging whether the sub-service provided inside the container is running normally, and judging whether the sub-service normally provides services to the outside world.
  • the lease timeout period can be 25 seconds, and the container status is queried every 3 seconds. If the above conditions are met, the lease is updated regularly.
  • the key-value pair (/member/node_ip/container/container_id) corresponding to the ID of the container is deleted, indicating that the node has not updated the key-value lease corresponding to a container in time, so as to determine that the container is offline, but the node is still running, only the The value in the key-value pair corresponding to the state of the container under the node is updated to the offline state.
  • the lease update will also fail. At this time, it is still necessary to update the value in the key-value pair corresponding to the state of the corresponding container to the offline state.
  • the container status monitoring service will actively stop the container of this node to prevent multiple container copies running when the container is pulled up by other nodes. That is, the update of the value in the key-value pair corresponding to the state of the container can be the update of the management node after the worker node is disconnected from the management node and passively causes the lease to expire, or the state of the container on the worker node.
  • the monitoring service monitors that there is a problem with the status of the container, and the management node is updating after the lease expires because it does not actively renew the lease.
  • step S4 the configuration information of the offline container is obtained from the key-value pair corresponding to the configuration information of the container on the management node by using the ID of the offline container, so as to obtain the configuration information of the offline container according to the configuration information to restart the offline container, further comprising:
  • step S4 further includes:
  • the management node In response to the management node restarting and detecting that the value in the key-value pair corresponding to the original state is the takeover state and the second key-value pair does not exist, the value in the key-value pair corresponding to the state is taken over by The status is updated to offline, and the worker node that takes over is selected again to restart the offline container.
  • the memory 510 stores a computer program 511 that can be executed on the processor, and the processor 520 executes the steps of any of the above container management methods when executing the program.

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

本发明公开了一种容器管理方法,包括以下步骤:根据容器的状态对应的键值对判断容器是否离线;响应于容器离线,获取正在运行的若干个工作节点并选择其中一个作为接管的工作节点;将离线的容器的ID写入接管的工作节点在管理节点创建的第一键值对中;接管的工作节点响应于检测到第一键值对中写入离线的容器的ID,利用离线的容器的ID从管理节点上容器的配置信息对应的键值对中获取离线的容器的配置信息,以根据配置信息重启离线的容器。本发明还公开了一种计算机设备以及可读存储介质。本发明提出的方案可以实现容器的高可用机制,当容器在某个节点离线时或者节点宕机时,可以选择其他正常的节点重新进行容器的拉起操作。

Description

一种容器管理方法、设备以及介质
本申请要求于2020年08月21日提交中国国家知识产权局,申请号为CN202010848756.7,发明名称为“一种容器管理方法、设备以及介质”的中国专利申请的优先权,其全部内容通过引用结合在本申请中。
技术领域
本发明涉及容器领域,具体涉及一种容器管理方法、设备以及存储介质。
背景技术
随着当前云计算的发展,容器技术得到广泛的应用,在服务器平台上某些应用场景下对容器的可靠性提出了更高的要求,现有的基于docker(一种开源的应用容器引擎)的容器技术对高可用支持比较有限。
发明内容
有鉴于此,为了克服上述问题的至少一个方面,本发明实施例提出一种容器管理方法,包括以下步骤:
根据容器的状态对应的键值对判断所述容器是否离线;
响应于所述容器离线,获取正在运行的若干个工作节点并选择其中一个作为接管的工作节点;
将离线的所述容器的ID写入所述接管的工作节点在管理节点创建的第一键值对中;
所述接管的工作节点响应于检测到所述第一键值对中写入离线的容器的ID,利用所述离线的容器的ID从所述管理节点上所述容器的配置信息对应的键值对中获取所述离线的容器的配置信息,以根据所述配置信息重启所述离线的容器。
在一些实施例中,根据容器的状态对应的键值对判断所述容器是否离线,进一步包括:
判断在所述管理节点上的所述容器的ID对应的键值对的租约和/或所述工作节点的IP对应的键值对的租约是否停止更新;
响应于所述ID对应的键值对的租约和/或所述IP对应的键值对的租约停止更新,将所述ID对应的键值对删除和/或将所述IP对应的键值对删除;
将对应的容器和/或对应的工作节点下的所有的容器的所述状态对应的键值对中的值由就绪状态更新为离线状态。
在一些实施例中,响应于所述容器离线,获取正在运行的若干个工作节点并选择其中一个作为接管的工作节点,进一步包括:
响应于所述容器的所述状态对应的键值对中的值为所述离线状态,确定所述容器离线,获取所有所述IP对应的键值对以确定正在运行的若干个工作节点。
在一些实施例中,获取正在运行的若干个工作节点并选择其中一个作为接管的工作节点,进一步包括:
响应于所述工作节点均处于离线状态且接收到删除所述离线的容器的指令,将所述离线的容器删除,并将所述离线的容器的所述状态对应的键值对中的值由离线状态更新为正在删除状态;
响应于所述离线的容器删除完毕,将所述状态对应的键值对中的值由正在删除状态更新为删除完毕状态。
在一些实施例中,将离线的容器的ID写入所述接管的工作节点在管理节点创建的第一键值对中,进一步包括:
将所述离线的容器的原状态对应的键值对中的值由离线状态更新为接管状态。
在一些实施例中,利用所述离线的容器的ID从所述管理节点上所述容器的配置信息对应的键值对中获取所述离线的容器的配置信息,以根据所述配置信息重启所述离线的容器,进一步包括:
在所述管理节点上创建第二键值对,并设置所述第二键值对的租约;
响应于所述接管的工作节点在所述租约内根据所述配置信息成功重启所述离线的容器,在所述管理节点上重新创建所述重启的容器的所述状态对应的键值对;
将重新创建的所述状态对应的键值对中的值设置为就绪状态,并删除原所述状态对应的键值对。
在一些实施例中,还包括:
响应于所述接管的工作节点在所述租约内根据所述配置信息未成功重启所述离线的容器,将所述第二键值对删除,并再次选择其他的接管的工作节点以重启所述离线的容器。
在一些实施例中,还包括:
响应于所述管理节点重启并检测到原状态对应的键值对中的值为接管状态且所述第二键值对不存在,将所述状态对应的键值对中的值由接管状态更新为离线状态,并再次选择接管的工作节点以重启所述离线的容器。
基于同一发明构思,根据本发明的另一个方面,本发明的实施例还提供了一种计算机设备,包括:
至少一个处理器;以及
存储器,所述存储器存储有可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时执行如上所述的任一种容器管理方法的步骤。
基于同一发明构思,根据本发明的另一个方面,本发明的实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时执行如上所述的任一种容器管理方法的步骤。
本发明具有以下有益技术效果之一:本发明提出的方案可以实现容器的高可用机制,当容器在某个节点离线时或者节点宕机时,可以选择其他正常的节点重新进行容器的拉起操作,降低了对象存储服务的故障时间,保证容器对外提供业务的连续性。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的实施例。
图1为本发明的实施例提供的容器管理方法的流程示意图;
图2为本发明的实施例提供的容器的状态种类示意图;
图3为本发明的实施例提供的工作节点上的容器状态监控流程框图;
图4为本发明的实施例提供的工作节点和管理节点上的容器接管的流程框图;
图5为本发明的实施例提供的计算机设备的结构示意图;
图6为本发明的实施例提供的计算机可读存储介质的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明实施例进一步详细说明。
需要说明的是,本发明实施例中所有使用“第一”和“第二”的表述均是为了区分两个相同名称非相同的实体或者非相同的参量,可见“第一”“第二”仅为了表述的方便,不应理解为对本发明实施例的限定,后续实施例对此不再一一说明。
需要说明的是,在本发明的实施例中,容器有六种状态:creating表示容器正在创建,进行容器所需资源的准备工作;running表示可以正常对外提供对象存储服务;offline表示容器离线,无法对外正常提供对象存储服务;Takeover表示之前离线的容器正在被其他节点接管;deleting表示容器正在被删除,清理之前容器使用的资源;deleted表示容器所用资源清理完毕,将服务器中此容器相关的键值删除。其中,由于创建和删除为耗时较久的长流程的操作,可以通过creating和deleting两种状态分别跟踪。
根据本发明的一个方面,本发明的实施例提出一种容器管理方法,如图1所示,其可以包括步骤:
S1,根据容器的状态对应的键值对判断所述容器是否离线;
S2,响应于所述容器离线,获取正在运行的若干个工作节点并选择其中一个作为接管的工作节点;
S3,将离线的所述容器的ID写入所述接管的工作节点在管理节点创建的第一键值对中;
S4,所述接管的工作节点响应于检测到所述第一键值对中写入所述离 线的容器的ID,利用所述离线的容器的ID从所述管理节点上所述容器的配置信息对应的键值对中获取所述离线的容器的配置信息,以根据所述配置信息重启所述离线的容器。
本发明提出的方案可以实现容器的高可用机制,当容器在某个节点离线时或者节点宕机时,可以选择其他正常的节点重新进行容器的拉起操作,降低了对象存储服务的故障时间,保证容器对外提供业务的连续性。
在一些实施例中,步骤S1之前还可以包括:
根据工作节点的IP(Internet Protocol,网际互连协议)在所述管理节点上创建键值对,对所述IP对应的键值对设置租约,并定期更新所述IP对应的键值对的租约;
响应于所述工作节点检测到有新的容器启动,根据所述工作节点的IP和所述容器的ID(Identity,身份标识)在所述管理节点上创建键值对,并在所述管理节点上创建所述状态对应的键值对;
将所述状态对应的键值对中的值设置为创建状态;
响应于所述容器正常运行,将所述状态对应的键值对中的值由创建状态更新为就绪状态;
对所述容器的ID对应的键值对设置租约,并定时检测所述容器的状态以定期更新所述容器的ID对应的键值对的租约。
具体的,可以首先在集群中管理节点上部署服务器,用以提供分布式键值对存储功能。并在集群中的工作节点上部署容器运行状态监控服务,用于将容器状态信息注册到服务器。在一些实施例中,服务器可以是ZooKeeper服务器或者etcd服务器。
其中,如图3所示,容器运行状态监控服务可以实现向管理节点上的服务器注册本节点的IP信息,并基于IP信息在服务器上创建IP对应的键 值对(/member/node_ip),这里的node_ip为节点实际的IP地址。同时在此键值对上设置租约,并定期更新租约防止其超时,租约超时后(即节点宕机)服务器会自动将租约对应的IP对应的键值对(/member/node_ip)删除。
在一些实施例中,当节点上有容器刚刚创建启动时,可以通过docker ps命令查询容器ID,并基于ID创建容器的ID对应的键值对(/member/node_ip/container/container_id)。然后查询本节点上运行的容器的配置信息,例如容器对外服务的IP地址,端口信息,使用的容器镜像,配置文件目录,容器运行状态和更新时间等等,然后根据查询到的配置信息在服务器上创建对应的键值对,例如记录容器名称的键值对可以是/member/node_ip/container/container_id/Name,记录容器对外服务IP的键值对可以是/member/node_ip/container/container_id/IP,记录容器对外服务端口的键值对可以是/member/node_ip/container/container_id/Port,记录配置文件目录的键值对可以是/member/node_ip/container/container_id/ConfigDir。并同时创建状态对应的价键值对(/member/node_ip/container/container_id/State),并将状态对应的键值对中的值设置为创建状态(creating),表示容器服务尚未进入就绪状态。
需要说明的是,容器在初始创建时,会有初始化的过程,此时容器则处于创建状态。
在一些实施例中,容器运行状态监控服务通过以下条件判断容器是否正常运行:通过docker ps查询容器是否正在运行,判断容器内部提供的子服务是否正常运行,判断子服务是否正常对外提供服务。当上面条件均满足时,将状态对应的键值对(/member/node_ip/container/container_id/State)中的值更新为就绪状态(running),并对容器的ID对应的键值对设置租约,例如租约超时时间可以为25秒,每隔3秒钟查询一次容器状态,如果上述条件均满足时,则定期更新租约。当上述条件不能同时满足时不再更新租 约,并将状态对应的键值对(/member/node_ip/container/container_id/State)中的值更新为离线状态(offline),服务器上的容器的ID对应的键值对(/member/node_ip/container/container_id)会因为租约超时被删除。
例如,容器为提供对象存储服务的容器,则可以通过docker ps查询容器是否正在运行,并在容器内部通过swift-init main status查询对象存储proxy-server、container-server、account-server、object-server四个子服务的状态是否为运行,这四个服务分别提供rest api对外接口、桶、租户、对象的管理功能。然后可以通过rest api完成对象存储中admin用户的认证并获取token,主要保证对象存储服务可以与keystone等用户认证服务正常通信,并通过rest api完成admin用户对象存储空间信息查询,以判断上述四个自服务是否能够正常对外提供服务。
在一些实施例中,步骤S1,根据容器的状态对应的键值对判断所述容器是否离线,进一步包括:
S11,判断在所述管理节点上的所述容器的ID对应的键值对的租约和/或所述工作节点的IP对应的键值对的租约是否停止更新;
S12,响应于所述ID对应的键值对的租约和/或所述IP对应的键值对的租约停止更新,将所述ID对应的键值对删除和/或将所述IP对应的键值对删除;
S13,将对应的容器和/或对应的工作节点下的所有的容器的所述状态对应的键值对中的值由所述就绪状态更新为离线状态。
具体的,可以在集群的管理节点上部署HA(High Availability,高可用性)调度程序,用于监控服务器中的键值对的变化,在一些实施例中,以下两种情况下可以确定某节点上的容器离线,并将状态对应的键值对中的值由所述就绪状态更新为离线状态。
1、节点的IP对应的键值对(/member/node_ip)被删除,表示某个节点没有及时更新此键值对对应的租约,从而确定此节点离线,同时确定此节点上的所有容器离线,并将该节点下的所有容器的状态对应的键值对中的值更新为离线状态。
2、容器的ID对应的键值对(/member/node_ip/container/container_id)被删除,表示节点没有及时更新某容器对应的键值租约,从而确定容器离线,但是节点尚在运行,则只将该节点下的该容器的状态对应的键值对中的值更新为离线状态。
需要说明的是,当工作节点与服务器的网络中断时也会导致租约更新失败,此时仍需要将对应的容器的状态对应的键值对中的值更新为离线状态。同时容器状态监控服务会主动停止本节点的容器,以防止容器在其他节点拉起时出现多个容器副本运行的情况。也即对容器的状态对应的键值对中的值的更新可以是当工作节点与管理节点断开连接后且被动导致租约到期后,管理节点进行更新,也可以是工作节点上的容器状态监控服务监控到容器的状态出问题,主动不更新租约导致租约到期后,管理节点在进行更新。
在一些实施例中,响应于所述容器离线,步骤S2,获取正在运行的若干个工作节点并选择其中一个作为接管的工作节点,进一步包括:
响应于所述容器的所述状态对应的键值对中的值为所述离线状态,确定所述容器离线,获取所有所述IP对应的键值对以确定正在运行的若干个工作节点。
具体的,如图4所示,当集群中某容器离线时,可以通过HA调度程序根据服务器中/member键值下node_ip列表获取当前正在运行的节点,然后选择某个节点进行容器的重新拉起操作,向此节点对应的第一键值对(/member/node_ip/task)下写入拉起操作对应的容器ID。
在一些实施例中,步骤S2,获取正在运行的若干个工作节点并选择其中一个作为接管的工作节点,进一步包括:
响应于所述工作节点均处于离线状态且接收到删除所述离线的容器的指令,将所述离线的容器删除,并将所述离线的容器的所述状态对应的键值对中的值由离线状态更新为正在删除状态;
响应于所述离线的容器删除完毕,将所述状态对应的键值对中的值由正在删除状态更新为删除完毕状态。
具体的,如图2所示,如果集群中其他节点均未处于运行状态,且接收到了用户发出的删除离线的容器的指令,则将对应的容器删除,并将所述离线的容器的所述状态对应的键值对中的值由离线状态更新为正在删除状态,如果容器已经删除完毕,则可以根据用户发出的已确认删除完毕的指令,将所述状态对应的键值对中的值由正在删除状态(deleting)更新为删除完毕状态(deleted)。
需要说明的是,deleting和deleted需要根据用户相关的指令才能进行更新,且如图2所示,只有当容器处于running状态或处于offline状态时,才能进行容器的删除。当容器处于running状态时,响应于接收到删除所述容器的指令,将待删除的容器的所述状态对应的键值对中的值由就绪状态更新为正在删除状态;响应于所述待删除的容器删除完毕,将所述状态对应的键值对中的值由正在删除状态更新为删除完毕状态。当容器处于offline状态且集群中不存在正常运行的节点,则会根据指令进行容器的删除操作,否则会进行容器的重新拉起操作,不会进行根据指令进行容器的删除操作。
在一些实施例中,步骤S3,将离线的所述容器的ID写入所述接管的工作节点在管理节点创建的第一键值对中,进一步包括:
将所述离线的容器的原所述状态对应的键值对中的值由离线状态更新 为接管状态。
具体的,如图2所示,当该容器的ID被写入其他节点的第一键值对(/member/node_ip/task)下后,该容器的在原节点下的状态对应的键值对中的值由离线状态(offline)更新为接管状态(takeover),表示该容器正在接管。如果容器在此节点接管失败,重新将在原节点下的状态对应的键值对中的值设置为offline。
在一些实施例中,步骤S4,利用所述离线的容器的ID从所述管理节点上所述容器的配置信息对应的键值对中获取所述离线的容器的配置信息,以根据所述配置信息重启所述离线的容器,进一步包括:
S41,在所述管理节点上创建第二键值对,并设置所述第二键值对的租约;
S42,响应于所述接管的工作节点在所述租约内根据所述配置信息成功重启所述离线的容器,在所述管理节点上重新创建所述重启的容器的所述状态对应的键值对;
S43,将重新创建的所述状态对应的键值对中的值设置为就绪状态,并删除原所述状态对应的键值对。
具体的,当被选择执行容器拉起操作的节点上的容器监控服务观察到本节点对应的第一键值对(/member/node_ip/task)中添加了容器ID,则确定有新的拉起操作需要执行,从第一键值对中获取需要拉起的容器ID,并根据容器ID在服务器中查询此容器对应的配置信息,例如容器名称、容器使用的镜像、容器对外服务的IP及端口信息、及容器的配置文件目录等。然后执行容器的创建操作。此时,在管理节点上创建被选择执行容器拉起操作的节点对应的第二键值对(/member/node_ip/container/container_id/TakeoverLease),并设定租约期限 (例如300秒),如果该节点在租约时限内成功将离线的容器启动,则在管理节点上重新创建所述重启的容器的所述状态对应的键值对,并将重新创建的所述状态对应的键值对中的值设置为就绪状态,同时删除原所述状态对应的键值对。
需要说明的是,如图2所示,由于重新启动离线的节点不需要初始化的过程,因此在启动过程中没有creating状态,只要容器运行状态监控服务根据上述三个条件判断容器正常运行,则将容器的状态设置为running。
在一些实施例中,步骤S4,还包括:
S44,响应于所述接管的工作节点在所述租约内根据所述配置信息未成功重启所述离线的容器,将所述第二键值对删除,并再次选择其他的接管的工作节点以重启所述离线的容器。
具体的,如图2所示,如果在租约时限未成功将离线的容器启动,也即容器的状态没有恢复为running,则会因为TakeoverLease租约到期导致第二键值对删除,集群管理节点上的HA调度服务观察到键值对删除事件后,重新将容器的原状态对应的键值对中的值由Takeover设置为offline,以准备让其他集群节点进行接管。
在一些实施例中,步骤S4,还包括:
响应于所述管理节点重启并检测到原所述状态对应的键值对中的值为接管状态且所述第二键值对不存在,将所述状态对应的键值对中的值由接管状态更新为离线状态,并再次选择接管的工作节点以重启所述离线的容器。
具体的,在容器接管过程中如果发生集群管理节点重启,HA调度服务在启动时首先检查容器的状态是否为takeover,如果状态对应的键值对中的值为takeover,但是第二键值对 (/member/node_ip/container/container_id/TakeoverLease)不存在,说明在节点重启过程中服务器存在事件丢失,则需要将离线的容器的原所述状态对应的键值对中的值重新更新为offline,准备进行容器的再次拉起操作。
本发明提供的方案通过容器状态监控服务利用服务器的键值对租约机制,当容器正常运行时监控程序将容器状态更新到服务器,在/member下创建相应的键值对,并定时更新键值租约。位于集群管理节点上HA调度程序监控/member下键值对变化,当容器离线或节点宕机时会因为容器监控程序停止更新键值租约导致容器对应的键值对被删除,HA调度程序从服务器记录的当前运行的节点中选择某一节点进行swift容器接管,向相应节点对应的task键值对下写入需要接管的容器ID。容器监控服务同样观察到本节点对应的task键发生变化,从中读取要拉起的容器Id,并从服务器记录中根据容器Id查询容器使用的镜像、ip、端口、配置文件目录等信息,然后将容器在新节点重新启动。
基于同一发明构思,根据本发明的另一个方面,如图5所示,本发明的实施例还提供了一种计算机设备501,包括:
至少一个处理器520;以及
存储器510,存储器510存储有可在处理器上运行的计算机程序511,处理器520执行程序时执行如上的任一种容器管理方法的步骤。
基于同一发明构思,根据本发明的另一个方面,如图6所示,本发明的实施例还提供了一种计算机可读存储介质601,计算机可读存储介质601存储有计算机程序指令610,计算机程序指令610被处理器执行时执行如上的任一种容器管理方法的步骤。
最后需要说明的是,本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,可以通过计算机程序来指令相关硬件来完成,程 序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。
此外,应该明白的是,本文的计算机可读存储介质(例如,存储器)可以是易失性存储器或非易失性存储器,或者可以包括易失性存储器和非易失性存储器两者。
本领域技术人员还将明白的是,结合这里的公开所描述的各种示例性逻辑块、模块、电路和算法步骤可以被实现为电子硬件、计算机软件或两者的组合。为了清楚地说明硬件和软件的这种可互换性,已经就各种示意性组件、方块、模块、电路和步骤的功能对其进行了一般性的描述。这种功能是被实现为软件还是被实现为硬件取决于具体应用以及施加给整个系统的设计约束。本领域技术人员可以针对每种具体应用以各种方式来实现的功能,但是这种实现决定不应被解释为导致脱离本发明实施例公开的范围。
以上是本发明公开的示例性实施例,但是应当注意,在不背离权利要求限定的本发明实施例公开的范围的前提下,可以进行多种改变和修改。根据这里描述的公开实施例的方法权利要求的功能、步骤和/或动作不需以任何特定顺序执行。此外,尽管本发明实施例公开的元素可以以个体形式描述或要求,但除非明确限制为单数,也可以理解为多个。
应当理解的是,在本文中使用的,除非上下文清楚地支持例外情况,单数形式“一个”旨在也包括复数形式。还应当理解的是,在本文中使用的“和/或”是指包括一个或者一个以上相关联地列出的项目的任意和所有可能组合。
上述本发明实施例公开实施例序号仅仅为了描述,不代表实施例的优劣。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
所属领域的普通技术人员应当理解:以上任何实施例的讨论仅为示例性的,并非旨在暗示本发明实施例公开的范围(包括权利要求)被限于这些例子;在本发明实施例的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,并存在如上的本发明实施例的不同方面的许多其它变化,为了简明它们没有在细节中提供。因此,凡在本发明实施例的精神和原则之内,所做的任何省略、修改、等同替换、改进等,均应包含在本发明实施例的保护范围之内。

Claims (10)

  1. 一种容器管理方法,其特征在于,包括以下步骤:
    根据容器的状态对应的键值对判断所述容器是否离线;
    响应于所述容器离线,获取正在运行的若干个工作节点并选择其中一个作为接管的工作节点;
    将离线的所述容器的ID写入所述接管的工作节点在管理节点创建的第一键值对中;
    所述接管的工作节点响应于检测到所述第一键值对中写入离线的容器的ID,利用所述离线的容器的ID从所述管理节点上所述容器的配置信息对应的键值对中获取所述离线的容器的配置信息,以根据所述配置信息重启所述离线的容器。
  2. 如权利要求1所述的方法,其特征在于,根据容器的状态对应的键值对判断所述容器是否离线,进一步包括:
    判断在所述管理节点上的所述容器的ID对应的键值对的租约和/或所述工作节点的IP对应的键值对的租约是否停止更新;
    响应于所述ID对应的键值对的租约和/或所述IP对应的键值对的租约停止更新,将所述ID对应的键值对删除和/或将所述IP对应的键值对删除;
    将对应的容器和/或对应的工作节点下的所有的容器的所述状态对应的键值对中的值由就绪状态更新为离线状态。
  3. 如权利要求2所述的方法,其特征在于,响应于所述容器离线,获取正在运行的若干个工作节点并选择其中一个作为接管的工作节点,进一步包括:
    响应于所述容器的所述状态对应的键值对中的值为所述离线状态,确 定所述容器离线,获取所有所述IP对应的键值对以确定正在运行的若干个工作节点。
  4. 如权利要求3所述的方法,其特征在于,获取正在运行的若干个工作节点并选择其中一个作为接管的工作节点,进一步包括:
    响应于所述工作节点均处于离线状态且接收到删除所述离线的容器的指令,将所述离线的容器删除,并将所述离线的容器的所述状态对应的键值对中的值由离线状态更新为正在删除状态;
    响应于所述离线的容器删除完毕,将所述状态对应的键值对中的值由正在删除状态更新为删除完毕状态。
  5. 如权利要求1所述的方法,其特征在于,将离线的容器的ID写入所述接管的工作节点在管理节点创建的第一键值对中,进一步包括:
    将所述离线的容器的原状态对应的键值对中的值由离线状态更新为接管状态。
  6. 如权利要求5所述的方法,其特征在于,利用所述离线的容器的ID从所述管理节点上所述容器的配置信息对应的键值对中获取所述离线的容器的配置信息,以根据所述配置信息重启所述离线的容器,进一步包括:
    在所述管理节点上创建第二键值对,并设置所述第二键值对的租约;
    响应于所述接管的工作节点在所述租约内根据所述配置信息成功重启所述离线的容器,在所述管理节点上重新创建所述重启的容器的所述状态对应的键值对;
    将重新创建的所述状态对应的键值对中的值设置为就绪状态,并删除原所述状态对应的键值对。
  7. 如权利要求6所述的方法,其特征在于,还包括:
    响应于所述接管的工作节点在所述租约内根据所述配置信息未成功重 启所述离线的容器,将所述第二键值对删除,并再次选择其他的接管的工作节点以重启所述离线的容器。
  8. 如权利要求6所述的方法,其特征在于,还包括:
    响应于所述管理节点重启并检测到原状态对应的键值对中的值为接管状态且所述第二键值对不存在,将所述状态对应的键值对中的值由接管状态更新为离线状态,并再次选择接管的工作节点以重启所述离线的容器。
  9. 一种计算机设备,包括:
    至少一个处理器;以及
    存储器,所述存储器存储有可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时执行如权利要求1-8任意一项所述的方法的步骤。
  10. 一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时执行如权利要求1-8任意一项所述的方法的步骤。
PCT/CN2021/103320 2020-08-21 2021-06-29 一种容器管理方法、设备以及介质 WO2022037268A1 (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN202010848756.7A CN111966466A (zh) 2020-08-21 2020-08-21 一种容器管理方法、设备以及介质
CN202010848756.7 2020-08-21

Publications (1)

Publication Number Publication Date
WO2022037268A1 true WO2022037268A1 (zh) 2022-02-24

Family

ID=73389935

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/CN2021/103320 WO2022037268A1 (zh) 2020-08-21 2021-06-29 一种容器管理方法、设备以及介质

Country Status (2)

Country Link
CN (1) CN111966466A (zh)
WO (1) WO2022037268A1 (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111966466A (zh) * 2020-08-21 2020-11-20 苏州浪潮智能科技有限公司 一种容器管理方法、设备以及介质
CN113220418B (zh) * 2021-05-07 2022-11-08 烽火通信科技股份有限公司 一种基于容器的资源管理方法和装置
CN113703866B (zh) * 2021-08-25 2024-04-26 上海哔哩哔哩科技有限公司 配置中心信息同步方法及系统

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20190102260A1 (en) * 2017-09-29 2019-04-04 Ca, Inc. Failover service to support high availability of monolithic software applications
CN110535717A (zh) * 2019-08-16 2019-12-03 济南浪潮数据技术有限公司 一种容器检测方法及装置
CN111966466A (zh) * 2020-08-21 2020-11-20 苏州浪潮智能科技有限公司 一种容器管理方法、设备以及介质

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20190102260A1 (en) * 2017-09-29 2019-04-04 Ca, Inc. Failover service to support high availability of monolithic software applications
CN110535717A (zh) * 2019-08-16 2019-12-03 济南浪潮数据技术有限公司 一种容器检测方法及装置
CN111966466A (zh) * 2020-08-21 2020-11-20 苏州浪潮智能科技有限公司 一种容器管理方法、设备以及介质

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
VICTOR FARCIC: "THE DEVOPS 2.0 TOOLKIT: AUTOMATING THE CONTINUOUS DEPLOYMENT PIPELINE WITH CONTAINERIZED MICROSERVICES", 30 June 2018, article VIKTOR FARCIC: "Docker Swarm Walkthrough" *

Also Published As

Publication number Publication date
CN111966466A (zh) 2020-11-20

Similar Documents

Publication Publication Date Title
WO2022037268A1 (zh) 一种容器管理方法、设备以及介质
US11740975B2 (en) System and method for managing blockchain nodes
US10915412B2 (en) System and method for live migration of a virtual machine
KR101970839B1 (ko) 서비스의 2차 위치에서의 작업의 재생 기법
US9984140B1 (en) Lease based leader election system
EP3127018B1 (en) Geographically-distributed file system using coordinated namespace replication
US10250693B2 (en) Idempotence for database transactions
US11966307B2 (en) Re-aligning data replication configuration of primary and secondary data serving entities of a cross-site storage solution after a failover event
US9158528B2 (en) Forcibly completing upgrade of distributed software in presence of failures
US20130066949A1 (en) Idempotence for database transactions
JP2017528809A5 (zh)
WO2022037171A1 (zh) 一种数据请求方法、设备以及介质
US11709743B2 (en) Methods and systems for a non-disruptive automatic unplanned failover from a primary copy of data at a primary storage system to a mirror copy of the data at a cross-site secondary storage system
CN106657167B (zh) 管理服务器、服务器集群、以及管理方法
US20050193039A1 (en) Fault tolerant mechanism to handle initial load of replicated object in live system
WO2009089746A1 (fr) Procédé, dispositif et système de réalisation d'une tâche dans un environnement de grappes
WO2020134199A1 (zh) 实现数据一致性的方法和装置、服务器和终端
CN114064414A (zh) 一种高可用的集群状态监控方法及系统
US9444885B2 (en) Workflow processing in a distributed computing environment
CN111752488B (zh) 存储集群的管理方法、装置、管理节点及存储介质
US20120324279A1 (en) Method and Apparatus of Backing up Subversion Repository
CN111342986B (zh) 分布式节点管理方法及装置、分布式系统、存储介质
CN108833169A (zh) 一种节点上线管理方法和节点
JP5480046B2 (ja) 分散トランザクション処理システム、装置、方法およびプログラム
KR102033489B1 (ko) 서버 클러스터 관리 방법 및 서버

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 21857364

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 21857364

Country of ref document: EP

Kind code of ref document: A1