教程 elasticsearch tutorial

节点与集群结构

Elasticsearch 作为一个分布式系统,依赖节点(Node)和集群(Cluster)来实现数据分布、负载均衡与高可用性。理解它们是掌握集群管理和部署的基础。

1. 什么是节点(Node)

节点是运行 Elasticsearch 的单个实例,每个节点都有一个唯一名称,负责存储数据和处理请求。

节点类型

  • 主节点(Master Node):负责集群管理任务,如索引创建、节点加入与移除、分片分配。
  • 数据节点(Data Node):存储数据并执行索引和搜索操作。
  • 协调节点(Coordinating Node):接收客户端请求并将请求分发到相应数据节点(默认所有节点均有此功能)。
  • 专用节点:如机器学习节点、投影节点等,承担特定任务。

2. 什么是集群(Cluster)

集群是多个节点的集合,共同协作管理数据和搜索任务。集群具有统一的名字,用于区分不同环境。

  • 集群通过协调分片和副本,实现数据的高可用与负载均衡。
  • 节点间通过内部通信协议(TCP 端口 9300)互联。

3. 节点加入集群流程

  • 节点启动时通过 discovery.seed_hosts 配置发现集群中的其他节点。
  • 主节点负责维护集群状态,并分配分片。
  • 如果主节点失效,集群会自动选举新的主节点。

4. 配置示例

yaml
cluster.name: my-es-cluster
node.name: node-1
node.roles: [ master, data, ingest ]
network.host: 0.0.0.0
discovery.seed_hosts:
  - 192.168.1.10
  - 192.168.1.11
cluster.initial_master_nodes:
  - node-1
  - node-2

`

5. 设计建议

  • 生产环境建议至少部署三个主节点,保证高可用性和选举稳定。
  • 数据节点数量根据存储与查询压力调整。
  • 协调节点可用于分离客户端请求,减轻数据节点负载。

深入理解节点与集群结构,有助于合理规划 Elasticsearch 集群,保障系统的稳定性、扩展性和性能表现。