ElasticSearch | 常见的集群部署方式

节点类型

不同角色的节点
  • 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 分发读请求。


ElasticSearch | 常见的集群部署方式_第1张图片
异地多活部署.png

你可能感兴趣的:(ElasticSearch | 常见的集群部署方式)