CN113472886A - 分布式集群系统及其控制方法 - Google Patents

分布式集群系统及其控制方法 Download PDF

Info

Publication number
CN113472886A
CN113472886A CN202110743781.3A CN202110743781A CN113472886A CN 113472886 A CN113472886 A CN 113472886A CN 202110743781 A CN202110743781 A CN 202110743781A CN 113472886 A CN113472886 A CN 113472886A
Authority
CN
China
Prior art keywords
zookeeper
node
nodes
list
cluster system
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
Application number
CN202110743781.3A
Other languages
English (en)
Other versions
CN113472886B (zh
Inventor
陈铎
刘相文
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huayun Data Holding Group Co Ltd
Original Assignee
Huayun Data Holding Group Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Huayun Data Holding Group Co Ltd filed Critical Huayun Data Holding Group Co Ltd
Priority to CN202110743781.3A priority Critical patent/CN113472886B/zh
Publication of CN113472886A publication Critical patent/CN113472886A/zh
Application granted granted Critical
Publication of CN113472886B publication Critical patent/CN113472886B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1031Controlling of the operation of servers by a load balancer, e.g. adding or removing servers that serve requests

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Hardware Redundancy (AREA)

Abstract

本发明提供了分布式集群系统的控制方法,分布式集群系统包括客户端和多个zookeeper服务端,客户端能够与多个zookeeper服务端中的至少一个连接,每个zookeeper服务端分别对应一个zookeeper节点,控制方法包括:获取zooke eper节点数量的设定值;执行一次或多次迭代操作,以使分布式集群系统内启动的zookeeper节点数量满足设定值:根据设定值确定分布式集群系统的当前quor um列表;根据当前quorum列表,设置分布式集群系统的zookeeper节点状态,zookeeper节点状态包括启动或关闭,zookeeper节点状态与zookeeper服务端的状态相对应;以及,生成更新的quorum列表。本发明能够实现动态调整zookee per节点数,节省运算资源。

Description

分布式集群系统及其控制方法
技术领域
本发明涉及计算机技术领域,尤其是涉及一种分布式集群系统的控制方法及分布式集群系统。
背景技术
随着计算机技术的快速发展和进步,分布式集群越来越多的应用于分布式系统中。一个较为理想的分布式集群应该是这样的:一个分布式系统,是通过多个节点组成的,各节点都是集群化,并且各集群还是分布式的。当分布式集群出现单点故障时,能够实现资源、服务的快速切换,使上层应用不会中断。
zookeeper是一种为分布式应用所设计的高可用、高性能且一致的开源协调服务框架,它可以实现同步服务,配置维护、命名服务、分布式锁等分布式基础服务,接口具有简单、易用、性能稳定等特点。zookeeper是基于Paxos(分布式协调一致性算法,基于消息传递且基于高度容错特性的一致性算法,是目前公认的解决分布式一致性问题最有效的算法之一,Paxos算法需要解决在整个分布式集群遇到宕机、断网等异常情况时,能够快速且正确的在集群内部对数据完整一致性,让整个分布式系统达成状态一致)的一致性算法完成选举,集群中节点的个数需要满足半数以上才能选举出leader角色,这样分布式集群系统才能正常对外提供服务,正常情况下zookeeper节点数需要满足奇数个要求,如图1是现有计数方案的示意图,其包括从1至2N+1(N为正整数)个zookeeper节点,即分布式集群系统的zookeeper节点为奇数。zookeeper的使用简单,业务层面不需要加入复杂的逻辑,简单配置即可方便使用,但是其主要缺陷在于:
1)当zookeeper节点数为2时,其容忍度为0;节点数分别为3、4时,容忍度为1;节点数为5、6时,其容忍度为2;也就是说2n和2n-1的容忍度都是n-1(n为大于1的整数),若zookeeper的节点数按照实际的来,则会浪费资源;
2)当集群中某个节点的zookeeper宕机时,在不同机架上的zookeeper节点会出现负载不均衡。
基于此,有必要对现有zookeeper的节点启动和配置方法进行改进。
发明内容
本发明的目的在于提供分布式集群系统的控制方法,实现分布式集群系统中zookeeper的节点的优化和均衡。
本发明的目的采用以下技术方案实现:
第一方面,本发明提供了一种分布式集群系统的控制方法,所述分布式集群系统包括客户端和多个zookeeper服务端,所述客户端能够与多个zookeeper服务端中的至少一个连接,每个所述zookeeper服务端分别对应一个zookeeper节点,所述控制方法包括:获取所述zookeeper节点数量的设定值;执行一次或多次迭代操作,以使所述分布式集群系统内启动的所述zookeeper节点数量满足所述设定值:根据所述设定值确定所述分布式集群系统的当前quorum列表;根据所述当前quorum列表,设置所述分布式集群系统的zookeeper节点状态,所述zookeeper节点状态包括启动或关闭,所述zookeeper节点状态与所述zookeeper服务端的状态相对应;以及,生成更新的quorum列表。该技术方案的有益效果在于,通过一次或多次迭代操作,zookeeper节点数较多时,动态减少zookeeper的节点数,降低资源消耗;zookeeper节点数较少时,动态增加可用的zookeeper节点数,保证zookeeper的节点数满足最低节点数要求。通过在每次迭代过程中更新quorum列表,利用zookeeper的全局性分布式调度特性、动态调整zookeeper节点数对每个节点zookeeper进行调整以达到用户设置的zookeeper节点数,动态调节分布式集群系统的zookeeper个数。
在一些可选的实施例中,所述zookeeper服务端位于多个机架,所述执行一次或多次迭代操作还包括:判断多个所述机架对应的所述zookeeper节点是否均衡,如判断结果为多个所述机架对应的所述zookeeper节点均衡则停止所述迭代操作;否则,调节至少两个所述机架对应的所述zookeeper节点。该技术方案的有益效果在于,考虑到zookeeper可分别部署在不同机架的集群上,通过一次或多次迭代操作,保证每个机架上的zookeeper节点数平衡,当某个机架上的zookeeper出现宕机或不均衡时,能够动态调整负载,提高整个系统的可用性。
在一些可选的实施例中,所述根据所述当前quorum列表,设置所述分布式集群系统的zookeeper节点状态包括:对于每一个所述zookeeper节点,判断所述zookeeper节点是否存在于当前quorum列表;若存在且所述zookeeper节点处于启动状态,则无需处理;若存在且所述zookeeper节点处于关闭状态,则启动所述zookeeper节点;若不存在且所述zookeeper节点处于启动状态,则将所述zookeeper节点关闭。该技术方案的有益效果在于,通过根据当前集群的quorum列表动态启动zookeeper,判断是否需要启动、关闭本节点的zookeeper服务,从而保证分布式集群系统的quorum列表正常。
在一些可选的实施例中,所述zookeeper节点包括永久节点和临时节点,所述临时节点用于监控所述当前quorum列表和/或所述更新的quorum列表。该技术方案的有益效果在于,永久节点的建立是在每个节点加入集群时,以本节点名称为命名方式在zookeeper中建立永久节点,同时在节点连接上zookeeper时建立临时节点,临时节点用来做监控分布式集群系统的quorum列表情况,即成功竞争获取到临时节点的控制权后,在本节点监控分布式集群系统的quorum列表,这个节点zookeeper出现问题后,其他节点再竞争获取临时节点的控制权,获取到控制权后再由控制的节点来监控分布式集群系统,通过设置不同的节点保证分布式集群系统的正常运行。
在一些可选的实施例中,所述临时节点通过如下方式确定:从设定路径获取所述zookeeper节点的IP信息;若未获得所述IP信息,则竞争创建临时节点。该技术方案的有益效果在于,通过结合IP信息,保证所确定的临时节点是分布式集群系统的控制权节点。
在一些可选的实施例中,所述方法还包括:利用所述临时节点动态调整所述所述分布式集群系统的所述zookeeper节点,以使得使所述分布式集群系统内启动的所述zookeeper节点数量满足所述设定值且均衡。该技术方案的有益效果在于,通过动态调整zookeeper节点后,分布式集群系统的zookeeper数量达到设定数量节点数且满足分布式集群系统的zookeeper平衡。
第二方面,本发明提供了分布式集群系统的控制方法,所述分布式集群系统包括客户端和多个zookeeper服务端,所述客户端能够与多个zookeeper服务端中的至少一个连接,每个所述zookeeper服务端分别对应一个zookeeper节点,其特征在于,所述控制方法包括:
根据设定值确定所述分布式集群系统的当前quorum列表;
根据所述当前quorum列表,启动或关闭每个所述zookeeper服务端;
更新quorum列表,且在更新quorum列表过程中调整一个或多个所述zookeeper服务端的zookeeper节点,以使得所述分布式集群系统内启动的所述zookeeper节点数量满足所述设定值且满足均衡性。
在一些可选的实施例中,根据所述当前quorum列表,启动或关闭每个所述zookeeper服务端包括:
对于每一个所述zookeeper服务端对应的zookeeper节点,判断所述zookeeper节点是否存在于当前quorum列表;
若存在且所述zookeeper节点处于启动状态,则无需处理;
若存在且所述zookeeper节点处于关闭状态,则启动所述zookeeper节点对应的所述zookeeper服务端;
若不存在且所述zookeeper节点处于启动状态,则将所述zookeeper节点对应的所述zookeeper服务端关闭。
在一些可选的实施例中,所述zookeeper服务端的启动或关闭通过临时节点控制,且所述临时节点通过如下方式确定:
获取Election节点的OwnerlP,且在OwnerlP未获取成功的条件下,创建Election节点并设置OwnerlP;
判断设置的OwnerlP是否为本节点,且相应于设置的OwnerlP为本节点,将本节点确定为所述临时节点。
在一些可选的实施例中,所述更新quorum列表包括:
在启动或关闭每个所述zookeeper服务端后,生成第一quorum列表;
判断第一quorum列表中zookeeper节点的数量是否达到设定值,且在判断结果为否时,执行增加或剔除操作使得启动的zookeeper节点达到设定值;以及
生成第二quorum列表。
在一些可选的实施例中,所述更新quorum列表还包括:
判断分布式集群系统的zookeeper节点是否达到均衡,如判断结果为多个所述机架对应的所述zookeeper节点均衡则停止所述迭代操作;否则,调节至少两个所述机架对应的所述zookeeper节点。
第三方面,本发明提供了分布式集群系统,包括:
客户端;
多个zookeeper服务端,所述客户端能够与多个zookeeper服务端中的至少一个连接,每个所述zookeeper服务端分别对应一个zookeeper节点;
调整模块,用于获取所述zookeeper节点数量的设定值,以及执行一次或多次迭代操作,以使所述分布式集群系统内启动的所述zookeeper节点数量满足所述设定值。该技术方案的有益效果在于,本发明实施例更改zookeeper节点数均衡,Zookeeper节点数较多时,动态减少zookeeper的节点数,降低资源消耗,zookeeper节点数较少时,动态增加可用的zookeeper节点数,保证zookeeper的节点数满足最低节点数要求;Zookeeper可分别部署在不同机架的集群上,保证每个机架上的zookeeper节点数平衡,当某个机架上的zookeeper出现宕机或不均衡时,能够动态调整负载。
在一些可选的实施例中,所述调整模块包括:
动态启停zookeeper模块,用于根据分布式集群系统的quorum列表,判断是否需要启动、关闭本节点的zookeeper服务;
动态调整quorum列表模块,用于根据分布式集群系统的quorum列表,判断整个分布式集群系统是否达到预设的节点数,同时判断不同机架上的zookeeper节点数是否达到平衡,且在不满足预设的节点数或未达到平衡时动态调整zookeeper节点数并更新quorum列表。该技术方案的有益效果在于,每个zookeeper节点节点从存储于zookeeper的配置文件中获取本集群的quorum列表,该列表是本集群最新的选举节点,即总的zookeeper节点个数,是经过动态调整的quorum列表,每个节点判断本节点是否位于quorum中,若在quorum中且本节点的zookeeper处于启动状态,则不需要处理,若本节点的zookeeper没有启动,则需要启动本节点的zookeeper,保证整个集群的quorum正常。若本节点不在zookeeper quorum中,但是本节点的zookeeper处于启动状态,则需要将本节点的zookeeper停止运行。利用zookeeper的全局性分布式调度特性、动态调整zookeeper节点数对每个节点zookeeper进行调整以达到用户设置的zookeeper节点数,让zookeeper集群内节点达到机架内平衡,避免不必要的资源浪费。
第四方面,本发明提供了一种电子设备,所述电子设备包括存储器、处理器以及用于执行任务的硬件模组,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现上述任一项方法的步骤。
第五方面,本发明提供了一种计算机可读存储介质,存储有计算机程序,所述计算机程序被处理器执行时实现上述任一项方法的步骤。
附图说明
下面结合附图和实施例对本发明进一步说明。
图1为现有技术中分布式系统的zookeeper节点计数示意图;
图2为本发明一实施例的分布式集群系统的控制方法流程示意图;
图3为本发明一实施例的一次操作调整zookeeper节点流程示意图;
图4为本发明另一实施例的一次操作调整zookeeper节点示意;
图5为本发明一实施例中对分布式集群系统进行控制的示意图;
图6为本发明一实施例中分布式集群系统的进程示意图;
图7为本发明一实施例中zookeeper节点示意图;
图8为本发明一实施例中动态启停zookeeper节点线程流程示意图;
图9为本发明一实施例中动态调整quorum列表流程示意图;
图10为本发明一实施例的分布式集群系统结构示意图;
图11为本发明一实施例的调整模块结构示意图;
图12是本发明实施例提供的一种电子设备的结构示意图;
图13是本发明实施例提供的一种用于实现图2-图9中所述方法的程序产品的结构示意图。
具体实施方式
下面,结合附图以及具体实施方式,对本发明做进一步描述,需要说明的是,在不相冲突的前提下,以下描述的各实施例之间或各技术特征之间可以任意组合形成新的实施例。
参见图2,本发明实施例提供了分布式集群系统的控制方法,该法适用于由多台计算机和通信的软件组件通过计算机网络连接(本地网络或广域网)组成的分布式集群系统,具体可应用于PC、工作站、局域网和广域网上等具体场景。控制方法包括步骤S101~S102,在此实施例中,分布式集群系统包括客户端和多个zookeeper服务端,其中客户端能够与多个zookeeper服务端中的的一个或多个连接,每个zookeeper服务端分别对应一个zookeeper节点。
步骤S101,获取zookeeper节点数量的设定值。可选的,zookeeper节点数量的设定值可由用户指定,用户可根据计算机运算能力和资源的配置设置最少zookeeper节点数,如可设置为3、5节点数,需满足奇数。
步骤S102,执行一次或多次迭代操作,以使分布式集群系统内启动的zookeeper节点数量满足设定值。本发明实施例能够动态更改zookeeper节点数,当zookeeper节点数较多时,动态减少zookeeper的节点数,降低资源消耗;当zookeeper节点数较少时,动态增加可用的zookeeper节点数,保证zookeeper的节点数满足最低节点数要求。
在一个实施例中,如图3所示,步骤S102的执行一次操作包括步骤S201-S203。多次迭代操作则执行完步骤S203之后再次返回执行步骤S201。
步骤S201,根据设定值确定分布式集群系统的当前quorum列表;
步骤S202,根据当前quorum列表,设置分布式集群系统的zookeeper节点状态,zookeeper节点状态包括启动或关闭,zookeeper节点状态与zookeeper服务端的状态相对应。
步骤S203,生成更新的quorum列表。
可选的,根据当前quorum列表,设置分布式集群系统的zookeeper节点状态包括:对于每一个zookeeper节点,判断zookeeper节点是否存在于当前quorum;若存在且zookeeper节点处于启动状态,则无需处理;若存在且zookeeper节点处于关闭状态,则启动zookeeper节点;若不存在且zookeeper节点处于启动状态,则将zookeeper节点关闭。
本发明实施例中,在分布式集群系统启动后,会根据设定值在zookeeper中设置集群最低zookeeper节点数,分布式集群系统会根据这个设置的节点数来动态调整,动态调整过程中会对整个分布式集群系统的zookeeper节点数进行统计,并更新到quorum列表中保存,便于在调整zookeeper节点数时动态增减节点个数。
在一个实施例中,如图4所示,步骤S102的执行一次操作包括步骤S301-S306。多次迭代操作则执行完步骤S306之后再次返回执行步骤S301。
步骤S301,根据设定值确定分布式集群系统的当前quorum列表;
步骤S302,根据当前quorum列表,设置分布式集群系统的zookeeper节点状态,zookeeper节点状态包括启动或关闭,zookeeper节点状态与zookeeper服务端的状态相对应。
步骤S303,生成更新的quorum列表。
步骤S304,判断多个机架对应的zookeeper节点是否均衡。在判断结构为Y(多个机架对应的zookeeper节点均衡)时,执行步骤S305;在判断结构为N(多个机架对应的zookeeper节点不均衡/非均衡)时,执行步骤S306。
步骤S305,结束本次操作。
步骤S306,调节至少两个机架对应的zookeeper节点。
在此实施例中,本发明的控制方法通过前述一次或多次迭代操作动态调节整个分布式集群系统的zookeeper个数;当整个分布式集群系统内不同机架内的zookeeper数未达到平衡时,则可动态调整不同机架内的zookeeper个数,让整个分布式集群系统不同机架内zookeeper数平衡,zookeeper节点个数平均位于不同机架上时,可提高整个分布式集群系统的可用性,在一个机架整体宕机后,能够保证不影响分布式集群系统整体。
在本发明另一实施例中分布式集群系统的控制方法包括:
根据设定值确定所述分布式集群系统的当前quorum列表;
根据所述当前quorum列表,启动或关闭每个zookeeper服务端,即启动或关闭zookeeper服务端对应的zookeeper节点;
更新quorum列表,且在更新quorum列表过程中调整一个或多个zookeeper服务端的zookeeper节点,以使得分布式集群系统内启动的zookeeper节点数量满足所述设定值且满足均衡性。
可选的,根据当前quorum列表,启动或关闭每个zookeeper服务端包括:
对于每一个zookeeper服务端对应的zookeeper节点,判断zookeeper节点是否存在于当前quorum列表;
若存在且zookeeper节点处于启动状态,则无需处理;若存在且zookeeper节点处于关闭状态,则启动zookeeper节点对应的zookeeper服务端;若不存在且zookeeper节点处于启动状态,则将zookeeper节点对应的zookeeper服务端关闭。
可选的,zookeeper服务端的启动或关闭通过临时节点控制,且临时节点通过如下方式确定:
获取Election节点的OwnerlP(即当前节点的IP),且在OwnerlP未获取成功的条件下,创建Election节点并设置OwnerlP;判断设置的OwnerlP是否为本节点(当前待判断的节点),且相应于设置的OwnerlP为本节点,将本节点确定为临时节点。
可选的,更新quorum列表包括:在启动或关闭每个zookeeper服务端后,生成第一quorum列表;判断第一quorum列表中zookeeper节点的数量是否达到设定值,且在判断结果为否时,执行增加或剔除操作使得启动的zookeeper节点达到设定值;以及生成第二quorum列表。可以理解的,本发明实施例仅示意性给出更新过程,在实际更新过程中还生产第三quorum列表、第四quorum列表等。本发明实施例中对于quorum列表的更新次数不作具体限制。
可选的,所述更新quorum列表还包括:判断分布式集群系统的zookeeper节点是否达到均衡,如判断结果为多个机架对应的zookeeper节点均衡则停止迭代操作;否则,调节至少两个机架对应的所述zookeeper节点,以使得多个机架对应的zookeeper节点均衡。
如图5所示,为本发明利用图2所示的方法对分布式集群系统进行控制的示意图。分布式集群系统各节点服务正常情况下,共有2N+1个zookeeper节点(对应2N+1个zookeeper服务端),客户端连接服务端时,可与任意一个服务端连接,服务端组成集群,并选举出主(leader)节点和次(follower)节点对外提供服务。采用如图所示的方法经过动态调整zookeeper节点数后,分别对每个节点上的zookeeper进行判断是否需要启停本节点zookeeper,是否需要在不同机架之间进行zookeeper平衡,经调整后的zookeeper节点为N个。分布式集群系统启动后,会在zookeeper中设置分布式集群系统最低zookeeper节点数,分布式集群系统会根据这个设置的节点数来动态调整;动态调整模块会对整个分布式集群系统的zookeeper节点数进行统计,别更新到zookeeper中保存,便于在调整zookeeper节点数时动态增减节点个数;同时也对不同机架上的zookeeper节点个数进行平衡,保证位于不同机架上的zookeeper个数平衡,zookeeper节点个数平均位于不同机架上时,可提高整个分布式集群系统的可用性,即使在一个机架整体宕机后,能够保证不影响整体性能。
在一个实施例中,每个节点的进程间联系图如图6所示,各进程间组成一个分布式集群系统。分布式集群系统的进程主要包括:
Zookeeper进程:开源的分布式的应用程序协调服务组件,主要用来解决分布式应用中经常遇到的数据管理问题,如:统一命名服务、状态同步服务、集群管理、分布式应用配置项服务等;
客户端进程:需要使用zookeeper的客户端,客户端是整个zookeeper集群的使用者;
动态调整进程:该进程是一个守护进程,该进程由两个线程组成,两个线程分别负责动态启动zookeeper、动态调整zookeeper的quorum列表,动态启动线程根据当前集群的quorum列表,判断是否需要启动、关闭本节点的zookeeper服务;动态调整zookeeper的quorum列表主要负责更新当前集群的quorum列表,判断整个集群quorum数量是否达到预设的节点数,同时判断不同机架上的zookeeper节点数是否达到平衡,不满足预设的节点数或未达到平衡数均需要动态调整zookeeper节点数和更新quorum列表。
zookeeper节点内可用于存储数据,数据存储的形式如图7所示,该形式类似于文件系统的目录树结构。zookeeper节点包括永久节点和临时节点,永久节点的建立是在每个节点加入集群时,以本节点名称为命名方式在zookeeper中建立永久节点,同时在节点连接上zookeeper时建立临时节点,临时节点主要用来做监控整个集群的quorum列表情况,即成功竞争获取到临时节点的控制权后,在本节点监控整个集群的quorum列表,这个节点zookeeper出现问题后,其他节点再竞争获取临时节点的控制权,获取到控制权后再由控制的节点来监控整个集群。
可选的,每个节点通过在zookeeper中创建临时节点来获取控制权,在临时节点中存储本节点的ip,表示本节点获取到整个集群的控制权。每个节点有专门的线程去控制临时节点的控制权,不断的poll这个临时节点存不存在。在本发明一实施例中,如图8所示,动态启停zookeeper节点线程的步骤可包括:
步骤S401,获取Election节点的OwnerlP。在此实施例中,每个节点在线程内获取存储于zookeeper中的临时节点,临时节点的存储路径为/zookeeper/Election,该节点存储本节点的ip信息;从上述存储路径中即可获取ip信息。在此实施例中,Election节点为选举节点。
步骤S402,判断OwnerlP是否获取成功。如果判断结果为Y(OwnerlP获取成功),则执行步骤S405;如果判断结果为N(OwnerlP未获取),则执行步骤S403。
步骤S403,创建Election节点并设置OwnerlP。并执行步骤S404。通过本步骤可竞争创建临时节点。
步骤S404,判断Election节点是否创建成功。如果判断结果为Y(创建临时节点成功,说明本节点获取到整个集群的控制权),则执行步骤S405;如果判断结果为N(创建临时节点不成功,说明本节点未获取到整个集群的控制权),则返回步骤S401(继续不停的poll)。
步骤S405,判断OwnerlP是否为本节点。若判断结果为Y(OwnerlP是本节点),则结束(则该节点是整个集群的控制权节点);若判断结果为N(获取到的OwnerlP不是本节点),则则返回步骤S401(本节点不是整个集群的控制权节点,则继续不停的poll)。
在一个实施例中,每个节点从存储于zookeeper的配置文件中获取本分布式集群的quorum列表,该列表是本分布式集群最新的选举节点,即总的zookeeper节点个数,是经过动态调整的quorum列表,每个节点判断本节点是否位于quorum中,若在quorum中且本节点的zookeeper处于启动状态,则不需要处理,若本节点的zookeeper没有启动,则需要启动本节点的zookeeper,保证整个集群的quorum正常。若本节点不在zookeeper quorum中,但是本节点的zookeeper处于启动状态,则需要将本节点的zookeeper停止运行。
对于分布式集群系统中的启动的zookeeper节点获取到临时节点的控制权后,会监测整个集群的zookeeper quorum列表是否符合要求:zookeeper的节点数达到预期设置的节点数,每个机架上的zookeeper数量达到平衡状态。在一个实施例中,如图9所示,动态调整quorum列表步骤如下包括:
首先,在通过前述图8所示的方法判断临时节点为本节点后,在zookeeper中获取最新的quorum列表,并判断quorum列表中zookeeper的数量是否达到预期的节点数。若zookeeper的quorum列表数量未达到期望的zookeeper节点数,则通过增加、剔除操作以达到期望的zookeeper节点数,动态改变zookeeper节点数,并更新quorum列表。
示例性的,动态改变zookeeper节点数可包括:若没有达到预期的节点数,则判断当前的节点数是否小于期望的节点数,若小于期望的节点数,则从所有可用的zookeeper节点中选择一个可用的zookeeper节点,并将该节点加入到zookeeper集群中;若当前quorum列表内zookeeper数大于期望的zookeeper节点数,则从当前quorum中选择一个非leader节点,将选择到的节点剔除出zookeeper集群中
其次,在quorum列表达到期望的zookeeper节点数后,判断当前分布式集群内的zookeeper是否达到均衡。均衡的原则是每个机架内的zookeeper数量相同,保证机架内zookeeper均衡。如果不满足zookeeper均衡,则动态调整zookeeper节点。
可选的,动态调整zookeeper节点包括:若每个机架内上zookeeper节点数小于平均机架内节点数,则从其他机架中寻找一个可用的zookeeper节点作为可用的节点,若每个机架上zookeeper节点数大于平均机架节点数,则从本机架内选择一个非leader的zookeeper节点,并将其从zookeeper集群中剔除掉,最后更新整个quorum列表。
经过上述动态调整zookeeper节点后,整个集群的zookeeper数量达到预期设定的节点数且达到整个集群的zookeeper平衡。
本发明实施例,利用zookeeper的全局性分布式调度特性、动态调整zookeeper节点数对每个节点zookeeper进行调整以达到用户设置的zookeeper节点数,让zookeeper集群内节点达到机架内平衡,避免不必要的资源浪费。
应当注意以上关于监测方法流程的描述仅仅是出于说明的目的而提供的,并不旨在限制本发明的范围。对于本领域的普通技术人员来说,根据本发明的教导可以做出多种变化和修改。然而,这些变化和修改不会背离本发明的范围。在一些实施例中,安全通道异常监测方法流程可以利用未描述的一个或以上附加操作和/或没有所讨论的一个或以上个操作来完成。
如图10所示,为本发明一实施例的分布式集群系统结构示意图,包括:
客户端;在此实施例中,客户端包括PC1、PC2、PC3、APP1和APP2等多个客户端。
多个zookeeper服务端,所述客户端能够与多个zookeeper服务端中的至少一个连接,每个所述zookeeper服务端分别对应一个zookeeper节点;
调整模块,用于获取所述zookeeper节点数量的设定值,以及执行一次或多次迭代操作,以使所述分布式集群系统内启动的所述zookeeper节点数量满足所述设定值。在此实施例中设定值为3,zookeeper服务端经过动态调整后包括zookeeper服务端1、zookeeper服务端2和zookeeper服务端3,即zookeeper节点位3。需要说明的是,本发明实施例中对于设定值的具体指不作具体限制,具体可有用户自行设置,如可设置为5、7等奇数。在此实施例中,调整模块执行两个线程,两个线程分别负责动态启动zookeeper、动态调整zookeeper的quorum列表,动态启动线程根据当前集群的quorum列表,判断是否需要启动、关闭本节点的zookeeper服务;动态调整zookeeper的quorum列表主要负责更新当前集群的quorum列表,判断整个集群quorum数量是否达到预设的节点数,同时判断不同机架上的zookeeper节点数是否达到平衡,不满足预设的节点数或未达到平衡数均需要动态调整zookeeper节点数和更新quorum列表。
本发明实施例更改zookeeper节点数均衡,Zookeeper节点数较多时,动态减少zookeeper的节点数,降低资源消耗,zookeeper节点数较少时,动态增加可用的zookeeper节点数,保证zookeeper的节点数满足最低节点数要求;Zookeeper可分别部署在不同机架的集群上,保证每个机架上的zookeeper节点数平衡,当某个机架上的zookeeper出现宕机或不均衡时,能够动态调整负载。
在一实施例中,如图11所示调整模块包括:
动态启停zookeeper模块,用于根据分布式集群系统的quorum列表,判断是否需要启动、关闭本节点的zookeeper服务;
动态调整quorum列表模块,用于根据分布式集群系统的quorum列表,判断整个分布式集群系统是否达到预设的节点数,同时判断不同机架上的zookeeper节点数是否达到平衡,且在不满足预设的节点数或未达到平衡时动态调整zookeeper节点数并更新quorum列表。
本发明实施例中,每个zookeeper节点节点从存储于zookeeper的配置文件中获取本集群的quorum列表,该列表是本集群最新的选举节点,即总的zookeeper节点个数,是经过动态调整的quorum列表,每个节点判断本节点是否位于quorum中,若在quorum中且本节点的zookeeper处于启动状态,则不需要处理,若本节点的zookeeper没有启动,则需要启动本节点的zookeeper,保证整个集群的quorum正常。若本节点不在zookeeper quorum中,但是本节点的zookeeper处于启动状态,则需要将本节点的zookeeper停止运行。利用zookeeper的全局性分布式调度特性、动态调整zookeeper节点数对每个节点zookeeper进行调整以达到用户设置的zookeeper节点数,让zookeeper集群内节点达到机架内平衡,避免不必要的资源浪费。
在一实施例中,动态调整quorum列表模块用于实现:
在判断临时节点为本节点后,在zookeeper中获取最新的quorum列表,并判断quorum列表中zookeeper的数量是否达到预期的节点数。若zookeeper的quorum列表数量未达到期望的zookeeper节点数,则通过增加、剔除操作以达到期望的zookeeper节点数,动态改变zookeeper节点数,并更新quorum列表。
示例性的,动态改变zookeeper节点数可包括:若没有达到预期的节点数,则判断当前的节点数是否小于期望的节点数,若小于期望的节点数,则从所有可用的zookeeper节点中选择一个可用的zookeeper节点,并将该节点加入到zookeeper集群中;若当前quorum列表内zookeeper数大于期望的zookeeper节点数,则从当前quorum中选择一个非leader节点,将选择到的节点剔除出zookeeper集群中
其次,在quorum列表达到期望的zookeeper节点数后,判断当前分布式集群内的zookeeper是否达到均衡。均衡的原则是每个机架内的zookeeper数量相同,保证机架内zookeeper均衡。如果不满足zookeeper均衡,则动态调整zookeeper节点。
可选的,动态调整zookeeper节点包括:若每个机架内上zookeeper节点数小于平均机架内节点数,则从其他机架中寻找一个可用的zookeeper节点作为可用的节点,若每个机架上zookeeper节点数大于平均机架节点数,则从本机架内选择一个非leader的zookeeper节点,并将其从zookeeper集群中剔除掉,最后更新整个quorum列表。
经过上述动态调整zookeeper节点后,整个集群的zookeeper数量达到预期设定的节点数且达到整个集群的zookeeper平衡。
参见图12,本发明实施例还提供了一种电子设备200,电子设备200包括至少一个存储器210、至少一个处理器220以及连接不同平台系统的总线230。
存储器210可以包括易失性存储器形式的可读介质,例如随机存取存储器(RAM)211和/或高速缓存存储器212,还可以进一步包括只读存储器(ROM)213。
其中,存储器210还存储有计算机程序,计算机程序可以被处理器220执行,使得处理器220执行本发明实施例中上述任一项方法的步骤,其具体实现方式与上述方法的实施例中记载的实施方式、所达到的技术效果一致,部分内容不再赘述。存储器210还可以包括具有一组(至少一个)程序模块215的程序/实用工具214,这样的程序模块215包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
相应的,处理器220可以执行上述计算机程序,以及可以执行程序/实用工具214。
总线230可以为表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器、外围总线、图形加速端口、处理器或者使用多种总线结构中的任意总线结构的局域总线。
电子设备200也可以与一个或多个外部设备240例如键盘、指向设备、蓝牙设备等通信,还可与一个或者多个能够与该电子设备200交互的设备通信,和/或与使得该电子设备200能与一个或多个其它计算设备进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口250进行。并且,电子设备200还可以通过网络适配器260与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。网络适配器260可以通过总线230与电子设备200的其它模块通信。应当明白,尽管图中未示出,可以结合电子设备200使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理器、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储平台等。
本发明实施例还提供了一种计算机可读存储介质,该计算机可读存储介质用于存储计算机程序,所述计算机程序被执行时实现本发明实施例中上述任一项方法的步骤,其具体实现方式与上述方法的实施例中记载的实施方式、所达到的技术效果一致,部分内容不再赘述。图13示出了本实施例提供的用于实现上述方法的程序产品300,其可以采用便携式紧凑盘只读存储器(CD-ROM)并包括程序代码,并可以在终端设备,例如个人电脑上运行。然而,本发明的程序产品300不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。程序产品300可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以为但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
计算机可读存储介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读存储介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。可读存储介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、RF等等,或者上述的任意合适的组合。可以以一种或多种程序设计语言的任意组合来编写用于执行本发明操作的程序代码,程序设计语言包括面向对象的程序设计语言诸如Java、C++等,还包括常规的过程式程序设计语言诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
本发明从使用目的上,效能上,进步及新颖性等观点进行阐述,其设置有的实用进步性,已符合专利法所强调的功能增进及使用要件,本发明以上的说明及附图,仅为本发明的较佳实施例而已,并非以此局限本发明,因此,凡一切与本发明构造,装置,特征等近似、雷同的,即凡依本发明发明范围所作的等同替换或修饰等,皆应属本发明保护的范围之内。

