ES(Elasticsearch)集群节点角色

1.主节点(Master node)

主节点的主要职责是负责集群层面的相关操作,管理集群变更,如创建或删除索引,跟踪哪些节点是群集的一部分,并决定哪些分片分配给相关的节点。

主节点也可以作为数据节点,但稳定的主节点对集群的健康是非常重要的,默认情况下任何一个集群中的节点都有可能被选为主节点,索引数据和搜索查询等操作会占用大量的cpu,内存,io资源,为了确保一个集群的稳定,分离主节点和数据节点是一个比较好的选择。

通过配置node.master:true(默认)使节点具有被选举为Master的资格。主节点使全局唯一的,将从有资格成为Master的节点中选举

为了放置数据丢失,每个主节点应该知道有资格陈伟主节点的数量,默认为1,为了避免网络分区出现多主的情况,配置discovery.zen.minimun_master_nodes原则上最小值应该为:(master_eligible_nodes/2)+1

node.master:true

node.data:false

2.数据节点

数据节点主要是存储索引数据的节点,执行数据相关操作:CRUD、搜索**,聚合操作**等。数据节点对cpu,内存,I/O要求较高, 在优化的时候需要监控数据节点的状态,当资源不够的时候,需要在集群中添加新的节点。

通过配置node.data:true(默认来是一个节点成为数据节点),也可以通过下面配置创建一个数据节点:

node.master:false

node.data:true

node.ingest:false

3.预处理节点

这是从5.0版本开始引入的概念。**预处理操作运行在索引文档之前,即写入数据之前,通过事先定义好的一系列processors(处理器)和pipeline(管道),对数据进行某种转换、富化。**processors和pipeline拦截bulk和index请求,在应用相关操作后将文档传回给index或bulk API。

默认情况下,在所有的节点启用ingest。如果想在某个节点上禁用ingest,则可以田间配置node.ingest:false,也可以通过下面的配置创建一个仅用于预处理的节点:

node.master:false

node.data:false

node.ingest:true

4.协调节点(Coordinating node)

客户端请求可以发送到集群的任何节点,每个节点都知道任意文档所处的位置,然后转发这些请求,手机数据并返回给客户端,处理客户端请求的节点称为协调节点。

**协调节点将请求转发给保存数据的数据节点。每个数据节点在本地执行请求,并将结果返回给协调节点。协调节点收集完数据合,将每个数据节点的结果合并为单个全局结果。**对结果收集和排序的过程可能需要很多CPU和内存资源。

通过下面配置创建一个仅用于协调的节点:

node.master:false

node.data:false

node.ingest:false

5.部落节点(Trible node)

tribes(部落)功能允许部落节点在多个集群之间充当联合客户端。

部落节点是一个单独的节点,其主要工作是嗅探远程集群的集群状态,并将它们合并在一起。为了做到这一点,它加入了所有的远程集群,使它成为一个非特殊的节点,它不属于自己的集群,而是加入了多个集群。

也被称为跨群集搜索的功能,该功能允许用户不仅跨本地索引,而且跨群集撰写搜索。这意味着可以搜索属于其他远程群集的数据。

在ES5.0之前还有一个客户端节点(Node client)的角色,它不做主节点,也不做数据节点,仅用于路由请求,本质上是一个智能负载均衡器(从负载其的定义来说,只能和非只能的区别在于是否知道访问的内容存在于哪个节点),从5.0版本开始,这个角色被协调节点(Coordinating only node)取代。

你可能感兴趣的:(java,java,后端)