'ElasticSearch: master,data,client三类节点区别及节点分配简单例举
简述
- 默认情况下,Elasticsearch(ES)集群中的所有节点均为混合节点,即在
elasticsearch.yml中默认配置为node.master: true和node.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 台机器,可参考如下角色分配方案:
| 节点类型 | 机器数量 | 内存大小 | 备注 |
|---|---|---|---|
| Master | 3 | 16GB | 保证高可用性,机器必须稳定 |
| Data | 12 | 31GB | 承担主要存储与计算压力 |
| Client | 5 | 31GB | 负责流量入口与协调 |
注:以上仅为简单示例,实际生产环境中请根据业务流量、数据量及硬件资源情况进行灵活调整。
版本说明:本文涉及的配置项
node.master与node.data主要适用于 Elasticsearch 6.x 及更早版本。在 7.x 版本中已标记为弃用,8.x 版本中已被node.roles配置取代。若使用新版本 ES,请参考官方文档进行适配。
版权声明:本文为原创文章,版权归 戴老师的博客 所有,转载请联系博主获得授权。
如果对本文有什么问题或疑问都可以在评论区留言,我看到后会尽量解答。