前言
ES如果采用单节点部署,不用考虑什么节点角色,默认就好。但是在大规模的ES集群中,一定要根据服务器配置,数据冷热,并发情况等合理配置节点的角色,才能让ES集群节点更好的协调合作,对外提供稳定的服务。
一、ES节点有哪些角色?
ES节点有如下角色:
master 主节点
data 数据节点
data_content 内容数据节点
data_hot 热点数据节点
data_warm 暖数据节点
data_cold 冷数据节点
data_frozen 冻结数据节点
ingest 摄取节点
ml 机器学习节点
remote_cluster_client 远程集群客户端节点
transform 转换节点
voting_only 仅投票节点
coordinating 仅协调节点
注意⚠️:
1、如果你设置了 node.roles,则节点只会分配你指定的角色。 如果不设置 node.roles,节点将被分配以上所有角色(除了voting_only 和coordinating角色例外)。
2、节点不等同于服务器,一个服务器上可以部署多个节点。
3、启动一个Elasticsearch 实例时,都在启动一个节点。 连接节点的集合称为集群。
4、集群中的每个节点都可以处理 HTTP 和传输流量。 传输层专门用于节点之间的通信; HTTP 层由 REST 客户端使用。
5、所有节点都知道集群中的所有其他节点,并且可以将客户端请求转发到适当的节点。
二、怎么设置节点的角色
只需要在elasticsearch.yml通过node.roles属性设置即可
可以同时指定多个角色
node.roles: [ data, master, voting_only ]
注意⚠️:
一个ES集群中,必须有以下角色:
master
data_content and data_hot
OR
data
三、节点角色介绍
1、master 主节点
功能说明:
主节点负责轻量级集群范围的操作,例如创建或删除索引、跟踪哪些节点是集群的一部分
以及决定将哪些分片分配给哪些节点。
任何不是仅投票节点的主合格节点都可以通过主选举过程选举成为主节点。
主节点必须有一个path.data目录,其内容在重启后仍然存在,就像数据节点一样,因为这是
存储集群元数据的地方。集群元数据描述了如何读取存储在数据节点上的数据,因此如果丢失,
则无法读取存储在数据节点上的数据。
如果小型或轻负载集群的主节点具有其他角色和职责,则其可能运行良好,但是一旦您的集群包含多个节点,使用专用的主节点通常是有意义的。
角色配置:
要创建一个专用的主节点,请设置:
node.roles: [ master ]
2、voting_only 仅投票节点
功能说明:
只能参与主节点的投票选举环节,但是自己不能被选举为master。
高可用性 (HA) 集群需要至少三个符合主节点的节点,其中至少两个不是仅投票节点。这样即使其中一个节点发生故障,集群也能够选举出一个主节点。
所有符合主节点的节点,包括仅投票节点,都需要相当快的持久存储以及与集群其余部分的可靠且低延迟的网络连接,因为它们处于发布集群状态更新的关键路径上 。
角色配置:
要创建仅投票节点,请设置:
node.roles: [ master, voting_only ]
即是数据节点,也是仅投票节点。
node.roles: [ data, master, voting_only ]
注意⚠️:
只有具有master角色的节点才能被标记为具有 voting_only角色。
3、data 数据节点
功能说明:
数据节点保存包含已编入索引的文档的分片。数据节点处理数据相关操作,如 CRUD、搜索和聚合。
这些操作是 I/O 密集型、内存密集型和 CPU 密集型的。监控这些资源并在它们过载时添加更多数据节点非常重要。
拥有专用数据节点的主要好处是主角色和数据角色的分离。
在多层部署架构,您可以使用专门的数据角色分配数据节点到指定等级:
data_content,data_hot,data_warm, data_cold,或data_frozen。
一个节点可以属于多个层,但具有其中一个专用数据角色的节点不能具有通用data角色。
作用:
1、保存索引数据
2、处理数据相关操作,如 CRUD、搜索和聚合。
角色配置:
要创建专用数据节点,请设置:
node.roles: [ data ]
4、data_content 内容数据节点
内容数据节点容纳用户创建的内容。它们支持 CRUD、搜索和聚合等操作。
要创建专用内容节点,请设置:
node.roles: [ data_content ]
5、data_hot 热点数据节点
热数据节点在进入 Elasticsearch 时存储时间序列数据。热层必须快速读取和写入,并且需要更多的硬件资源(例如 SSD 驱动器)。
要创建专用热节点,请设置:
node.roles: [ data_hot ]
6、data_warm 暖数据节点
暖数据节点存储不再定期更新但仍在查询的索引。查询量的频率通常低于索引处于热层时的频率。性能较低的硬件通常可用于此层中的节点。
要创建专用的暖节点,请设置:
node.roles: [ data_warm]
7、data_cold 冷数据节点
冷数据节点存储访问频率较低的只读索引。此层使用性能较低的硬件,并且可以利用可搜索的快照索引来最小化所需的资源。
要创建专用冷节点,请设置:
node.roles: [ data_cold]
8、data_frozen 冻结数据节点
冻结层 专门存储部分安装的索引。我们建议您在冻结层中使用专用节点。
要创建专用的冻结节点,请设置:
node.roles: [ data_frozen]
9、ingest 摄取节点
摄取节点可以执行由一个或多个摄取处理器组成的预处理管道。根据摄取处理器执行的操作类型和所需资源,拥有仅执行此特定任务的专用摄取节点可能是有意义的。
要创建专用摄取节点,请设置:
node.roles: [ingest]
10、coordinating 仅协调节点
如果您取消了处理主职责、保存数据和预处理文档的能力,那么您就剩下一个只能路由请求、处理搜索减少阶段和分发批量索引的协调节点。
本质上,仅协调节点的行为就像智能负载均衡器。
通过从数据和符合主节点的节点卸载协调节点角色,仅协调节点可以使大型集群受益。他们加入集群并接收完整的集群状态,就像其他每个节点一样,他们使用集群状态将请求直接路由到适当的地方。
要创建专用协调节点,请设置:
node.roles:[ ]
11、remote 远程集群客户端节点
远程集群客户端节点充当跨集群客户端并连接到 远程集群。连接后,您可以使用跨集群搜索来搜索远程集群。您还可以使用跨集群复制在集群之间同步数据。
node.roles:[ remote_cluster_client ]
12、ml 机器学习节点
机器学习节点运行作业并处理机器学习 API 请求。
要创建专用机器学习节点,请设置:
node.roles:[ml,remote_cluster_client]
注意⚠️:
一般开启ml角色的节点,推荐同时开启remote_cluster_client角色。
13、transform 转换节点
转换节点运行转换并处理转换 API 请求。
要创建专用变换节点,请设置:
node.roles: [ transform, remote_cluster_client ]
注意⚠️:
一般开启transform角色的节点,推荐同时开启remote_cluster_client角色。
小结:
重点理解master节点和data节点即可。
master节点负责轻量级集群范围的操作,比如创建或删除索引,跟踪集群中节点位置以及分片分配。
data节点负责存储数据,并处理数据相关操作,如 CRUD、搜索和聚合。
四、改变节点角色
存储数据说明
1、data数据节点
分配给该节点的每个分片的分片数据
分配给该节点的每个分片对应的索引元数据
集群范围的元数据,例如设置和索引模板
2、master主节点
集群中每个索引的索引元数据
集群范围的元数据,例如设置和索引模板
数据检查机制
每个节点在启动时会检查其数据路径的内容。如果它发现意外数据,它将拒绝启动。这是为了避免导入可能导致红色集群运行状况的不需要的悬空索引。更准确地说,没有data角色的节点在启动时如果在磁盘上找到任何分片数据将拒绝启动,而没有角色master和data角色的节点如果在启动时在磁盘上有任何索引元数据将拒绝启动。
更改节点角色
可以通过调整其elasticsearch.yml文件并重新启动它来更改节点的角色 。这称为重新调整节点的用途。为了满足上述对意外数据的检查,您必须执行一些额外的步骤来准备节点,以便在没有data或master角色的情况下启动节点时重新调整用途。
如果您想通过删除data角色来重新调整数据节点的用途,那么您应该首先使用分配过滤器将所有分片数据安全地迁移到集群中的其他节点上。
如果您想重新调整节点的用途,使其既没有data也没有master角色,那么最简单的方法是启动一个带有空数据路径和所需角色的全新节点。您可能会发现首先使用分配过滤器将分片数据迁移到集群中的其他位置是最安全的 。
如果无法执行这些额外步骤,那么您可以使用该elasticsearch-node repurpose工具删除任何阻止节点启动的多余数据。
五、节点数据路径设置
每个数据和主节点都需要配置数据存储目录,其中存储分片、索引和集群元数据的path.data默认为$ES_HOME/data,用户可以在elasticsearch.yml中自己配置。
配置文件中指定:
path.data: /var/elasticsearch/data
启动命令中指定:
./bin/elasticsearch -Epath.data=/var/elasticsearch/data
说明:
更推荐在配置文件中指定的方式。
总结
本节主要是对ES集群中的节点角色进行了说明。
1、一个可用的ES集群中,必须具备master节点和data节点。
2、详细说明了各个节点角色的作用以及配置方法
3、介绍了master节点和data节点负责的功能:
master节点负责轻量级集群范围的操作,比如创建或删除索引,跟踪集群中节点位置以及分片分配。
data节点负责存储数据,并处理数据相关操作,如 CRUD、搜索和聚合。