节点
- 节点是一个Elasticsearch的实例
- 本质上是一个java进程
- 一台机器上可以运行多个Elasticsearch进程,但是生产环境一般建议一台机器上只运行一个Elasticsearch实例
- 每一个节点都有名字,通过配置文件配置,或者在启动的时候 -E node.name=nodeName指定
- 每一个节点在启动之后,都会分配一个UID,保存在data目录下
master-eligible nodes和master node
- 每一个节点启动后,默认就是一个master eligible节点
- 可以设置node.master: false禁止
- master eligible节点可以参加选主流程,成为master节点
- 当第一个节点启动的时候,它会将自己选举成master节点
- 每个节点上都保存了集群的状态,只有master节点才能修改集群的状态信息
- 集群状态(cluster state),维护了一个集群中,必要的信息
- 所有节点信息
- 所有的索引和其相关的mapping与setting信息
- 分片的路由信息
- 任意节点都能修改信息会导致数据的不一致性
- 集群状态(cluster state),维护了一个集群中,必要的信息
data node & coordinating node
- data node
- 可以保存数据的节点,叫做data node。负责保存分片数据。在数据扩展上起到了至关重要的作用
- coordinating node
- 负责接受client的请求,将请求分发到合适的节点,最终把结果汇集到一起
- 每个节点默认都起到了coordinating node的职责
其他的及节点类型
- hot & warm node
- 不同硬件配置的data node,用来实现hot & warm架构,降低集群部署的成本
- machine learning node
- 负责跑机器学习的job,用来做异常检测
- tribe node
- (5.3开始使用cross cluster search)tribe node连接到不同的Elasticsearch集群,并且支持将这些集群当成一个单独的集群处理
#配置节点类型
每个节点再启动的时候会读取yaml的配置文件,决定自己承担的角色。
- (5.3开始使用cross cluster search)tribe node连接到不同的Elasticsearch集群,并且支持将这些集群当成一个单独的集群处理
- 开发环境中一个节点可以承担多种角色
- 生产环境中,应该设置单一的角色的节点(dedicated node)(提高性能,职责明确)