CN107786365A - 一种集群扩容方法及装置 - Google Patents
一种集群扩容方法及装置 Download PDFInfo
- Publication number
- CN107786365A CN107786365A CN201610791492.XA CN201610791492A CN107786365A CN 107786365 A CN107786365 A CN 107786365A CN 201610791492 A CN201610791492 A CN 201610791492A CN 107786365 A CN107786365 A CN 107786365A
- Authority
- CN
- China
- Prior art keywords
- node
- group
- physical machine
- cluster
- group number
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- 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/06—Management of faults, events, alarms or notifications
- H04L41/0654—Management of faults, events, alarms or notifications using network fault recovery
- H04L41/0668—Management of faults, events, alarms or notifications using network fault recovery by dynamic selection of recovery network elements, e.g. replacement by the most appropriate element after failure
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Hardware Redundancy (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明实施例公开了一种集群扩容方法及装置。该方法包括:获得横向扩容后集群中节点的目标节点组数;根据目标节点组数和预设比例,确定横向扩容后同一物理机所包含节点的最大组别数;确定当前包含节点的组别数小于最大组别数的物理机为目标物理机;基于第一物理机所包含节点的第一组别数与最大组别数,确定当前需要分配的节点的第一节点组数;将第一节点组数的节点组包含的节点在目标物理机中分配;直到集群横向扩容完成,否则,返回执行步骤确定当前包含节点的组别数小于该最大组别数的物理机为目标物理机。应用本方案,可以保证集群横向扩容后,集群中任一物理机出现故障以致该物理机包含的所有节点宕机时,整个集群仍然可以正常工作。
Description
技术领域
本发明涉及计算机技术领域,特别涉及一种集群扩容方法及装置。
背景技术
集群的扩容方式,包括纵向扩容和横向扩容,纵向扩容指增加集群中已经存在的某些主节点的容量;横向扩容指增加新的主节点来增加整个集群的容量,对于redis(一种开源的Key-Value数据库)集群等无中心节点的集群,为了保证数据的高可用性,设置了主从模式,即每个主节点都对应用从节点,所以在横向扩容时,增加新的主节点的同时,还需要为新增的主节点建立对应的从节点。现有技术中,基于openstack(一种开源的云计算管理平台项目)管理平台等云计算管理平台对集群进行横向扩容时,会根据各个物理机上的存储负载来确定新的主节点以及新的主节点对应的从节点分配到哪台物理机上。
现有技术中,上述主从模式,表现为:一个主节点对应一个或多个从节点,主节点提供数据存取,从节点则是从主节点拉取数据备份,当这个主节点宕机后,就会从该主节点对应的从节点中选举一个从节点来充当主节点,保证整个集群仍然可以正常工作。现有技术中,上述从节点想要升级成为主节点,必须要求该从节点得到当前集群中超过预设比例的主节点的授权,例如,从节点要获得当前集群中超过半数的主节点的授权,才可以升级为主节点。
但是,当集群横向扩容后,如果系统对进行二进制执行文件的升级或者主节点意外宕机时,有些从节点需要升级成主节点,上述从节点升级后,可能出现某一物理机中包含的主节点的数目过多,以致该时刻集群中除该物理机中的主节点外,其余的主节点数目占集群中主节点总数目的比例未超过上述预设比例时,如果该物理机出现故障导致其上的所有主节点宕机,则该故障出现后当前集群中正常工作的主节点数目占当前集群中主节点总数目的比例无法达到上述预设比例,以致宕机的主节点所对应的从节点无法再升级为主节点,进而导致了整个集群处于不可用状态。
发明内容
本发明实施例公开了一种集群扩容方法及装置,用以保证集群横向扩容后的任意时刻,集群中任一物理机单独出现故障以致该物理机包含的所有主节点和从节点宕机时,整个集群仍然可以正常工作。技术方案如下:
为达上述目的,第一方面,本发明实施例提供了一种集群扩容方法,所述方法包括:
获得横向扩容后集群中节点的目标节点组数,其中,所述节点包括主节点和从节点,所述集群中任一主节点与该主节点对应的所有从节点组成一组节点组;
根据所述目标节点组数和预设比例,确定横向扩容后同一物理机所包含节点的最大组别数,其中,所述预设比例为:所述集群中从节点升级为主节点时,向从节点授权的主节点数目占主节点总数目的最小比例;
确定当前包含节点的组别数小于所述最大组别数的物理机为目标物理机;
基于第一物理机所包含节点的第一组别数与所述最大组别数,确定当前需要分配的节点的第一节点组数,其中,所述第一物理机为:所述目标物理机中包含节点的组别数最多的物理机;
将所述第一节点组数的节点组包含的节点在所述目标物理机中分配;
判断是否完成集群横向扩容;
如果否,返回执行所述确定当前包含节点的组别数小于所述最大组别数的物理机为目标物理机。
优选的,所述获得横向扩容后集群中节点的目标节点组数,包括:
确定横向扩容前所述集群中包含节点的组别数最多的物理机所包含节点的第二组别数;
基于所述第二组别数以及所述预设比例,获得横向扩容后集群中节点的目标节点组数。
优选的,所述基于所述第二组别数以及所述预设比例,获得横向扩容后集群中节点的目标节点组数,包括:
将满足以下表达式的任一整数A确定为横向扩容后集群中节点的目标节点组数:
其中,N1表示所述第二组别数,Th表示所述预设比例,Ceiling()表示向上取整函数。
优选的,所述根据所述目标节点组数和预设比例,确定横向扩容后同一物理机所包含节点的最大组别数,包括:
基于以下表达式确定目标取值:
式中,B表示所述目标取值,N2表示所述目标节点组数,Th表示所述预设比例,Floor()表示向下取整函数;
将不大于所述目标取值的整数确定为横向扩容后同一物理机所包含节点的最大组别数。
优选的,所述基于第一物理机所包含节点的第一组别数与所述最大组别数,确定当前需要分配的节点的第一节点组数,包括:
将满足以下表达式的任一整数X确定为当前需要分配的节点的第一节点组数:
X≤min{N4-N3,N5-N6};
其中,N3表示第一物理机所包含节点的第一组别数,N4表示所述最大组别数,N5表示所述目标节点组数,N6表示当前所述集群中节点的总组数。
第二方面,本发明实施例提供了一种集群扩容装置,所述装置包括:
获得模块,用于获得横向扩容后集群中节点的目标节点组数,其中,所述节点包括主节点和从节点,所述集群中任一主节点与该主节点对应的所有从节点组成一组节点组;
第一确定模块,用于根据所述目标节点组数和预设比例,确定横向扩容后同一物理机所包含节点的最大组别数,其中,所述预设比例为:所述集群中从节点升级为主节点时,向从节点授权的主节点数目占主节点总数目的最小比例;
第二确定模块,用于确定当前包含节点的组别数小于所述最大组别数的物理机为目标物理机;
第三确定模块,用于基于第一物理机所包含节点的第一组别数与所述最大组别数,确定当前需要分配的节点的第一节点组数,其中,所述第一物理机为:所述目标物理机中包含节点的组别数最多的物理机;
分配模块,用于将所述第一节点组数的节点组包含的节点在所述目标物理机中分配;
判断模块,用于判断是否完成集群横向扩容;如果否,触发所述第二确定模块。
优选的,所述获得模块,包括:
第一确定单元,用于确定横向扩容前所述集群中包含节点的组别数最多的物理机所包含节点的第二组别数;
获得单元,用于基于所述第二组别数以及所述预设比例,获得横向扩容后集群中节点的目标节点组数。
优选的,所述获得单元,具体用于:
将满足以下表达式的任一整数A确定为横向扩容后集群中节点的目标节点组数:
其中,N1表示所述第二组别数,Th表示所述预设比例,Ceiling()表示向上取整函数。
优选的,所述第一确定模块,包括:
第二确定单元,用于基于以下表达式确定目标取值:
式中,B表示所述目标取值,N2表示所述目标节点组数,Th表示所述预设比例,Floor()表示向下取整函数;
第三确定单元,用于将不大于所述目标取值的整数确定为横向扩容后同一物理机所包含节点的最大组别数。
优选的,所述第三确定模块,具体用于:
将满足以下表达式的任一整数X确定为当前需要分配的节点的第一节点组数:
X≤min{N4-N3,N5-N6};
其中,N3表示第一物理机所包含节点的第一组别数,N4表示所述最大组别数,N5表示所述目标节点组数,N6表示当前所述集群中节点的总组数。
由以上可见,本发明实施例提供的方案中,首先需要获得横向扩容后集群中节点的目标节点组数;根据所述目标节点组数和预设比例,确定横向扩容后同一物理机所包含节点的最大组别数;确定当前包含节点的组别数小于所述最大组别数的物理机为目标物理机;基于第一物理机所包含节点的第一组别数与所述最大组别数,确定当前需要分配的节点的第一节点组数;将所述第一节点组数的节点组包含的节点在所述目标物理机中分配;直到集群的横向扩容完成。与现有技术相比,本发明实施例所提供的方案中,集群的横向扩容分批次完成,限制扩容后包含节点的组别数最多的物理机中的节点的组别数,保证在任意一个物理机单独出现故障,致使该物理机中的所有节点宕机时,集群中的从节点仍然可以得到该时刻集群中超过预设比例的主节点的授权,以升级成新的主节点,进而确保集群在此情况下仍然可以正常工作,即保证了在集群的可用性。
另外,值得强调的是,对于现有的已经布置好的集群,如果该集群中已经存在:某一物理机中包含的节点的组别数过多,以致在某一时刻,集群中除该物理机中的主节点外,其余的主节点数目占集群中主节点总数目的目标比例未达到上述预设比例的问题,可以通过本发明实施例提供的方案进行横向扩容,增加集群中节点的总组数,以增加上述目标比例至不小于该预设比例的一个值,进而使得横向扩容后,集群中任一物理机出现故障以致该物理机包含的所有节点宕机时,整个集群仍然可以正常工作,增强了集群的稳定性。
当然,实施本发明的任一产品或方法必不一定需要同时达到以上所述的所有优点。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种集群扩容方法的第一种流程示意图;
图2为本发明实施例提供的一种集群扩容方法的第二种流程示意图;
图3为本发明实施例提供的一种集群扩容装置的第一种结构示意图;
图4为本发明实施例提供的一种集群扩容装置的第二种结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
下面,首先对本申请文件中涉及到的技术术语进行简单介绍。
集群:集群是一组相互独立的、通过高速网络互联的计算机,它们构成了一个组,并以单一系统的模式加以管理。一个客户与集群相互作用时,集群像是一个独立的服务器,对外提供统一的服务。
应该强调的是,本申请涉及的集群是一类无中心节点的集群,此类集群为了保证数据的高可用性,在集群中配置有主从模式,即:一个主节点对应一个或多个从节点,主节点提供数据存取,从节点则是从主节点拉取数据备份,当该主节点宕机后,就会从该主节点对应的从节点中选举一个从节点来作为新的主节点,从而保证集群不会挂掉,即保证此情况下整个集群仍然可以正常工作。
上述物理机是相对于虚拟机而言的对实体计算机的称呼。物理机提供给虚拟机以硬件环境,通过物理机和虚拟机的配合,一台计算机上可以安装上多个操作系统(一个外界操作系统和虚拟机中的数个操作系统),并且几个操作系统间还可以实现通信,就像是有多台计算机一样。在本申请中,一台物理机中可以被分配有多个主节点。
下面以redis集群为例对集群配置的主从模式进行简单介绍。
在redis集群中,一旦某个主节点出现故障而无法正常工作,那么该主节点对应的其中一个从节点会被升级为新的主节点,而该主节点所对应的其他从节点则会开始对这个新的主节点中的数据进行复制。
升级为主节点的从节点首先由已下线主节点对应的所有从节点中自行选举产生,在现有技术中,需要保证该已下线主节点负责处理的哈希槽数量非空;另外,该选举出来的从节点的数据被认为是可靠的,也即是,主从节点之间的复制连接(replication link)的断线时长不能超过节点超时时限(node timeout)乘以REDIS_CLUSTER_SLAVE_VALIDITY_MULT常量得出的积。
如果一个选举出来的从节点满足了以上的两个条件,那么该选举出来的从节点将向集群中的其他主节点发送授权请求,询问它们,是否允许该选举出来的从节点升级为新的主节点。
接收到授权请求的主节点会判断是否具备条件:该选举出来的从节点对应的主节点已经下线;在该已下线主节点所对应的所有从节点中,该选举出来的从节点的节点ID(身份标识号)在排序中是最小的;以及该选举出来的从节点处于正常的运行状态,它没有被标记为FAIL状态(故障状态),也没有被标记为PFAIL状态(可能存在故障的状态)。
如果当前已经具备上述三个条件,那么主节点将基于上述授权请求,向该选举出来的从节点返回FAILOVER_AUTH_GRANTED授权,同意该选举出来的从节点的升级请求。
在整个集群中,一旦该选举出来的从节点在给定的时限内得到预设比例的主节点的授权,就表明其已经具备升级为主节点的所有条件。它就会开始执行以下故障转移操作:
(1)通过PONG数据包告知其他节点,该选举出来的从节点现在是一个已升级的从节点(promoted slave)。
(2)接管(claiming)所有由已下线主节点负责处理的哈希槽。
(3)显式地向所有节点广播一个PONG数据包,加速其他节点识别这个节点的进度,而不是等待定时的PING/PONG数据包。
对于上述其他节点,所有的其他节点都会察觉到新的主节点的PROMOTED(升级)标志,然后对各自的配置进行相应的更新,例如,开始对新的主节点的数据进行复制。另外,所有被新的主节点接管的哈希槽会被相应更新;如果上述已下线的主节点重新回到上线状态,那么它也会察觉到该PROMOTED标志,并将自身调整为上述新的主节点的从节点。
在集群的生命周期中,如果一个带有PROMOTED标识的主节点因为某些原因转变成了从节点,那么该节点将丢失它所带有的PROMOTED标识。
例如,假设集群有D、E和F三个主节点,如果这三3个节点都没有对应的从节点,如果E挂掉了,那么整个集群也就不可用了。
所以在配置有主从模式的集群中,集群包含的主节点D、E、F,分别对应配置有从节点D1、E1、F1,如果E节点挂掉,那么E1节点会向集群中其他主节点发送授权请求,如果D、F节点均同意,假设此时要求的预设比例为0.5,而现在集群中三分之二的主节点授权从节点E1升级为主节点,则从节点E1升级为主节点以代替原主节点E,集群将会继续正确地提供服务。当E重新上线时,它就会变成E1的从节点。
应该强调的是,集群中的任意一个从节点都可能升级为主节点,例如,当主节点宕机后,该主节点对应的从节点就会进行升级成为新的主节点,另外,当需要对该集群中的节点升级二进制执行文件时,会按一定的策略统一关停主节点进行二进制替换,这时,对于任意一个主节点,其所对应的从节点中需要有一个从节点进行升级成为新的主节点。
例如,集群包含有主节点D、E、F,其分别对应配置有从节点D1、E1、F1,当需要对该集群中的节点升级二进制执行文件时,会统一地将主节点D、E、F关停,让后从节点D1、E1、F1升级成为新的主节点。
下面从与现有技术进行对比的角度对本发明进行详细介绍。
现有技术中,基于openstack(一种开源的云计算管理平台项目)管理平台等云计算管理平台对集群进行横向扩容时,会根据各个物理机上的存储负载来确定新的节点分配到哪台物理机上。换言之,集群进行横向扩容时,集群对应的物理机中,物理机的可用存储空间越大,就可能会有越多的节点被分配到该物理机上。
如例一,集群对应有12组节点组,每个节点组包括一个主节点和一个从节点。这些节点组中的节点被分配在10个物理机上,其中一个物理机Y中包含的节点的组别数为4,假设当前该物理机Y的可用存储空间200G,其余的四个物理机的可用存储空间均为20G,该集群中从节点升级为主节点需要一半以上的主节点的授权,即上述预设比例为0.5。
若此时需要在集群中增加5组节点组,显然的对于上述10个物理机,物理机Y的可用存储空间最大,其对应的存储负载较小,所以基于openstack(一种开源的云计算管理平台项目)管理平台等云计算管理平台增加节点组时,很有可能使得横向扩容后上述物理机Y中存在的节点的组别数增长到9个,可以理解的是,物理机Y中存在的节点的组别数为9个,表明必然存在某一时刻,该物理机Y中存在9个主节点,相应的,在该时刻,集群中除该物理机Y外的其它所有物理机中所包含的主节点的数量为8个。
如果在该时刻,上述物理机Y出现故障而导致其上的所有的主节点宕机后,宕机的主节点对应的从节点需要升级为主节点。显然的,该时刻有9个主节点宕机,可以向从节点提供授权的主节点的数目为8个,占集群中主节点的总数目为:8/17=0.47<0.5;所以上述宕机的主节点对应的从节点无法升级成为主节点,整个集群进入不可用的状态。
应该说明的是,节点的组别数是指:属于不同的节点组的的节点的类别数,例如,集群中有集群包含有主节点D、E、F,其分别对应配置有从节点D1和D2、E1和E2、F1和F2,显然的,集群包括的节点的组别数为3。
如果物理机Z中包含有主节点D、E以及从节点E1、F2,则物理机Z包含的节点的组别数为3,如果物理机Z中仅包含有主节点D、E,则物理机Z包含的节点的组别数为2,如果物理机Z中仅包含有从节点D2、E1和F2,则物理机Z包含的节点的组别数为3。
再如例二,假设当前集群中节点的总组数为5组,即五个主节点a、b、c、d和e以及各个主节点分别对应的从节点a1、b1、c1、d1和e1,集群对应有5个物理机1、2、3、4和5,节点在此5个物理机中的分布情况如下表1,前述预设比例为0.5。
表1
物理机 | 1 | 2 | 3 | 4 | 5 |
主节点 | a;b | c | d | e | |
从节点 | b1;c1 | d1 | e1 | a |
假设将现需要新增两组节点组:主节点f和g,以及主节点f和g分别对应的从节点f1和g1,按照现有技术横向扩容后,节点在此5个物理机中的分布情况如下表2。
表2
物理机 | 1 | 2 | 3 | 4 | 5 |
主节点 | a;b | c;f | d;g | e | |
从节点 | b1;c1;f1;g1 | d1 | e1 | a |
很明显的,集群横向扩容后,如上表2所示的状态下,任意一个物理机单独出现故障而致使其上的所有节点宕机时,由于正常工作的主节点的数目不小于5个,也就是说集群中可以正常工作的主节点的数目占集群主节点的总数目的比例必然大于0.5,所以此情况下,宕机的主节点对应的从节点可以升级成为主节点,集群可用。
但是,如果扩容后,系统需要对节点进行二进制执行文件升级,则会按一定策略关停当前所有的主节点,并使得所有的从节点升级成为主节点,二进制执行文件升级后,节点的分布状态如表3所示。
表3
物理机 | 1 | 2 | 3 | 4 | 5 |
主节点 | b1;c1;f1;g1 | d1 | e1 | a | |
从节点 | a;b | c;f | d;g | e |
可以很明显的看到,在集群横向扩容后,如上表3所示的状态下,物理机2单独出现故障而致使其上的所有节点宕机时,由于正常工作的主节点的数目仅为3个,也就是说集群中可以正常工作的主节点的数目占集群主节点的总数目的比例小于0.5,所以此情况下,集群不可用。
相对比而言,本发明实施例提供的方案中,首先需要获得横向扩容后集群中节点的目标节点组数;根据所述目标节点组数和预设比例,确定横向扩容后同一物理机所包含节点的最大组别数;确定当前包含节点的组别数小于所述最大组别数的物理机为目标物理机;基于第一物理机所包含节点的第一组别数与所述最大组别数,确定当前需要分配的节点的第一节点组数;将所述第一节点组数的节点组包含的节点在所述目标物理机中分配;直到集群的横向扩容完成。与现有技术相比,本发明实施例所提供的方案中,集群的横向扩容分批次完成,限制扩容后包含节点的组别数最多的物理机中的节点的组别数,保证在任意一个物理机单独出现故障,致使该物理机中的所有节点宕机时,集群中的从节点仍然可以得到该时刻集群中超过预设比例的主节点的授权,以升级成新的主节点,进而确保集群在此情况下仍然可以正常工作,即保证了在集群的可用性。
如上例一,集群横向扩容后的节点总组数为17,上述预设比例为0.5,基于此,我们可以确定扩容后同一物理机所包含节点的最大组别数为8。利用本发明实施例提供的方案,在整个横向扩容结束后,物理机Y中包含节点的组别数最多可以为8个。
所以,即使在某一时刻,该物理机Y中存在8个主节点,但相应的,在该时刻,集群中除该物理机Y外的其它所有物理机中所包含的主节点的数量为9个。
如果在该时刻,当上述物理机Y出现故障而导致其上的所有主节点宕机后,宕机的主节点对应的从节点需要升级为主节点。显然的,该时刻有8个主节点宕机,可以向从节点提供授权的主节点的数目为9个,占集群中主节点的总数目为:9/17=0.53>0.5;所以上述宕机的主节点对应的从节点可以升级成为主节点,进而确保集群在此情况下仍然可以正常工作,即保证了在集群的可用性。
如上例二,使用本发明实施例提供的方案时,限制同一物理机中所包含的节点的组别数,在例二所示的前提条件下,集群扩容后任意一个物理机中所包含的节点的组别数都不会超过3个,所以,上述物理机2中的节点组别数最多只有3个。
所以在集群横向扩容后,集群中的任意一个物理机单独出现故障而致使其上的所有节点宕机时,集群中可以正常工作的主节点的数目占集群主节点的总数目的比例均大于0.5,保证了集群的可用性。
下面再通过具体实施例再对本发明进行具体介绍。
图1为本发明实施例提供的一种集群扩容方法的第一种流程示意图,该方法包括:
S101:获得横向扩容后集群中节点的目标节点组数。其中,此处所述的节点包括主节点和从节点,集群中任一主节点与该主节点对应的所有从节点组成一组节点组。
应该强调的是,同一节点组的主节点和所有从节点不可以创建在同一物理机上,所以在新增一组节点组时,应避免将同一节点组分配在同一台物理机上,具体的,可通过现有技术来避免在新增一组节点组时,将同一节点组分配在同一台物理机,本发明实施例在此不做详细介绍。
在现有技术中,扩容后集群中节点的目标节点组数可以直接为用户输入的,例如,集群当前的集群中节点总组数为20,用户通过管理平台输入指令:在集群中新增10组节点组,则此处该目标节点组数为30。具体的,对于该目标节点组数的获得方法,本发明实施例在此不做限定。
S102:根据目标节点组数和预设比例,确定横向扩容后同一物理机所包含节点的最大组别数,其中,该预设比例为:集群中从节点升级为主节点时,向从节点授权的主节点数目占主节点总数目的最小比例。
可以理解,为了避免单独一个物理机出现故障而导致的集群不可用问题,最主要的就是保证横向扩容后的任意时刻,集群中的任意一个物理机出现故障,并导致该物理机上的所有节点宕机后,集群中依然可以正常工作的主节点的数目,占集群中主节点总数目的目标比例大于上述预设比例,从另一角度看,可以控制扩容后同一物理机所包含节点的最大组别数,进而控制该目标比例,因为任意一个从节点都有可能升级为主节点,所以物理机中所包含节点的组别数一旦确定,就可以确定该物理机中可以存在的主节点的最大数目。
在本发明的一个具体实现方式中,上述步骤根据目标节点组数和预设比例,确定横向扩容后同一物理机所包含节点的最大组别数(S102),包括:
基于以下表达式确定目标取值:
式中,B表示目标取值,N2表示目标节点组数,Th表示预设比例,Floor()表示向下取整函数;
将不大于目标取值的整数确定为横向扩容后同一物理机所包含节点的最大组别数。
应该强调的是,在本发明实施例中,该最大组别数的取值可以为B,也可以为小于B的整数值,在实际的应用过程中,该最大组别数的取值还应该参考当前时刻集群中节点在各个物理机上的分布情况,以及各个物理机的负载情况。
例如,集群对应有10个物理机,集群包括10个主节点以及分别对应该10个主节点的10个从节点,当前的目标节点组数为18,即横向扩容需要增加8组节点组,假设新增的每个节点组包括一个主节点和一个从节点,该预设比例为0.6,则此时B的取值为7。
如果当前10个物理机中,每个物理机所包含的节点的组别数均为2,并且此时每个物理机中都有足够的可用存储空间,可以理解,扩容后集群中必然存在某一个物理机,其所包含的节点的组别数大于等于4,所以此时的最大组别数可以取4、5、6或7。
如果当前10个物理机中,物理机Y包含的节点组别数为1,并且物理机Y中没有足够的存储空间来建立新的节点,除物理机Y外的其他物理机都有足够的可用存储空间,即表示扩容后物理机Y包含的节点组别数仍然为1。可以理解,扩容后必然存在包含的节点组别数大于等于5的物理机,所以此时的最大组别数可以取5、6或7。
如果当前10个物理机中,物理机Y包含的节点组别数为7,可以理解,当前情况下,该最大组别数只能取7。
再例如,集群对应有12个物理机,集群包括18个主节点以及分别对应该18个主节点的18个从节点,当前的目标节点组数为30,即横向扩容需要增加12组节点组,假设新增的每个节点组包括一个主节点和一个从节点,该预设比例为0.5,应当注意,此时的N2*(1-Th)=15,所以此时B的取值为14。
如果当前12个物理机中,任意一个物理机所包含的节点的组别数均为3,并且此时每个物理机中都有足够的可用存储空间,可以理解,扩容后必然存在有物理机,该物理机中包含节点组别数大于等于5,所以此时的最大组别数可以取5~14中的任一整数。
如果当前12个物理机中,任意一个物理机所包含的节点的组别数均为3,并且12个物理机中除物理机Y和Z外都有足够的可用存储空间,物理机Y中没有足够的存储空间来建立新的节点,即表示扩容后物理机Y所包含的节点的组别数仍然为3,物理机Z中的可用存储空间仅能支持新建1个节点,即表示扩容后物理机Z所包含的节点的组别数最大可以为4。可以理解,扩容后必然存在包含的节点的组别数大于等于6的物理机,比如说,所以此时的最大组别数可以取6~14中的任一整数。
如果当前12个物理机中,物理机Y包含的节点组别数为14,可以理解,当前情况下,该最大组别数只能取14。
S103:确定当前包含节点的组别数小于最大组别数的物理机为目标物理机。
结合下文可以理解,此处确定的目标物理机为:在扩容过程中可以分配节点的物理机;对于与目标物理机相对应的非目标物理机,即当前包含节点的组别数不小于上述最大组别数的物理机。
另外,应该强调,本发明实施例中,可以将所有的满足该预设条件的物理机确定为目标物理机,当然也可以根据实际应用或者需要将满足该预设条件的部分物理机确定为目标物理机;其中,该预设条件为物理机当前包含节点的组别数小于上述最大组别数。
S104:基于第一物理机所包含节点的第一组别数与最大组别数,确定当前需要分配的节点的第一节点组数,其中,第一物理机为:目标物理机中包含节点的组别数最多的物理机;
本发明实施例中,集群的横向扩容是分批次分配主节点的,可以理解,上述当前需要分配的主节点的第一节点组数可以是指,当前批次需要分配的第一节点组数。
在本发明实施例的一个优选实现方式中,上述基于第一物理机所包含节点的第一组别数与最大组别数,确定当前需要分配的节点的第一节点组数(S104),包括:
将满足以下表达式的任一整数X确定为当前需要分配的节点的第一节点组数:
X≤min{N4-N3,N5-N6};
其中,N3表示第一物理机所包含节点的第一组别数,N4表示最大组别数,N5表示目标节点组数,N6表示当前集群中节点的总组数。
可以理解,N4-N3表示上述最大组别数与上述第一组别数的差值,X≤N4-N3的目的在于:避免在当前批次分配节点组后,该第一物理机中所包含的节点的组别数大于上述最大组别数。
例如,当前的第一组别数(N3)为6,最大组别数(N4)为9,假设当前批次确定的该第一节点组数为4,如果此批次的节点组分配结束后,该第一物理机中所包含节点的组别数为10,大于上述最大组别数。所以此处需要控制该第一节点组数的大小不大于该最大组别数(N4)与第一组别数(N3)的第一差值。
另外,N5-N6表示上述目标节点组数与当前集群中节点的总组数的差值,X≤N5-N6的目的在于:避免在当前批次的节点组分配结束后,集群中节点的总组数超过了上述目标节点组数。
例如,当前的第一组别数(N3)为6,最大组别数(N4)为9,该目标节点组数(N5)为20,当前集群中节点的总组数(N6)为19个,假设当前确定上述第一节点组数为2,在当前批次的节点组分配结束后,集群中节点的总组数为21个,已经超过了该目标节点组数,显然是不合理的。所以此处需要控制该第一节点组数的取值不大于该目标节点组数(N5)与当前集群中节点的总组数(N6)的第二差值。
综上所述,该第一节点组数的取值必须既不大于上述第一差值,也不大于上述第二差值,即不大于上述第一差值与第二差值之中的较小值。
应该强调的是,为了减少分配的批次,减轻系统的运行负担,优选的,可以选择第一节点组数的取值等于述第一差值与第二差值之中的较小值。例如,集群横向扩容需要新增8组节点组,假设每个批次中,X≤4,如果每次确定X的取值为2,那么需要分4个批次分配节点组,但是,如果每次确定X的取值为4,那么仅需要分两个批次分配新的节点组即可完成集群横向扩容。
S105:将第一节点组数的节点组包含的节点在目标物理机中分配。
应该强调,如上所述,本领域技术人员公知的是,同一组节点组不会建立在同一个物理机中,本发明实施例亦是如此。
应该强调的是,该第一节点组数的节点组包含的节点可以是在所有的目标物理机中进行分配,当然,也可以根据实际需要,选择一部分目标物理机来分配节点组中的节点。
S106:判断是否完成集群横向扩容;如果否,返回执行上述确定当前包含节点的组别数小于最大组别数的物理机为目标物理机(S103)。
在本发明实施例中,判断是否完成集群扩容的方式可以是:判断当前集群中节点的总组数是否等于上述目标节点组数,如果等于,表明已经完成集群横向扩容,如果不等于,表明未完成集群横向扩容。
应该强调的是,返回执行上述上述确定当前包含节点的组别数小于最大组别数的物理机为目标物理机(S103),表明每个批次的目标物理机需要重新确定,在当前批次,某一物理机被确定为一个目标物理机,但是在下一批次中,该物理机可能不会被确定为目标物理机。
例如,上述最大组别数为10,物理机Z中包含的节点的组别数为6,此时,物理机Z在当前批次中被确定为目标物理机,当前批次分配主节点后,物理机Z中包含的节点的组别数增加为10个,显然的,在此后的节点组分配批次中,物理机Z不一定会再次被确定为目标物理机。
由以上可见,本发明实施例提供的方案中,首先需要获得横向扩容后集群中节点的目标节点组数;根据所述目标节点组数和预设比例,确定横向扩容后同一物理机所包含节点的最大组别数;确定当前包含节点的组别数小于所述最大组别数的物理机为目标物理机;基于第一物理机所包含节点的第一组别数与所述最大组别数,确定当前需要分配的节点的第一节点组数;将所述第一节点组数的节点组包含的节点在所述目标物理机中分配;直到集群的横向扩容完成。与现有技术相比,本发明实施例所提供的方案中,集群的横向扩容分批次完成,限制扩容后包含节点的组别数最多的物理机中的节点的组别数,保证在任意一个物理机单独出现故障,致使该物理机中的所有节点宕机时,集群中的从节点仍然可以得到该时刻集群中超过预设比例的主节点的授权,以升级成新的主节点,进而确保集群在此情况下仍然可以正常工作,即保证了在集群的可用性。
可以理解,前述实施例中所涉及的第一节点组数以及第一组别数,是为了方便说明具体操作而给定的名称,仅表示不同的接点组数以及组别数而已。
类似的,前述实施例中第一物理机是为了方便说明具体操作而给定的名称,在实际应用中,根据业务需要,集群中的任意一个满足条件的物理机都有可能被确定为第一物理机。
本申请其他实施例中,也存在与前述类似的为了方便说明具体操作而给定名称的限定,其都是为了表述方便,并不是实质限定某个设备或网络仅具有什么功能。这里不再一一罗列。
下面通过一个实例对本发明实施例所提供的一种集群扩容方法的第一种流程进行简单介绍。
假设当前集群中节点的总组数为10组,每组节点组均包含一个主节点和一个从节点,集群对应有10个物理机,当前集群中包含节点的组别数最大的物理机Z所包含的节点组别数为3个,前述预设比例为0.6。
假设当前接收到用户输入的指令:新增10组新的节点组,即表示,上述目标节点组数为20。
由于对应的N2*(1-Th)=8,为整值,通过目标取值B的计算公式获得B的值为7个,将7确定为扩容后同一物理机所包含节点的最大组别数。
第一个分配批次中,10个物理机所包含的节点的组别数均小于7,则确定该10个物理机为目标物理机。
通过整数X的取值公式确定X≤4,并确定4为当前需要分配的节点的第一节点组数。
然后将4组节点组所包含的节点在上述10个物理机中进行分配。
本批次分批结束后,集群中节点的总组数为14,显然,集群的横向扩容还没有完成,所以进行第二个分配批次。
假设第一个分配批次完成后,10个物理机中物理机Y包含的节点的组别数为7,其余的物理机包含的节点的组别数小于7,则确定除物理机Y外的所有物理机为目标物理机。另外,此时确定的第一物理机为物理机Z,其中包含节点的组别数为3。
再次通过整数X的取值公式确定X≤4,并确定4为当前需要分配的节点的第一节点组数。
然后将4组新的节点组所包含的节点在上述除物理机Y外的9个物理机中进行分配。
本批次分批结束后,集群中节点的总组数为18,显然,集群的横向扩容依然还没有完成,所以进行第三个分配批次。
假设第二个分配批次完成后,物理机Z中包含的节点的组别数为7,则确定上述10个物理机中除物理机Y和Z外的其余8个物理机为目标物理机,并假设此时确定的第一物理机中包含的节点的组别数为3。
通过整数X的取值公式确定X≤2,并确定2为当前需要分配的节点的第一节点组数。
然后将2组新的节点组所包含的节点在上述除物理机Y和Z外的8个物理机中进行分配。
本批次分批结束后,集群中节点的总组数为20个,显然,集群的横向扩容已经完成。可以理解,集群横向扩容后,集群中不会存在某个物理机中包含的节点的组别数超过7个。
在本发明的另一个具体实施例中,如图2所示的一种集群扩容方法的第二种流程示意图,与图1所示方法实施例相比,本实施例中前述获得横向扩容后集群中节点的目标节点组数(S101),包括:
S1011:确定横向扩容前集群中包含节点的组别数最多的物理机所包含节点的第二组别数。
与前述实施例不同的是,在本实施例中,扩容前的集群中已经存在目标问题:集群中的某一物理机W中包含的节点的组别数n过多,以致某一时刻该物理机中存在n个主节点,并在该时刻除该物理机W外的所有物理机中所包含的主节点的总数目占集群主节点总数目的比例小于前述预设比例。
在实际应用中,可以通过本实施例所提供的横向扩容方法解决现有的集群中存在的上述目标问题。
S1012:基于第二组别数以及预设比例,获得横向扩容后集群中节点的目标节点组数。
在本实施例中,上述基于第二组别数以及预设比例,获得横向扩容后集群中节点的目标节点组数(S1012),包括:
将满足以下表达式的任一整数A确定为横向扩容后集群中节点的目标节点组数:
其中,N1表示第二组别数,Th表示该预设比例,Ceiling()表示向上取整函数。
应该说明的是,为了避免集群中新增过多的节点组,最优的,可以将满足A的表达式的最小整数值确定为扩容后的目标节点组数。
例如,在本实施例中,假设扩容前集群中节点的总组数为17,预设比例为0.45,物理机Z所包含的节点的组别数为10,即N1=10,可以理解,横向扩容前,存在某时间段内,物理机Z存在有10个主节点,那么在该时间段内,集群中除物理机Z外的其他物理机中所包含的主节点的数目占集群中主节点总数目的目标比例未达到预设比例。
此处,由于(N1/(1-Th))=18.18,为非整值,则通过A的表达式确定A≥19。
当将整数值19确定为扩容后节点的目标节点组数时,按照前述实施例中的方法进行横向扩容后,物理机Z始终不会被确定为目标物理机,因而在横向扩容后,物理机Z所包含节点的组别数仍然为10,横向扩容后,即使在某时间段内物理机Z中存在10个主节点,该时间段内集群中除物理机Z外的其他物理机中所包含的主节点的数目增长为9,此时的目标比例超过了预设比例。
可以理解,还可以将20、21等大于19的整数值确定为上述目标节点组数,但是,节点组数越多,整个集群系统需要配置的主节点以及从节点的数目也就越多,所有的节点占用的资源也就会越多,所以在此例中,优选将整数值19确定为该目标节点组数。
再例如,假设扩容前集群中节点总组数为16,预设比例为0.5,物理机Z所包含节点的组别数为10,即N1=10,可以理解,横向扩容前,存在某时间段内,物理机Z存在有10个主节点,那么在该时间段内,集群中除物理机Z外的其他物理机中所包含的主节点的数目占集群中主节点总数目的目标比例未达到预设比例。
此处,由于(N1/(1-Th))=20,为整值,则通过A的表达式确定A≥21,此时可将整数值21确定为扩容后节点的目标节点组数。
由以上可见,本发明实施例提供的方案中,首先需要获得横向扩容后集群中节点的目标节点组数;根据所述目标节点组数和预设比例,确定横向扩容后同一物理机所包含节点的最大组别数;确定当前包含节点的组别数小于所述最大组别数的物理机为目标物理机;基于第一物理机所包含节点的第一组别数与所述最大组别数,确定当前需要分配的节点的第一节点组数;将所述第一节点组数的节点组包含的节点在所述目标物理机中分配;直到集群的横向扩容完成。与现有技术相比,本发明实施例所提供的方案中,集群的横向扩容分批次完成,限制扩容后包含节点的组别数最多的物理机中的节点的组别数,保证在任意一个物理机单独出现故障,致使该物理机中的所有节点宕机时,集群中的从节点仍然可以得到该时刻集群中超过预设比例的主节点的授权,以升级成新的主节点,进而确保集群在此情况下仍然可以正常工作,即保证了在集群的可用性。
另外,值得强调的是,对于现有的已经布置好的集群,如果该集群中已经存在:某一物理机中包含的节点的组别数过多,以致在某一时刻,集群中除该物理机中的主节点外,其余的主节点数目占集群中主节点总数目的目标比例未达到上述预设比例的问题,可以通过本发明实施例提供的方案进行横向扩容,增加集群中节点的总组数,以增加上述目标比例至不小于该预设比例的一个值,进而使得横向扩容后,集群中任一物理机出现故障以致该物理机包含的所有节点宕机时,整个集群仍然可以正常工作,增强了集群的稳定性。
下面通过一个实例对本发明实施例所提供的一种集群扩容方法的第二种流程进行简单介绍。
假设当前存在一个集群,该集群中节点的总组数为18,每组节点组包括一个主节点和一个从节点,集群对应有10个物理机,其中一个物理机Y包含的节点的组别数为11,预设比例为0.5。因此,可能存在某一时间段,物理机Y中存在有11个主节点,在该时间段内,上述目标比例为:7/18=0.39,小于该预设比例。所以,可以对该集群进行横向扩容。
首先可以确定前述第二组别数为11,然后通过A的表达式确定A≥23,直接将整数值23确定为该目标节点组数。
通过目标取值B的计算公式获得B的值为11,此时,将整数值11确定为扩容后同一物理机所包含节点的最大组别数。
第一个分配批次中,前述10个物理机中,由于物理机Y中的节点的组别数为11,则确定除物理机Y外的其余9个物理机为目标物理机。
通过整数X的取值公式确定X≤5,并确定5为当前需要分配的节点的第一节点组数。
然后将5组节点组在上述目标物理机中分配。
本批次分配结束后,集群中节点的总组数为23个,显然,集群的横向扩容已经完成。可以理解,横向扩容后,集群中不会存在某个物理机中包含的节点的组别数超过11个。
相应于图1所示的方法实施例,如图3所示的一种集群扩容装置的第一种结构示意图,该装置包括:
获得模块110,用于获得横向扩容后集群中节点的目标节点组数,其中,所述节点包括主节点和从节点,所述集群中任一主节点与该主节点对应的所有从节点组成一组节点组;
第一确定模块120,用于根据所述目标节点组数和预设比例,确定横向扩容后同一物理机所包含节点的最大组别数,其中,所述预设比例为:所述集群中从节点升级为主节点时,向从节点授权的主节点数目占主节点总数目的最小比例;
第二确定模块130,用于确定当前包含节点的组别数小于所述最大组别数的物理机为目标物理机;
第三确定模块140,用于基于第一物理机所包含节点的第一组别数与所述最大组别数,确定当前需要分配的节点的第一节点组数,其中,所述第一物理机为:所述目标物理机中包含节点的组别数最多的物理机;
分配模块150,用于将所述第一节点组数的节点组包含的节点在所述目标物理机中分配;
判断模块160,用于判断是否完成集群横向扩容;如果否,触发所述第二确定模块130。
具体的,所述第一确定模块120,可以包括第二确定单元和第三确定单元(图中未示出),其中:
第二确定单元,用于基于以下表达式确定目标取值:
式中,B表示所述目标取值,N2表示所述目标节点组数,Th表示所述预设比例,Floor()表示向下取整函数;
第三确定单元,用于将不大于所述目标取值的整数确定为横向扩容后同一物理机所包含节点的最大组别数。
具体的,所述第三确定模块,可以用于:
将满足以下表达式的任一整数X确定为当前需要分配的节点的第一节点组数:
X≤min{N4-N3,N5-N6};
其中,N3表示第一物理机所包含节点的第一组别数,N4表示所述最大组别数,N5表示所述目标节点组数,N6表示当前所述集群中节点的总组数。
由以上可见,本发明实施例提供的方案中,首先需要获得横向扩容后集群中节点的目标节点组数;根据所述目标节点组数和预设比例,确定横向扩容后同一物理机所包含节点的最大组别数;确定当前包含节点的组别数小于所述最大组别数的物理机为目标物理机;基于第一物理机所包含节点的第一组别数与所述最大组别数,确定当前需要分配的节点的第一节点组数;将所述第一节点组数的节点组包含的节点在所述目标物理机中分配;直到集群的横向扩容完成。与现有技术相比,本发明实施例所提供的方案中,集群的横向扩容分批次完成,限制扩容后包含节点的组别数最多的物理机中的节点的组别数,保证在任意一个物理机单独出现故障,致使该物理机中的所有节点宕机时,集群中的从节点仍然可以得到该时刻集群中超过预设比例的主节点的授权,以升级成新的主节点,进而确保集群在此情况下仍然可以正常工作,即保证了在集群的可用性。
在本发明的另一个具体实施例中,相应于图2所示方法实施例,如图4所示的一种集群扩容方法的第二种结构示意图,与图3所示装置实施例相比,所述获得模块110,包括:
第一确定单元1101,用于确定横向扩容前所述集群中包含节点的组别数最多的物理机所包含节点的第二组别数;
获得单元1102,用于基于所述第二组别数以及所述预设比例,获得横向扩容后集群中节点的目标节点组数。
具体的,所述获得单元1102,具体用于:
将满足以下表达式的任一整数A确定为横向扩容后集群中节点的目标节点组数:
其中,N1表示所述第二组别数,Th表示所述预设比例,Ceiling()表示向上取整函数。
由以上可见,本发明实施例提供的方案中,首先需要获得横向扩容后集群中节点的目标节点组数;根据所述目标节点组数和预设比例,确定横向扩容后同一物理机所包含节点的最大组别数;确定当前包含节点的组别数小于所述最大组别数的物理机为目标物理机;基于第一物理机所包含节点的第一组别数与所述最大组别数,确定当前需要分配的节点的第一节点组数;将所述第一节点组数的节点组包含的节点在所述目标物理机中分配;直到集群的横向扩容完成。与现有技术相比,本发明实施例所提供的方案中,集群的横向扩容分批次完成,限制扩容后包含节点的组别数最多的物理机中的节点的组别数,保证在任意一个物理机单独出现故障,致使该物理机中的所有节点宕机时,集群中的从节点仍然可以得到该时刻集群中超过预设比例的主节点的授权,以升级成新的主节点,进而确保集群在此情况下仍然可以正常工作,即保证了在集群的可用性。
另外,值得强调的是,对于现有的已经布置好的集群,如果该集群中已经存在:某一物理机中包含的节点的组别数过多,以致在某一时刻,集群中除该物理机中的主节点外,其余的主节点数目占集群中主节点总数目的目标比例未达到上述预设比例的问题,可以通过本发明实施例提供的方案进行横向扩容,增加集群中节点的总组数,以增加上述目标比例至不小于该预设比例的一个值,进而使得横向扩容后,集群中任一物理机出现故障以致该物理机包含的所有节点宕机时,整个集群仍然可以正常工作,增强了集群的稳定性。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本领域普通技术人员可以理解实现上述方法实施方式中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,所述的程序可以存储于计算机可读取存储介质中,这里所称得的存储介质,如:ROM/RAM、磁碟、光盘等。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。
Claims (10)
1.一种集群扩容方法,其特征在于,所述方法包括:
获得横向扩容后集群中节点的目标节点组数,其中,所述节点包括主节点和从节点,所述集群中任一主节点与该主节点对应的所有从节点组成一组节点组;
根据所述目标节点组数和预设比例,确定横向扩容后同一物理机所包含节点的最大组别数,其中,所述预设比例为:所述集群中从节点升级为主节点时,向从节点授权的主节点数目占主节点总数目的最小比例;
确定当前包含节点的组别数小于所述最大组别数的物理机为目标物理机;
基于第一物理机所包含节点的第一组别数与所述最大组别数,确定当前需要分配的节点的第一节点组数,其中,所述第一物理机为:所述目标物理机中包含节点的组别数最多的物理机;
将所述第一节点组数的节点组包含的节点在所述目标物理机中分配;
判断是否完成集群横向扩容;
如果否,返回执行所述确定当前包含节点的组别数小于所述最大组别数的物理机为目标物理机。
2.根据权利要求1所述的方法,其特征在于,所述获得横向扩容后集群中节点的目标节点组数,包括:
确定横向扩容前所述集群中包含节点的组别数最多的物理机所包含节点的第二组别数;
基于所述第二组别数以及所述预设比例,获得横向扩容后集群中节点的目标节点组数。
3.根据权利要求2所述的方法,其特征在于,所述基于所述第二组别数以及所述预设比例,获得横向扩容后集群中节点的目标节点组数,包括:
将满足以下表达式的任一整数A确定为横向扩容后集群中节点的目标节点组数:
其中,N1表示所述第二组别数,Th表示所述预设比例,Ceiling()表示向上取整函数。
4.根据权利要求1所述的方法,其特征在于,所述根据所述目标节点组数和预设比例,确定横向扩容后同一物理机所包含节点的最大组别数,包括:
基于以下表达式确定目标取值:
式中,B表示所述目标取值,N2表示所述目标节点组数,Th表示所述预设比例,Floor()表示向下取整函数;
将不大于所述目标取值的整数确定为横向扩容后同一物理机所包含节点的最大组别数。
5.根据权利要求1所述的方法,其特征在于,所述基于第一物理机所包含节点的第一组别数与所述最大组别数,确定当前需要分配的节点的第一节点组数,包括:
将满足以下表达式的任一整数X确定为当前需要分配的节点的第一节点组数:
X≤min{N4-N3,N5-N6};
其中,N3表示第一物理机所包含节点的第一组别数,N4表示所述最大组别数,N5表示所述目标节点组数,N6表示当前所述集群中节点的总组数。
6.一种集群扩容装置,其特征在于,所述装置包括:
获得模块,用于获得横向扩容后集群中节点的目标节点组数,其中,所述节点包括主节点和从节点,所述集群中任一主节点与该主节点对应的所有从节点组成一组节点组;
第一确定模块,用于根据所述目标节点组数和预设比例,确定横向扩容后同一物理机所包含节点的最大组别数,其中,所述预设比例为:所述集群中从节点升级为主节点时,向从节点授权的主节点数目占主节点总数目的最小比例;
第二确定模块,用于确定当前包含节点的组别数小于所述最大组别数的物理机为目标物理机;
第三确定模块,用于基于第一物理机所包含节点的第一组别数与所述最大组别数,确定当前需要分配的节点的第一节点组数,其中,所述第一物理机为:所述目标物理机中包含节点的组别数最多的物理机;
分配模块,用于将所述第一节点组数的节点组包含的节点在所述目标物理机中分配;
判断模块,用于判断是否完成集群横向扩容;如果否,触发所述第二确定模块。
7.根据权利要求6所述的装置,其特征在于,所述获得模块,包括:
第一确定单元,用于确定横向扩容前所述集群中包含节点的组别数最多的物理机所包含节点的第二组别数;
获得单元,用于基于所述第二组别数以及所述预设比例,获得横向扩容后集群中节点的目标节点组数。
8.根据权利要求7所述的装置,其特征在于,所述获得单元,具体用于:
将满足以下表达式的任一整数A确定为横向扩容后集群中节点的目标节点组数:
其中,N1表示所述第二组别数,Th表示所述预设比例,Ceiling()表示向上取整函数。
9.根据权利要求6所述的装置,其特征在于,所述第一确定模块,包括:
第二确定单元,用于基于以下表达式确定目标取值:
式中,B表示所述目标取值,N2表示所述目标节点组数,Th表示所述预设比例,Floor()表示向下取整函数;
第三确定单元,用于将不大于所述目标取值的整数确定为横向扩容后同一物理机所包含节点的最大组别数。
10.根据权利要求6所述的装置,其特征在于,所述第三确定模块,具体用于:
将满足以下表达式的任一整数X确定为当前需要分配的节点的第一节点组数:
X≤min{N4-N3,N5-N6};
其中,N3表示第一物理机所包含节点的第一组别数,N4表示所述最大组别数,N5表示所述目标节点组数,N6表示当前所述集群中节点的总组数。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610791492.XA CN107786365B (zh) | 2016-08-31 | 2016-08-31 | 一种集群扩容方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610791492.XA CN107786365B (zh) | 2016-08-31 | 2016-08-31 | 一种集群扩容方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107786365A true CN107786365A (zh) | 2018-03-09 |
CN107786365B CN107786365B (zh) | 2020-06-19 |
Family
ID=61451278
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610791492.XA Active CN107786365B (zh) | 2016-08-31 | 2016-08-31 | 一种集群扩容方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107786365B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114745393A (zh) * | 2022-03-31 | 2022-07-12 | 阿里云计算有限公司 | 会话同步系统及其方法、云计算中心和云计算设备 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103023970A (zh) * | 2012-11-15 | 2013-04-03 | 中国科学院计算机网络信息中心 | 一种物联网海量数据存储方法及系统 |
CN103634375A (zh) * | 2013-11-07 | 2014-03-12 | 华为技术有限公司 | 扩容集群节点的方法、装置及设备 |
CN104484469A (zh) * | 2014-12-31 | 2015-04-01 | 天津南大通用数据技术股份有限公司 | 一种支持多hash map数据库集群系统不停机的扩容方法 |
CN105554132A (zh) * | 2015-12-23 | 2016-05-04 | 浪潮集团有限公司 | 一种Hadoop在线扩容的方法 |
CN107623711A (zh) * | 2016-07-15 | 2018-01-23 | 北京金山云网络技术有限公司 | 一种集群中主节点及从节点的分配方法及装置 |
CN107645396A (zh) * | 2016-07-21 | 2018-01-30 | 北京金山云网络技术有限公司 | 一种集群扩容方法及装置 |
-
2016
- 2016-08-31 CN CN201610791492.XA patent/CN107786365B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103023970A (zh) * | 2012-11-15 | 2013-04-03 | 中国科学院计算机网络信息中心 | 一种物联网海量数据存储方法及系统 |
CN103634375A (zh) * | 2013-11-07 | 2014-03-12 | 华为技术有限公司 | 扩容集群节点的方法、装置及设备 |
CN104484469A (zh) * | 2014-12-31 | 2015-04-01 | 天津南大通用数据技术股份有限公司 | 一种支持多hash map数据库集群系统不停机的扩容方法 |
CN105554132A (zh) * | 2015-12-23 | 2016-05-04 | 浪潮集团有限公司 | 一种Hadoop在线扩容的方法 |
CN107623711A (zh) * | 2016-07-15 | 2018-01-23 | 北京金山云网络技术有限公司 | 一种集群中主节点及从节点的分配方法及装置 |
CN107645396A (zh) * | 2016-07-21 | 2018-01-30 | 北京金山云网络技术有限公司 | 一种集群扩容方法及装置 |
Non-Patent Citations (1)
Title |
---|
熊聪聪等: "基于Hadoop的校园物联网数据处理系统研究", 《天津科技大学学报》 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114745393A (zh) * | 2022-03-31 | 2022-07-12 | 阿里云计算有限公司 | 会话同步系统及其方法、云计算中心和云计算设备 |
Also Published As
Publication number | Publication date |
---|---|
CN107786365B (zh) | 2020-06-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10361928B2 (en) | Cluster instance management system | |
CN106453665B (zh) | 基于分布式缓存系统的数据缓存方法、服务器和系统 | |
CN107566531A (zh) | 一种支持均衡资源的Elasticsearch集群扩展方法 | |
US9703610B2 (en) | Extensible centralized dynamic resource distribution in a clustered data grid | |
CN106484528B (zh) | 分布式框架中用于实现集群动态伸缩的方法及装置 | |
CN102053982B (zh) | 一种数据库信息管理方法和设备 | |
US7428210B2 (en) | Fail over method and a computing system having fail over function | |
CN103179053B (zh) | 用于提供数据管理服务的系统和方法 | |
CN102025550A (zh) | 一种分布式集群中数据管理的系统和方法 | |
CN102137133B (zh) | 内容分发的方法、系统及调度服务器 | |
CN104702691B (zh) | 分布式负载均衡方法和装置 | |
CN104679594B (zh) | 一种中间件分布式计算方法 | |
JP2003022209A (ja) | 分散サーバーシステム | |
CN108334396A (zh) | 一种数据处理方法和装置、资源组的创建方法和装置 | |
CN101984632A (zh) | 一种分布式缓存系统中负荷分配方法、装置及服务器 | |
CN108519917A (zh) | 一种资源池分配方法和装置 | |
CN108023939B (zh) | 分布式系统中锁服务器故障的处理方法及其系统 | |
US20100161897A1 (en) | Metadata server and disk volume selecting method thereof | |
CN108881512A (zh) | Ctdb的虚拟ip均衡分配方法、装置、设备及介质 | |
CN107273169A (zh) | 一种存储控制器集群的软件在线升级方法及系统 | |
CN107645396A (zh) | 一种集群扩容方法及装置 | |
CN107786365A (zh) | 一种集群扩容方法及装置 | |
CN111880926B (zh) | 一种负载均衡方法、装置及计算机存储介质 | |
CN107623711B (zh) | 一种集群中主节点及从节点的分配方法及装置 | |
CN111190707A (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 |