分配节点的方法和装置与流程

文档序号:16331106发布日期:2018-12-19 06:12阅读:303来源:国知局
分配节点的方法和装置与流程

本发明涉及计算机技术领域,特别涉及一种分配节点的方法和装置。

背景技术

elasticsearch(搜索引擎,es)集群是一个基于lucene构建的开源、分布式、restful搜索引擎,一般用于云计算中,能够达到实时搜索、稳定、可靠、快速和安装使用方便。

相关技术中,elasticsearch集群中包括多个节点,多个节点中存在一个主节点,主节点负责分配分片,分片包括主分片和副本分片,副本分片由主分片复制得到。在新建一个索引时,一般是为索引分配预设数目个主分片,按照负载均衡的原则,将这预设数目个分片分配到es集群中的节点上。

这样,由于在主分片被分配到主节点时,主节点在优化索引时会导致主节点磁盘读写增加、负载增多,使得主节点在进行索引优化时,会花费很长时间,进而导致与其它节点通信超时,造成其它节点误以为主节点故障,重新选举主节点,使es集群的稳定性降低。



技术实现要素:

为了解决现有技术的问题,本发明实施例提供了一种分配节点的方法和装置。所述技术方案如下:

第一方面,提供了一种分配节点的方法,所述方法包括:

获取搜索引擎es集群中处于打开状态且存在别名的索引组成的第一索引集合;

根据预设的索引前缀,对所述第一索引集合进行过滤,得到第二索引集合,其中,所述预设的索引前缀用于指示索引对应的数据量大于预设数值;

确定所述第二索引集合中各索引的主分片所在节点的节点名称,并确定所述es集群中的主节点的节点名称;

将所述各索引的主分片所在节点的节点名称和所述主节点的节点名称发送至所述主节点,以使所述主节点在为目标索引的主分片分配节点时,优先选择所述es集群中除所述各索引的主分片所在的节点和所述主节点之外的节点。

可选的,所述确定所述第二索引集合中各索引的主分片所在节点的节点名称,包括:

对于所述第二索引集合中每个索引的主分片,根据预先存储的主分片的标识与节点标识的对应关系,确定所述索引的主分片的标识对应的目标节点标识,根据预先存储的节点标识和节点名称的对应关系,确定所述目标节点标识所对应的节点名称,为所述索引的主分片所在节点的节点名称。

可选的,所述获取es集群中处于打开状态且存在别名的索引组成的第一索引集合,包括:

获取es集群中的全部索引;

确定所述全部索引中处于打开状态的索引;

根据所述处于打开状态的索引的索引名称,确定所述处于打开状态的索引中存在别名的索引;

将所述处于打开状态的索引中存在别名的索引组成第一索引集合。

可选的,所述方法还包括:

控制所述es集群中的全部节点重新启动。

可选的,所述方法还包括:

在所述es集群对应的配置文件中,获取所述预设的索引前缀。

第二方面,提供了一种分配节点的装置,所述装置包括:

获取模块,用于获取搜索引擎es集群中处于打开状态且存在别名的索引组成的第一索引集合;

过滤模块,用于根据预设的索引前缀,对所述第一索引集合进行过滤,得到第二索引集合,其中,所述预设的索引前缀用于指示索引对应的数据量大于预设数值;

确定模块,用于确定所述第二索引集合中各索引的主分片所在节点的节点名称,并确定所述es集群中的主节点的节点名称;

发送模块,用于将所述各索引的主分片所在节点的节点名称和所述主节点的节点名称发送至所述主节点,以使所述主节点在为目标索引的主分片分配节点时,优先选择所述es集群中除所述各索引的主分片所在的节点和所述主节点之外的节点。

可选的,所述确定模块,用于:

对于所述第二索引集合中每个索引的主分片,根据预先存储的主分片的标识与节点标识的对应关系,确定所述索引的主分片的标识对应的目标节点标识,根据预先存储的节点标识和节点名称的对应关系,确定所述目标节点标识所对应的节点名称,为所述索引的主分片所在节点的节点名称。

可选的,所述获取模块,用于:

获取es集群中的全部索引;

确定所述全部索引中处于打开状态的索引;