Claims (14)

1.一种分布式集群系统的控制方法,所述分布式集群系统包括客户端和多个zookeeper服务端,所述客户端能够与多个zookeeper服务端中的至少一个连接,每个所述zookeeper服务端分别对应一个zookeeper节点,其特征在于,所述控制方法包括:
获取所述zookeeper节点数量的设定值;
执行一次或多次迭代操作,以使所述分布式集群系统内启动的所述zookeeper节点数量满足所述设定值:
根据所述设定值确定所述分布式集群系统的当前quorum列表;
根据所述当前quorum列表,设置所述分布式集群系统的zookeeper节点状态,所述zookeeper节点状态包括启动或关闭,所述zookeeper节点状态与所述zookeeper服务端的状态相对应;以及,
生成更新的quorum列表。
2.根据权利要求1所述的分布式集群系统的控制方法,其特征在于,所述zookeeper服务端位于多个机架,所述执行一次或多次迭代操作还包括:
判断多个所述机架对应的所述zookeeper节点是否均衡,如判断结果为多个所述机架对应的所述zookeeper节点均衡则停止所述迭代操作;否则,调节至少两个所述机架对应的所述zookeeper节点。
3.根据权利要求1所述的分布式集群系统的控制方法,其特征在于,所述根据所述当前quorum列表,设置所述分布式集群系统的zookeeper节点状态包括:
对于每一个所述zookeeper节点,判断所述zookeeper节点是否存在于当前quorum列表;
若存在且所述zookeeper节点处于启动状态,则无需处理;
若存在且所述zookeeper节点处于关闭状态,则启动所述zookeeper节点;
若不存在且所述zookeeper节点处于启动状态,则将所述zookeeper节点关闭。
4.根据权利要求1至3任一项所述的分布式集群系统的控制方法,其特征在于,所述zookeeper节点包括永久节点和临时节点,所述临时节点用于监控所述当前quorum列表和/或所述更新的quorum列表,其中所述临时节点通过如下方式确定:从设定路径获取所述zookeeper节点的IP信息;
若未获得所述IP信息,则竞争创建临时节点。
5.根据权利要求4所述的分布式集群系统的控制方法,其特征在于,所述方法还包括:
利用所述临时节点动态调整所述所述分布式集群系统的所述zookeeper节点,以使得使所述分布式集群系统内启动的所述zookeeper节点数量满足所述设定值且均衡。
6.一种分布式集群系统的控制方法,所述分布式集群系统包括客户端和多个zookeeper服务端,所述客户端能够与多个zookeeper服务端中的至少一个连接,每个所述zookeeper服务端分别对应一个zookeeper节点,其特征在于,所述控制方法包括:
根据设定值确定所述分布式集群系统的当前quorum列表;
根据所述当前quorum列表,启动或关闭每个所述zookeeper服务端;
更新quorum列表,且在更新quorum列表过程中调整一个或多个所述zookeeper服务端的zookeeper节点,以使得所述分布式集群系统内启动的所述zookeeper节点数量满足所述设定值且满足均衡性。
7.根据权利要求6所述的分布式集群系统的控制方法,其特征在于,根据所述当前quorum列表,启动或关闭每个所述zookeeper服务端包括:
对于每一个所述zookeeper服务端对应的zookeeper节点,判断所述zookeeper节点是否存在于当前quorum列表;
若存在且所述zookeeper节点处于启动状态,则无需处理;
若存在且所述zookeeper节点处于关闭状态,则启动所述zookeeper节点对应的所述zookeeper服务端;
若不存在且所述zookeeper节点处于启动状态,则将所述zookeeper节点对应的所述zookeeper服务端关闭。
8.根据权利要求7所述的分布式集群系统的控制方法,其特征在于,所述zookeeper服务端的启动或关闭通过临时节点控制,且所述临时节点通过如下方式确定:
获取Election节点的OwnerlP,且在OwnerlP未获取成功的条件下,创建Election节点并设置OwnerlP;
判断设置的OwnerlP是否为本节点,且相应于设置的OwnerlP为本节点,将本节点确定为所述临时节点。
9.根据权利要求6所述的分布式集群系统的控制方法,其特征在于,所述更新quorum列表包括:
在启动或关闭每个所述zookeeper服务端后,生成第一quorum列表;
判断第一quorum列表中zookeeper节点的数量是否达到设定值,且在判断结果为否时,执行增加或剔除操作使得启动的zookeeper节点达到设定值;以及生成第二quorum列表。
10.根据权利要求9所述的分布式集群系统的控制方法,其特征在于,所述更新quorum列表还包括:
判断分布式集群系统的zookeeper节点是否达到均衡,如判断结果为多个所述机架对应的所述zookeeper节点均衡则停止所述迭代操作;否则,调节至少两个所述机架对应的所述zookeeper节点。
11.一种分布式集群系统,其特征在于,包括:
客户端;
多个zookeeper服务端,所述客户端能够与多个zookeeper服务端中的至少一个连接,每个所述zookeeper服务端分别对应一个zookeeper节点;
调整模块,用于获取所述zookeeper节点数量的设定值,以及执行一次或多次迭代操作,以使所述分布式集群系统内启动的所述zookeeper节点数量满足所述设定值。
12.根据权利要求11所述的分布式集群系统,其特征在于,所述调整模块包括:
动态启停zookeeper模块,用于根据分布式集群系统的quorum列表,判断是否需要启动、关闭本节点的zookeeper服务;
动态调整quorum列表模块,用于根据分布式集群系统的quorum列表,判断整个分布式集群系统是否达到预设的节点数,同时判断不同机架上的zookeeper节点数是否达到平衡,且在不满足预设的节点数或未达到平衡时动态调整zookeeper节点数并更新quorum列表。
13.一种电子设备,所述电子设备包括存储器、处理器以及用于执行任务的硬件模组,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现如权利要求1-10任一项分布式集群系统的控制方法的步骤。
14.一种计算机可读存储介质,存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1-10任一项分布式集群系统的控制方法的步骤。
CN202110743781.3A 2021-06-30 2021-06-30 分布式集群系统及其控制方法 Active CN113472886B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110743781.3A CN113472886B (zh) 2021-06-30 2021-06-30 分布式集群系统及其控制方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110743781.3A CN113472886B (zh) 2021-06-30 2021-06-30 分布式集群系统及其控制方法

