Elasticsearch中node的类型详细介绍
目录
Cluster
Cluster 也就是集群的意思。Elasticsearch 集群由一个或多个节点组成,可通过其集群名称进行标识。通常这个 Cluster 的名字是可以在 Elasticsearch 里的配置文件中设置的。在默认的情况下,如我们的 Elasticsearch 已经开始运行,那么它会自动生成一个叫做 “elasticsearch” 的集群。我们可以在 config/elasticsearch.yml 里定制我们的集群的名字。
Elasticsearch 的集群就像是下面的一个布局:
从上图我们可以看出node(节点)在整个Elasticsearch中的位置。
node
一个 node 可以具有下面的一种或几种功能。我们可以在命令行或者 Elasticsearch 的配置文件(elasticsearch.yml)来定义:
节点类型 | 配置参数 | 默认值or设置方法 |
---|---|---|
候选主节点 | node.master | true |
数据节点 | node.data | true |
摄取节点 | node.ingest | true |
客户端节点 | 无 | 将前三个参数全部设置为false |
部落节点 | tribe:*: | |
协调节点 | 无 | 将前三个参数全部设置为false |
机器学习节点(machine learning) | node.ml | true(需要enable x-pack) (除了OSS发布版) |
单个 Elasticsearch 实例。 在大多数环境中,每个节点都在单独的盒子或虚拟机上运行。一个集群由一个或多个 node 组成。在测试的环境中,我可以把多个 node 运行在一个 server 上。在实际的部署中,大多数情况还是需要一个 server 上运行一个 node。
根据 node 的作用,可以分为如下的几种:
master-eligible:【主节点】
可以作为主 node。一旦成为主 node,它可以管理整个 cluster 的设置及变化:创建,更新,删除 index;添加或删除 node;为 node 分配 shard 及应用的集群设置等。master 节点角色通常不是非常占用资源,并且可以共同位于在较小集群中运行其他角色的节点上。
data:【数据节点】
- 存储数据
- 执行数据相关的操作
ingest:【摄取节点】
数据接入(比如 pipepline)
Elasticsearch 的主要目标是索引、搜索和分析,但通常需要在将文档存储到 Elasticsearch 之前对其进行修改或增强。以下是这种情况下最常见的情况:
- 预处理日志字符串以提取有意义的数据
- 使用 NLP 工具丰富文本字段的内容
- 使用 ML 计算字段丰富内容
- 在摄取期间添加数据修改或转换,例如:在地理定位中转换 IP;在摄入时添加 DateTime 字段;在摄入时构建自定义字段(通过脚本)
tribe node:【部落节点】
tribe node可以通过tribe.*相关参数来设置,它是一种特殊的coordinate node,可以连接到多个es集群上去,然后对多个集群执行搜索等操作。
client node:【客户端节点】
客户端节点是既不做候选主节点也不做数据节点的节点,只负责请求的分发、汇总等。若是单独增加这种节点主要是更多地为了提高并发性。
用法 将节点设置为客户端节点的方法:修改elasticsearch.yml,将node.master属性和node.data属性都设置为false。
coordinating node:【协调节点】
严格来说,这个不是一个种类的节点。它甚至可以是上面的任何一种节点。这种节点通常是接受客户端的 HTTP 请求的。针对大的集群而言,通常的部署时使用一些专用的节点来接受客户端的请求。这样的节点可以不配置上面的任何角色,也就是它既不是 master,也不是 data,也不是 ingest,也不是 machine learning。
协调节点是一个特殊的节点,作为集群的代理/传递思想。它的主要优点如下:
它可以很容易地被 kill 掉或从集群中删除,而不会造成任何问题。 它不是 master 服务器,因此不参与集群功能,也不包含数据,因此不会因故障而发生数据重定位/复制。
它可以防止由于开发人员/用户的错误查询而导致集群不稳定。 有时,用户执行的聚合过大(即,日期直方图的范围为若干年,间隔为 10 秒)。 在这里,Elasticsearch 节点可能会崩溃。 在其最新版本中,Elasticsearch 有一个称为断路器(circuit breaker)的结构来防止类似的问题,但总是有边界情况可能会导致使用脚本的不稳定。 协调节点不是主节点,它的过载不会对集群稳定性造成任何问题。
如果协调器或客户端节点嵌入到应用程序中,则数据的往返次数会减少,从而加快应用程序的速度。
你可以添加它们以平衡搜索和聚合吞吐量,而不会在集群中产生更改和数据重定位。
machine learning:【机器学习节点】 (不常用)
参考资料:
Elasticsearch 中的一些重要概念: cluster, node, index, document, shards 及 replica