根据所述处于打开状态的索引的索引名称,确定所述处于打开状态的索引中存在别名的索引;

将所述处于打开状态的索引中存在别名的索引组成第一索引集合。

可选的,所述装置还包括:

控制模块,用于控制所述es集群中的全部节点重新启动。

可选的,所述获取模块,还用于:

在所述es集群对应的配置文件中,获取所述预设的索引前缀。

本发明实施例提供的技术方案带来的有益效果至少包括:

本发明实施例中,在为新索引的主分片分配节点时,可以获取es集群中处于打开状态且存在别名的索引组成的第一索引集合,然后对第一索引集合进行过滤,得到第二索引集合,然后可以确定所述第二索引集合中各索引的主分片所在节点的节点名称,并确定所述es集群中的主节点的节点名称,将各索引的主分片所在节点的节点名称和主节点的节点名称,通知给主节点,主节点后续在为索引的主分片分配节点时,优先选择es集群中除第二索引集合中各索引的主分片所在的节点和主节点之外的节点。这样,索引的主分片尽可能不分配在主节点上,索引操作不在主节点上进行,减轻了主节点的压力,使得es集群的稳定性得到了提升,同时,索引的主分片尽可能也不会和预设的索引前缀的索引的主分片分配在同一节点上,即使预设的索引前缀的索引优化卡顿,也不会影响目标索引的主分片。也即减少了单个节点的压力,也可以使得es集群的稳定性提升。

附图说明

为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本发明实施例提供的一种分配节点的方法流程图;

图2是本发明实施例提供的一种es集群中主分片与副本分片的示意图;

图3是本发明实施例提供的一种分配节点的装置的结构示意图;

图4是本发明实施例提供的一种分配节点的装置的结构示意图;

图5是本发明实施例提供的一种服务器的结构示意图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。

本发明实施例提供了一种分配节点的方法,该方法的执行主体可以是服务器。其中,服务器为es集群之外的服务器,可以属于es集群的管理服务器,服务器中设置有一个应用程序(可以称为是中间件),可以用于执行后面图1所示的步骤,服务器中可以设置有处理器、存储器和收发器等,处理器可以用于分配节点的过程的处理,存储器可以用于存储分配节点的过程中需要的数据以及产生的数据,收发器可以用于接收以及发送数据。

本发明实施例提供了一种分配节点的方法,如图1所示,该方法的处理流程可以如下:

步骤101,获取搜索引擎es集群中处于打开状态且存在别名的索引组成的第一索引集合。

其中,索引处于打开状态指可以索引进行显示。别名是用于重建索引过程中使用,索引的别名像一个快捷方式或软连接,可以指向一个或多个索引,假设有一个叫my_index的索引,my_index是一个指向当前真实索引的别名,真实索引包含一个版本号:my_index_v1,my_index_v2等,首先创建索引my_index_v1,然后将别名my_index指向my_index_v1,当我们将数据从my_index_v1索引到my_index_v2,可以使用别名my_index指向my_index_v2,并且可以将my_index_v1删除,这样后续可以使用新的索引。

在实施中,es集群的管理服务器在确定主节点为目标索引(任一新建索引)的主分片分配节点时,可以遍历es集群中的索引,获取es集群中处于打开状态且存在别名的索引,组成第一索引集合。

可选的,可以基于索引的名称,确定第一索引集合,相应的处理可以如下:

获取es集群中的全部索引;确定全部索引中处于打开状态的索引;根据处于打开状态的索引的索引名称,确定处于打开状态的索引中存在别名的索引;将处于打开状态的索引中存在别名的索引组成第一索引集合。

在实施中,es集群的管理服务器在确定主节点为目标索引的主分片分配节点时,可以遍历es集群中的全部索引,然后确定全部索引中处于打开状态的索引,然后在es集群中,查看这些索引的索引名称,如果某个索引的索引名称中存在别名,则确定该索引存在别名,将确定出的存在别名的索引,组成第一索引集合。

步骤102,根据预设的索引前缀,对第一索引集合进行过滤,得到第二索引集合。

其中,预设的索引前缀可以预设,并且存储在es集群中,预设的索引前缀用于指示索引对应的数据量大于预设数值,也即索引前缀为预设的索引前缀的索引的数据量大于预设数值,预设数值一般比较大,如10g等。

