脑裂问题
什么是脑裂?就是同一集群中的不同节点对于集群状态有了不一样的理解,比如elasticsearch集群中有节点A(主节点),节点B(从节点),若由于网络问题两个节点之间的通信中断了,此时两个节点都认为对方已经挂了,节点A不进行任何操作,因为节点A本身就是主节点;但是节点B会将本身提升为主节点,此时就会导致elasticsearch有了两个主节点,发送到节点A上的索引请求不会将数据分配到节点B,同时发送到节点B的请求也不会将数据分配到节点A。这种情况下导致搜索请求命中哪个节点结果都不会相同
为了避免脑裂的发生,elasticsearch提供了一些配置
discovery.zen.minimum_master_nodes
表示决定主节点选择过程中最少需要有多少个master节点,默认是1,最好配置为N/2+1discovery.zen.ping.timeout
节点间网络通信的等待时间,默认3s