节点类型
不同角色的节点
- Master Eligible Node;
- Data Node;
- Ingest Node;
- Coordinating Node;
- Machine Learning Node;
在开发环境,一个节点可以承担多种角色;生产环境中,需要根据数据量,写入和查询的吞吐量,选择合适的部署方式,建议设置单一角色的节点(dedicated node);
节点参数配置
一个节点在默认情况下会同时扮演:Master Node,Data Node 和 Ingest Node。
节点类型 | 配置参数 | 默认值 |
---|---|---|
Master Eligible | node.master | true |
Data | node.data | true |
Ingest | node.ingest | true |
Coordinating only | 无 | 设置上面 3 个参数全为 false |
machine learning | node.ml | true(需要 enable x-pack) |
不同职责 Dedicated Node 的配置选择
Dedicated Master Eligible Node
- 负责集群状态的管理;
- 使用低配置的 CPU,RAM 和磁盘;
Dedicated Data Node
- 负责数据存储及处理客户端请求;
- 使用高配置的 CPU,RAM 和磁盘;
Dedicated Ingest Node
- 负责数据处理;
- 使用高配置的 CPU,中等配置的 RAM,低配置的磁盘;
Dedicated Coordinating only Node
- 高配或中配的 CPU,高配或中配的 RAM,低配的磁盘;
- 生产环境中,建议为一些大的集群配置 Coordinating Only Node,其扮演的角色:
- Load Balancer,降低 Master 和 Data Nodes 的负载;
- 负责搜索结果的 Gather 和 Reduce;
- 有时无法预知客户端会发送怎样的请求,大量占用内存的聚合操作,比如一个深度聚合可能会发生 OOM;
为什么要配置 Dedicated Master Node
从高可用 & 避免脑裂的角度触发
- 一般在生产环境中配置 3 台,当有1 台丢失的时候,其余的节点会被提升成活跃主节点;
- 一个集群只有一台活跃的主节点,负责分片管理,索引创建,集群管理等操作;
如果和 Data Node 或 Coordinating Node 混合部署
- Data Node 相对有比较大的内存占用;
- Coordinating Node 有时候会有开销很高的查询,导致 OOM;
- 这些都有可能影响 Master 节点,导致集群的不稳定;
基本部署 | 水平扩展
Data Node 水平扩展
- 当磁盘容量无法满足时,可以增加 Data Node;
- 当磁盘读写压力大时,可以增加 Data Node;
Coordinating Node 水平扩展
- 当系统中有大量复杂查询及聚合的时候,增加 Coordinating Node,提升查询和聚合的性能;
- 可以在 Coordinating Node 前配置 LB,软件或硬件实现,此时 Application 只需要和 LB 交互;
读写分离
- 读请求发到 Coordinating Node;
- 写请求发到 Ingest Node;
- Coordinating Node 和 Ingest Node 前都可以配置 LB;
在集群中配置 Kibana
建议将 Kibana 部署在 Coordinating 上。
异地多活的部署
集群处在 3 个数据中心,数据 3 写,GTM 分发读请求。