# 节点与集群结构

URL: https://caijiao.org/elasticsearch/01.intro/11.nodes-cluster
Source: docs/elasticsearch/01.intro/11.nodes-cluster.md
Description: 本章讲解 Elasticsearch 中节点和集群的概念、类型及工作机制，帮助理解其分布式架构与高可用设计。

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 集群，保障系统的稳定性、扩展性和性能表现。
