es中节点类型有哪些

发布于:2025-04-06 ⋅ 阅读:(26) ⋅ 点赞:(0)

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" ]
  • 特点
    • 需要高可用性,通常集群中至少 3 个主节点(通过 discovery.zen.minimum_master_nodescluster.initial_master_nodes 配置)。
    • 对 CPU 和内存要求较低,但网络延迟敏感。

2. 数据节点(Data Node)

  • 功能
    • 存储索引数据,执行数据相关的操作(如索引、搜索、聚合)。
    • 处理客户端的查询请求。
  • 配置方式
    • 6.x:node.data: true
    • 7.9.0+:node.roles: [ "data" ]
  • 特点
    • 对存储(磁盘)、内存和 CPU 要求较高。
    • 在 7.x 中进一步细分为以下子类型(见下文)。

3. 摄取节点(Ingest Node)

  • 功能
    • 预处理文档数据(如转换、过滤、添加字段),通过 Ingest Pipeline 执行。
    • 减轻数据节点的负担。
  • 配置方式
    • 6.x:node.ingest: true
    • 7.9.0+:node.roles: [ "ingest" ]
  • 特点
    • 可与数据节点结合使用,或独立部署。
    • 对 CPU 和内存需求中等。

4. 协调节点(Coordinating Node)

  • 功能
    • 不存储数据、不担任主节点,仅负责路由客户端请求、聚合查询结果。
    • 充当负载均衡器,减轻其他节点的压力。
  • 配置方式
    • 6.x:node.master: falsenode.data: falsenode.ingest: false
    • 7.9.0+:node.roles: [](空角色列表)
  • 特点
    • 默认情况下,每个节点都可以是协调节点,除非明确禁用其他角色。
    • 对内存和网络带宽要求较高。

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" ]
  • 特点
    • 需要额外许可证(X-Pack 商业功能)。
    • 对 CPU 和内存要求较高。

7. 远程合格节点(Remote Eligible Node,7.x+)

  • 功能
    • 参与跨集群搜索(Cross-Cluster Search),连接远程集群。
  • 配置方式
    • 7.9.0+:node.roles: [ "remote_cluster_client" ]
  • 特点
    • 需要网络访问远程集群。

8. 转换节点(Transform Node,7.2+)

  • 功能
    • 处理 Transform API,用于数据转换和汇总。
  • 配置方式
    • 7.9.0+:node.roles: [ "transform" ]
  • 特点
    • 可与摄取节点结合,通常需要额外计算资源。

9. 投票专用节点(Voting-Only Node,7.4+)

  • 功能
    • 仅参与主节点选举,不存储数据或执行其他任务。
  • 配置方式
    • 7.9.0+:node.roles: [ "voting_only" ]
  • 特点
    • 用于小型集群,增加选举稳定性。

配置方式演变

  • 6.x 及更早版本
    • 使用布尔属性(如 node.masternode.data)独立配置。
    • 默认情况下,节点同时具有主节点和数据节点角色。
    • 示例:
      node.master: true
      node.data: false
      node.ingest: false
      
  • 7.9.0+
    • 使用 node.roles 数组统一配置。
    • 默认不再是主节点和数据节点,必须显式指定。
    • 示例:
      node.roles: [ "master", "data" ]
      

典型配置示例

  1. 专用主节点
    node.roles: [ "master" ]
    
  2. 热数据节点
    node.roles: [ "data_hot" ]
    
  3. 协调节点
    node.roles: []
    
  4. 混合节点
    node.roles: [ "master", "data", "ingest" ]
    

注意事项

  • 角色组合
    • 小型集群可将多个角色组合在同一节点(例如主节点+数据节点)。
    • 大型集群建议分离角色,提升性能和稳定性。
  • 最低主节点数
    • 6.x:通过 discovery.zen.minimum_master_nodes 设置。
    • 7.x+:通过 cluster.initial_master_nodes 初始化。
  • 资源需求
    • 数据节点需要更多磁盘和内存,主节点需要低延迟网络。
  • 版本兼容性
    • 6.x 不支持 data_hotdata_cold 等子类型,这些是 7.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 文档结构清晰,包含标题、代码块和列表,便于阅读和理解。如果需要进一步调整或补充,请告诉我!