在实施中,es集群的管理服务器确定出第一索引集合后,可以获取预先存储的预设的索引前缀,然后将第一索引集合中包含任一预设的索引前缀的索引过滤掉,得到第二索引集合。

可选的,在es集群对应的配置文件中,获取预设的索引前缀。

在实施中,可以将预设的索引前缀添加至es集群对应的配置文件中,该配置文件保存在管理服务器中,后续可以从管理服务器存储的es集群对应的配置文件中,获取预设的索引前缀。

步骤103,确定第二索引集合中各索引的主分片所在节点的节点名称,并确定es集群中的主节点的节点名称。

其中,主分片是与副本分片相对应,副本分片是主分片的拷贝,如图2所示,在一个节点上包括三个主分片和两个副本分片。主节点为rs集群中被推选出来,用于为索引的主分片分配节点的节点。

在实施中,es集群的管理服务器确定出第二索引集合后,可以确定第二索引集合中包括的各索引,然后确定各索引的主分片所在节点的节点名称,并且可以在es集群中,确定主节点的节点名称。

可选的,可以基于两个对应关系来确定第二索引集合中各索引的主分片所在节点的节点名称,相应的处理可以如下:

对于第二索引集合中每个索引的主分片,根据预先存储的主分片的标识与节点标识的对应关系,确定索引的主分片的标识对应的目标节点标识,根据预先存储的节点标识和节点名称的对应关系,确定目标节点标识所对应的节点名称,为索引的主分片所在节点的节点名称

在实施中,在es集群中,对于一个节点,拥有节点标识和节点名称,可以预设节点标识与节点名称的对应关系。并且还预先维护一个主分片的标识与节点标识的对应关系,在主节点为某个主分片分配完节点后,将主分片的标识与为该主分片分配的节点的节点标识,对应添加至主分片的标识与节点标识的对应关系中。

es集群的管理服务器确定出第二索引集合后,可以获取主分片的标识与节点标识的对应关系,然后从该对应关系中,确定第二索引集合中各索引的主分片的标识,对于任一索引的主分片,可以使用主分片的标识与节点标识的对应关系,查找到该索引的主分片的标识对应的节点标识(可以称为是目标节点标识)。然后可以获取预设的节点标识与节点名称的对应关系,在该对应关系中,确定目标节点标识对应节点名称,该节点名称为该索引的主分片所在节点的节点名称。使用这种方式,即可确定出第二索引集合中各索引的主分片所在节点的节点名称。

步骤104,将各索引的主分片所在节点的节点名称和主节点的节点名称发送至主节点,以使主节点在为目标索引的主分片分配节点时,优先选择es集群中除各索引的主分片所在的节点和主节点之外的节点。

其中,目标索引为任一要进行新建的索引。

在实施中,在确定出第二索引集合中各索引的主分片所在节点的节点名称和主节点的节点名称后,可以将各索引的主分片所在节点的节点名称和主节点的节点名称发送至主节点,主节点可以进行存储。

在后续,主节点为目标索引的主分片分配节点时,可以在es集群中将接收到的节点名称对应的节点过滤掉,在es集群剩余的节点中,通过负载均衡策略为目标索引的主分片分配节点。

这样,目标索引的主分片不分配在主节点上,索引操作不在主节点上进行,减轻了主节点的压力,使得es集群的稳定性得到了提升,同时,目标索引的主分片也不会和预设的索引前缀的索引的主分片分配在同一节点上,即使预设的索引前缀的索引优化卡顿,也不会影响目标索引的主分片。也即减少了单个节点的压力,也可以使得es集群的稳定性提升。

需要说明的是,上述提到的负载均衡策略与现有技术中为索引的主分片分配节点的方法相同,此处不再赘述。

可选的,为了使es集群的稳定性更好,可以检测es集群中的全部节点是不是还能正常使用,相应的处理可以如下:

控制es集群中的全部节点重新启动。

在实施中,es集群的管理服务器可以依次分批次控制全部节点重新启动,例如,es集群中一共有20个节点,可以每次重新启动5个节点,也就是在重新启动某5个节点时,将这5个节点上的分片迁移到其它15个节点上,以使索引可以正常使用,在重新启动完成后,再迁移回来,按照这样的方式,将全部节点重新启动。