Publications (2)

Publication Number Publication Date
CN113472886A true CN113472886A (zh) 2021-10-01
CN113472886B CN113472886B (zh) 2024-03-22

Family

ID=77877152

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110743781.3A Active CN113472886B (zh) 2021-06-30 2021-06-30 分布式集群系统及其控制方法

Country Status (1)

Country Link
CN (1) CN113472886B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115473802A (zh) * 2022-09-13 2022-12-13 重庆紫光华山智安科技有限公司 节点管理方法、系统、设备及存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107919977A (zh) * 2016-10-11 2018-04-17 阿里巴巴集团控股有限公司 一种基于Paxos协议的分布式一致性系统的在线扩容、在线缩容的方法和装置
CN110855737A (zh) * 2019-09-24 2020-02-28 中国科学院软件研究所 一种一致性级别可控的自适应数据同步方法和系统
CN112181901A (zh) * 2020-09-22 2021-01-05 华云数据控股集团有限公司 一种预防集群节点间文件脑裂的方法及计算机可读介质
CN112422309A (zh) * 2019-08-23 2021-02-26 阿里巴巴集团控股有限公司 分布式服务发现的系统及方法、存储介质及终端
CN112948128A (zh) * 2021-03-30 2021-06-11 华云数据控股集团有限公司 Target端的选择方法、系统及计算机可读介质

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107919977A (zh) * 2016-10-11 2018-04-17 阿里巴巴集团控股有限公司 一种基于Paxos协议的分布式一致性系统的在线扩容、在线缩容的方法和装置
CN112422309A (zh) * 2019-08-23 2021-02-26 阿里巴巴集团控股有限公司 分布式服务发现的系统及方法、存储介质及终端
CN110855737A (zh) * 2019-09-24 2020-02-28 中国科学院软件研究所 一种一致性级别可控的自适应数据同步方法和系统
CN112181901A (zh) * 2020-09-22 2021-01-05 华云数据控股集团有限公司 一种预防集群节点间文件脑裂的方法及计算机可读介质
CN112948128A (zh) * 2021-03-30 2021-06-11 华云数据控股集团有限公司 Target端的选择方法、系统及计算机可读介质

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115473802A (zh) * 2022-09-13 2022-12-13 重庆紫光华山智安科技有限公司 节点管理方法、系统、设备及存储介质
CN115473802B (zh) * 2022-09-13 2024-02-23 重庆紫光华山智安科技有限公司 节点管理方法、系统、设备及存储介质

