Elasticsearch 集群架构?

发布于

一、节点角色

  • Master:管理集群元数据,选举。
  • Data:存储分片数据,执行 CRUD、搜索。
  • Ingest:数据预处理(pipeline)。
  • Coordinating:路由请求,合并结果。
  • Machine Learning:机器学习。
  • Remote Cluster:跨集群搜索。

二、分片

  • Index 创建时指定主分片数(不可改)和副本数(可改)。
  • 主分片负责写入,副本分片提供读和高可用。
  • 分片数预估:单分片不超过 50GB,单节点分片不超过 1000。

三、选举

  • 基于 Bully 算法。
  • master-eligible 节点参与选举。
  • 半数以上同意才选为 Master。

四、脑裂

  • 网络分区导致两个 Master。
  • 配置 discovery.zen.minimum_master_nodes = N/2 + 1 防止。

五、扩展

  • 加节点:自动 rebalance 分片。
  • 扩副本:API 修改副本数。
  • 主分片数不可变,需重建索引。