本发明实施例中,在为新索引的主分片分配节点时,可以获取es集群中处于打开状态且存在别名的索引组成的第一索引集合,然后对第一索引集合进行过滤,得到第二索引集合,然后可以确定第二索引集合中各索引的主分片所在节点的节点名称,并确定es集群中的主节点的节点名称,将各索引的主分片所在节点的节点名称和主节点的节点名称,通知给主节点,主节点后续在为索引的主分片分配节点时,优先选择es集群中除第二索引集合中各索引的主分片所在的节点和主节点之外的节点。这样,索引的主分片尽可能不分配在主节点上,索引操作不在主节点上进行,减轻了主节点的压力,使得es集群的稳定性得到了提升,同时,索引的主分片尽可能也不会和预设的索引前缀的索引的主分片分配在同一节点上,即使预设的索引前缀的索引优化卡顿,也不会影响目标索引的主分片。也即减少了单个节点的压力,也可以使得es集群的稳定性提升。

基于相同的技术构思,本发明实施例还提供了一种分配节点的装置,如图3所示,该装置包括:

获取模块310,用于获取搜索引擎es集群中处于打开状态且存在别名的索引组成的第一索引集合;

过滤模块320,用于根据预设的索引前缀,对所述第一索引集合进行过滤,得到第二索引集合,其中,所述预设的索引前缀用于指示索引对应的数据量大于预设数值;

确定模块330,用于确定所述第二索引集合中各索引的主分片所在节点的节点名称,并确定所述es集群中的主节点的节点名称;

发送模块340,用于将所述各索引的主分片所在节点的节点名称和所述主节点的节点名称发送至所述主节点,以使所述主节点在为目标索引的主分片分配节点时,优先选择所述es集群中除所述各索引的主分片所在的节点和所述主节点之外的节点。

可选的,所述确定模块330,用于:

对于所述第二索引集合中每个索引的主分片,根据预先存储的主分片的标识与节点标识的对应关系,确定所述索引的主分片的标识对应的目标节点标识,根据预先存储的节点标识和节点名称的对应关系,确定所述目标节点标识所对应的节点名称,为所述索引的主分片所在节点的节点名称。

可选的,所述获取模块310,用于:

获取es集群中的全部索引;

确定所述全部索引中处于打开状态的索引;

根据所述处于打开状态的索引的索引名称,确定所述处于打开状态的索引中存在别名的索引;

将所述处于打开状态的索引中存在别名的索引组成第一索引集合。

可选的,如图4所示,所述装置还包括:

控制模块350,用于控制所述es集群中的全部节点重新启动。

可选的,所述获取模块310,还用于:

在所述es集群对应的配置文件中,获取所述预设的索引前缀。

本发明实施例中,在为新索引的主分片分配节点时,可以获取es集群中处于打开状态且存在别名的索引组成的第一索引集合,然后对第一索引集合进行过滤,得到第二索引集合,然后可以确定第二索引集合中各索引的主分片所在节点的节点名称,并确定es集群中的主节点的节点名称,将各索引的主分片所在节点的节点名称和主节点的节点名称,通知给主节点,主节点后续在为索引的主分片分配节点时,优先选择es集群中除第二索引集合中各索引的主分片所在的节点和主节点之外的节点。这样,索引的主分片尽可能不分配在主节点上,索引操作不在主节点上进行,减轻了主节点的压力,使得es集群的稳定性得到了提升,同时,索引的主分片尽可能也不会和预设的索引前缀的索引的主分片分配在同一节点上,即使预设的索引前缀的索引优化卡顿,也不会影响目标索引的主分片。也即减少了单个节点的压力,也可以使得es集群的稳定性提升。

需要说明的是:上述实施例提供的分配节点的装置在分配节点时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的分配节点的装置与分配节点的方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。

图5是本发明实施例提供的一种服务器的结构示意图,该服务器500可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上处理器(centralprocessingunits,cpu)501和一个或一个以上的存储器502,其中,所述存储器502中存储有至少一条指令,所述至少一条指令由所述处理器501加载并执行以实现上述分配节点的方法步骤。

本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。

以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1