Also Published As

Publication number Publication date
CN113472886B (zh) 2024-03-22

Similar Documents

Publication Publication Date Title
CN109831500B (zh) Kubernetes集群中配置文件与Pod的同步方法
US9645756B2 (en) Optimization of in-memory data grid placement
US10048996B1 (en) Predicting infrastructure failures in a data center for hosted service mitigation actions
JP2022137193A (ja) 深層学習モデルの分散トレーニング方法、装置、電子機器、記憶媒体およびコンピュータプログラム
US20160036924A1 (en) Providing Higher Workload Resiliency in Clustered Systems Based on Health Heuristics
Jammal et al. High availability-aware optimization digest for applications deployment in cloud
US10817323B2 (en) Systems and methods for organizing on-demand migration from private cluster to public cloud
WO2019108465A1 (en) Automated capacity management in distributed computing systems
CN111400041A (zh) 服务器配置文件的管理方法、装置及计算机可读存储介质
US9471389B2 (en) Dynamically tuning server placement
CN113472886B (zh) 分布式集群系统及其控制方法
CN111818188B (zh) 一种Kubernetes集群的负载均衡可用性提升方法和装置
US11656914B2 (en) Anticipating future resource consumption based on user sessions
US11531572B2 (en) Cross-cluster host reassignment
US20230015908A1 (en) Virtual machine operation management in computing devices
US10250456B2 (en) Operational management in cloud computing systems
US10110502B1 (en) Autonomous host deployment in managed deployment systems
US11977909B2 (en) Hardware placement and maintenance scheduling in high availability systems
CN113742646A (zh) 将单语言复合函数编译为单个实体
CN110266790A (zh) 边缘集群管理方法、装置、边缘集群及可读存储介质
US11856064B1 (en) Proactive management of service connections
CN116582501B (zh) 一种基于动态优先级解决Vpc-agent网络配置生效慢的方法及系统
US11782490B2 (en) Software-defined fail-safe power draw control for rack power distribution units
US20220413894A1 (en) Self orchestrated containers for cloud computing
CN114356505A (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