主题
节点与集群结构
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 集群,保障系统的稳定性、扩展性和性能表现。