ES集群架构

发布时间 2023-12-19 10:22:42作者: 梅丹隆

一、集群节点

  • 一个ES集群可以有多个节点构成
  • 一个节点就是一个ES服务实例,通过配置集群名称cluster.name加入集群

那么节点是如何通过配置相同的集群名称加入集群的呢?要搞明白这个问题,我们必须先搞清楚ES集群中节点的角色。

ES中节点有角色的区分的,通过配置文件conf/elasticsearch.yml中配置以下配置进行角色的设定。

node.master: true/false 
node.data: true/false

集群中单个节点既可以是候选主节点也可以是数据节点,通过上面的配置可以进行两两组合形成四大分类:
(1)仅为候选主节点
(2)既是候选主节点也是数据节点
(3)仅为数据节点
(4)既不是候选主节点也不是数据节点
候选主节点:只有是候选主节点才可以参与选举投票,也只有候选主节点可以被选举为主节点
主节点:负责索引添加、删除,跟踪哪些节点是群集的一部分,对分片进行分配、收集集群中各节点的状态等,稳定的主节点对集群的健康是非常重要。
数据节点:负责对数据的增、删、改、查、聚合等操作,数据的查询和存储都是由数据节点负责,对机器的CPU,IO以及内存的要求比较高,一般选择高配置的机器作为数据节点。
此外还有一种节点角色叫做协调节点,其本身不是通过设置来分配的,用户的请求可以随机发往任何一个节点,并由该节点负责分发请求、收集结果等操作,而不需要主节点转发。这种节点可称之为协调节点,集群中的任何节点都可以充当协调节点的角色。每个节点之间都会保持联系。
image.png

二、发现机制

前文说到通过设置一个集群名称,节点就可以加入集群,那么ES是如何做到这一点的呢?这里就要讲一讲ES特殊的发现机制ZenDiscovery