Elasticsearch 节点类型有哪些
在 Elasticsearch 中,节点类型(或角色)定义了每个节点在集群中的职责。不同版本的 Elasticsearch 对节点角色的定义和管理方式有所不同,尤其在 7.9.0 版本引入 node.roles
后,配置方式更加明确。以下是 Elasticsearch 的节点类型(角色)及其功能说明,涵盖 6.x 和 7.x/8.x 的情况。
Elasticsearch 节点类型
1. 主节点(Master Node)
- 功能:
- 负责集群的管理任务,例如创建/删除索引、跟踪节点状态、分片分配等。
- 不存储数据或处理查询,仅维护集群元数据。
- 配置方式:
- 6.x:
node.master: true
- 7.9.0+:
node.roles: [ "master" ]
- 6.x:
- 特点:
- 需要高可用性,通常集群中至少 3 个主节点(通过
discovery.zen.minimum_master_nodes
或cluster.initial_master_nodes
配置)。 - 对 CPU 和内存要求较低,但网络延迟敏感。
- 需要高可用性,通常集群中至少 3 个主节点(通过
2. 数据节点(Data Node)
- 功能:
- 存储索引数据,执行数据相关的操作(如索引、搜索、聚合)。
- 处理客户端的查询请求。
- 配置方式:
- 6.x:
node.data: true
- 7.9.0+:
node.roles: [ "data" ]
- 6.x:
- 特点:
- 对存储(磁盘)、内存和 CPU 要求较高。
- 在 7.x 中进一步细分为以下子类型(见下文)。
3. 摄取节点(Ingest Node)
- 功能:
- 预处理文档数据(如转换、过滤、添加字段),通过 Ingest Pipeline 执行。
- 减轻数据节点的负担。
- 配置方式:
- 6.x:
node.ingest: true
- 7.9.0+:
node.roles: [ "ingest" ]
- 6.x:
- 特点:
- 可与数据节点结合使用,或独立部署。
- 对 CPU 和内存需求中等。
4. 协调节点(Coordinating Node)
- 功能:
- 不存储数据、不担任主节点,仅负责路由客户端请求、聚合查询结果。
- 充当负载均衡器,减轻其他节点的压力。
- 配置方式:
- 6.x:
node.master: false
、node.data: false
、node.ingest: false
- 7.9.0+:
node.roles: []
(空角色列表)
- 6.x:
- 特点:
- 默认情况下,每个节点都可以是协调节点,除非明确禁用其他角色。
- 对内存和网络带宽要求较高。
5. 数据子类型(7.x 引入,细化 Data Node)
在 7.x 中,数据节点可以根据存储和查询需求进一步细分,通过 node.roles
指定:
- 热数据节点(Data Hot Node):
- 存储最近写入的高频访问数据。
- 配置:
node.roles: [ "data_hot" ]
- 特点:需要高性能 SSD 和更多内存。
- 温数据节点(Data Warm Node):
- 存储较老、访问频率较低的数据。
- 配置:
node.roles: [ "data_warm" ]
- 特点:对磁盘性能要求中等。
- 冷数据节点(Data Cold Node):
- 存储很少访问的归档数据,支持冻结索引。
- 配置:
node.roles: [ "data_cold" ]
- 特点:可使用低成本磁盘,查询延迟较高。
- 冻结数据节点(Data Frozen Node,7.13+):
- 存储极少访问的冻结索引,通常与可搜索快照结合。
- 配置:
node.roles: [ "data_frozen" ]
- 特点:依赖快照存储,内存需求低。
6. 机器学习节点(Machine Learning Node)
- 功能:
- 执行 X-Pack 的机器学习任务(如异常检测、预测)。
- 配置方式:
- 6.x:
node.ml: true
- 7.9.0+:
node.roles: [ "ml" ]
- 6.x:
- 特点:
- 需要额外许可证(X-Pack 商业功能)。
- 对 CPU 和内存要求较高。
7. 远程合格节点(Remote Eligible Node,7.x+)
- 功能:
- 参与跨集群搜索(Cross-Cluster Search),连接远程集群。
- 配置方式:
- 7.9.0+:
node.roles: [ "remote_cluster_client" ]
- 7.9.0+:
- 特点:
- 需要网络访问远程集群。
8. 转换节点(Transform Node,7.2+)
- 功能:
- 处理 Transform API,用于数据转换和汇总。
- 配置方式:
- 7.9.0+:
node.roles: [ "transform" ]
- 7.9.0+:
- 特点:
- 可与摄取节点结合,通常需要额外计算资源。
9. 投票专用节点(Voting-Only Node,7.4+)
- 功能:
- 仅参与主节点选举,不存储数据或执行其他任务。
- 配置方式:
- 7.9.0+:
node.roles: [ "voting_only" ]
- 7.9.0+:
- 特点:
- 用于小型集群,增加选举稳定性。
配置方式演变
- 6.x 及更早版本:
- 使用布尔属性(如
node.master
、node.data
)独立配置。 - 默认情况下,节点同时具有主节点和数据节点角色。
- 示例:
node.master: true node.data: false node.ingest: false
- 使用布尔属性(如
- 7.9.0+:
- 使用
node.roles
数组统一配置。 - 默认不再是主节点和数据节点,必须显式指定。
- 示例:
node.roles: [ "master", "data" ]
- 使用
典型配置示例
- 专用主节点:
node.roles: [ "master" ]
- 热数据节点:
node.roles: [ "data_hot" ]
- 协调节点:
node.roles: []
- 混合节点:
node.roles: [ "master", "data", "ingest" ]
注意事项
- 角色组合:
- 小型集群可将多个角色组合在同一节点(例如主节点+数据节点)。
- 大型集群建议分离角色,提升性能和稳定性。
- 最低主节点数:
- 6.x:通过
discovery.zen.minimum_master_nodes
设置。 - 7.x+:通过
cluster.initial_master_nodes
初始化。
- 6.x:通过
- 资源需求:
- 数据节点需要更多磁盘和内存,主节点需要低延迟网络。
- 版本兼容性:
- 6.x 不支持
data_hot
、data_cold
等子类型,这些是 7.x 新增的。
- 6.x 不支持
验证节点角色
运行以下命令查看集群中每个节点的角色:
curl -X GET "http://localhost:9200/_cat/nodes?v&h=ip,name,roles"
- 输出示例(7.x):
ip name roles 172.18.0.2 es-node1 m,d 172.18.0.3 es-node2 d 172.18.0.4 es-node3 d
m
:主节点,d
:数据节点。
总结
Elasticsearch 的节点类型包括主节点、数据节点(含热/温/冷/冻结子类型)、摄取节点、协调节点等,7.x 还引入了机器学习、转换等专用角色。6.x 使用布尔属性配置,而 7.9.0+ 使用 node.roles
统一管理。根据集群规模和需求,可以灵活组合角色以优化性能和资源利用率。
如果你需要针对特定版本或场景调整节点配置,可以告诉我,我会提供更详细的帮助!
---这份 Markdown 文档结构清晰,包含标题、代码块和列表,便于阅读和理解。如果需要进一步调整或补充,请告诉我!