前言
在elasticsearch集群中存在哪些类型的节点,它们分别承担不同的功能职责。Master-eligible node,Data node,Client node,Ingest node,Tribe node,还有基于X-Pack的机器学习节点等等。本篇仅介绍常用的集群节点及其功能职责。
节点类型
Master-eligible node
主节点负责轻量级集群范围的操作,例如创建或删除索引,跟踪哪些节点是集群的一部分,以及决定将哪些碎片分配给哪些节点。集群健康有一个稳定的主节点是很重要的,Master-eligible node(有资格的主节点)可参与master选举。
node.master: true |
Data node
数据节点保存数据并执行数据相关的操作,如CRUD,搜索和聚合。这些操作是I / O,内存和CPU密集型的。监视这些资源并在过载时添加更多数据节点。
node.master: false |
Client node
其实任何一个节点都是协调节点,当把以下属性都设置为false时,该节点则只负责协调客户端请求的负载均衡,分发聚合。不再承担其他类似索引创建及删除,数据存储等功能职责,单一职责原则。但是,在集群中过多的添加Client node会增加整个集群的负担,因为集群选举master是需要得到集群中所有节点返回确认消息的,其实完全可以使用Data node代替Client node,因为Data node也是协调节点并且还能提高整个集群的存储能力。
node.master: false |
Ingest node
预处理节点是elasticsearch 5.x版本出来的特性,支持在文档数据入库前,对数据做管道预处理。比如,向文档数据中添加字段或者重命名字段等操作,一个管道pipeline中支持添加多个处理器processor,按顺序流处理。
node.master: false |
Tribe node
部落节点,通过tribe.*配置,是一种特殊类型的协调节点,可以连接到多个集群并在所有连接集群中执行搜索和其他操作。
默认配置
在以上节点的四个配置中,默认情况下都是true,也就是说在不手动调整配置的情况下,任何一个es节点,既可以参与master选举,也可以存储数据,支持管道预处理等操作。node.master: true
node.data: true
node.ingest: true
search.remote.connect: true
通信方式
- HTTP REST
- Transport (Java TransportClient)
默认情况下,集群中的每个节点都可以处理HTTP REST 和 Transport请求。Transport 专门用于处理集群节点和Java TransportClient之间的通信;而HTTP REST则被用于外部Rest-Client通信。
参考链接
- https://www.elastic.co/guide/en/elasticsearch/reference/current/modules-node.html
- https://elasticsearch.cn/book/elasticsearch_definitive_guide_2.x/_transport_client_versus_node_client.html
- https://www.elastic.co/guide/en/elasticsearch/reference/master/ingest.html
- https://www.felayman.com/articles/2017/12/09/1512830107116.html