# ES7学习笔记(二)ES的集群原理

# 发现

发现是节点之间彼此发现,形成集群的一个过程。这个过程发生的场景有很多,比如:你启动了一个集群节点,或者一个节点确认主节点已经挂掉了,或者一个新的主节点被选举了。

咱们在配置集群的时候在配置文件中配置了一个discovery.seed_hosts,这个就是种子地址列表,集群中的节点都在这个地址列表中。发现的过程分为两个阶段:

  1. 每一个节点都会去连接种子地址列表中的地址,并且去确认这些节点是不是具有主节点资格的节点。
  2. 如果确认成功,这个节点将会向远程节点分享种子地址列表,并且远程节点也会把他的种子地址列表分享给这个节点。然后这个节点将会询问他发现的新的节点,最后形成集群。

如果一个节点不具有主节点资格,那么他将去寻找已经选举出的主节点。如果没有发现主节点,它将会按照discovery.find_peers_interval配置的时间进行重试。

如果这个几点具有主节点资格,那么它将去寻找主节点(已选举出的),或者去发现所有具有主节点资格的,但是不是主节点的节点,并完成选举过程,选举出主节点。

# 主节点的作用

主节点主要负责集群方面的轻量级的动作,比如:创建或删除索引,跟踪集群中的节点,决定分片分配到哪一个节点,在集群再平衡的过程中,如何在节点间移动数据等。一个集群有一个稳定的主节点是非常重要的。