Elasticsearch脑裂

脑裂问题就是集群中出现了多个master,导致集群内部信息混乱,无法对外提供一致信息。

解决方案就:

        避免出现多个master。

根本解决方案:

        没有。 由于网络原因不可控。

避免措施:

        1,master节点与data节点分离,配置如下:

             主节点配置为:
                    node.master: true 
                    node.data: false

             从节点配置为:
                    node.master: false 
                    node.data: true

         2,master节点采用(CMS)GC算法,即使GC全局回收,也会及时响应。

         3,discovery.zen.ping_timeout(默认3秒),默认情况下,一个节点会认为,如果master节点在3秒之内没有应答,那么这个节点就是死掉了,而增加这个值,会增加节点等待响应的时间,从一定程度上会减少误判。

         4,设置选举触发条件,discovery.zen.minimum_master_nodes:1
               该参数是用于控制选举行为发生的最小集群主节点数量。

               当备选主节点的个数大于等于该参数的值,且备选主节点中有该参数个节点认为主节点挂了,进行选举。官方建议为
             (n/2)+1,n为主节点个数(即有资格成为主节点的节点个数),增大该参数,当该值为2时,我们可以设置master
               的数量为3,这样,挂掉一台,其他两台都认为主节点挂掉了,才进行主节点选举。

         5,data节点的默认的master发现方式有multicast修改为unicast:

              discovery.zen.ping.multicast.enabled: false

              discovery.zen.ping.unicast.hosts: ["master1", "master2", "master3"]

你可能感兴趣的:(Elasticsearch脑裂)