简述

  • 默认情况下,Elasticsearch(ES)集群中的所有节点均为混合节点,即在 elasticsearch.yml 中默认配置为 node.master: truenode.data: true
  • 当 ES 集群规模扩大至一定程度后,建议对集群节点进行明确的角色划分
  • ES 集群节点主要可划分为三种角色:主节点(Master)数据节点(Data)客户端节点(Client)
  • 这种划分体现了「分而治之」的架构思想,也是「术业专攻」的具体实践,有助于提升集群的稳定性与性能。

节点角色配置详解

1. Master 节点(主节点)

  • 配置文件 (elasticsearch.yml)

    node.master: true
    node.data: false
  • 主要功能

    • 维护集群元数据(Metadata)。
    • 管理集群节点状态、分片分配等核心逻辑。
    • 负责具体的数据写入与查询业务。
  • 配置要点

    • 内存需求相对较小,但对稳定性要求极高
    • 建议使用独占机器,避免资源竞争导致脑裂或集群状态不稳定。

2. Data 节点(数据节点)

  • 配置文件 (elasticsearch.yml)

    node.master: false
    node.data: true
  • 主要功能

    • 负责数据的写入(Index)、查询(Search)及聚合操作。
    • 承担集群主要的 I/O 与计算压力。
  • 配置要点

    • 需要大内存以支撑缓存与堆空间。
    • 建议使用独占机器,确保磁盘 I/O 与 CPU 资源充足。

3. Client 节点(客户端/协调节点)

  • 配置文件 (elasticsearch.yml)

    node.master: false
    node.data: false
  • 主要功能

    • 负责任务分发(Routing)和结果汇聚(Scatter-Gather)。
    • 作为客户端请求的入口,分担数据节点的压力。
    • 注:在现代 ES 版本中,此类节点常被称为协调节点(Coordinating Node)
  • 配置要点

    • 需要较大的内存与网络带宽,以处理请求合并与分发。
    • 建议使用独占机器。

4. Mixed 节点(混合节点)

  • 配置文件 (elasticsearch.yml)

    node.master: true
    node.data: true
  • 主要功能

    • 同时承担主节点、数据节点及客户端节点的所有功能。
  • 配置要点

    • 需要极大的内存与计算资源。
    • 特别说明不建议在生产环境大规模使用此配置。由于角色混杂,节点负载过高时容易发生故障,进而影响集群元数据稳定性。

资源与磁盘说明

  • 虽然上述节点角色划分未对单台服务器的磁盘容量做硬性规定,但需确保ES 集群整体的磁盘总容量充足,以满足数据存储与副本需求。
  • 建议监控磁盘使用率,避免因磁盘满载导致节点离线或分片分配失败。

集群规划示例

假定集群共计 20 台机器,可参考如下角色分配方案:

节点类型机器数量内存大小备注
Master316GB保证高可用性,机器必须稳定
Data1231GB承担主要存储与计算压力
Client531GB负责流量入口与协调

:以上仅为简单示例,实际生产环境中请根据业务流量、数据量及硬件资源情况进行灵活调整。

版本说明:本文涉及的配置项 node.masternode.data 主要适用于 Elasticsearch 6.x 及更早版本。在 7.x 版本中已标记为弃用,8.x 版本中已被 node.roles 配置取代。若使用新版本 ES,请参考官方文档进行适配。