只要是主从关系就必然有可能发生脑裂,ES的脑裂没有自动防范机制,必须手动预防。
1.业务分离:通过设置node.master和node.data来决定节点是否竞选主节点或存储节点。
默认节点:设置既参与竞选,又存储数据
主节点:设置竞选主节点,不存储数据
数据节点:设置不竞选主节点,存储数据
客户端节点:设置既不竞选主节点,又不存储数据。该节点可作为客户端连接使用。
2.配置至少竞选节点:discovery.zen.minimum_master_nodes=N/2+1
3.配置ping的等待时间、重试次数:
#一个节点多久ping一次,默认1s discovery.zen.fd.ping_interval: 1s ##等待ping返回时间,默认30s discovery.zen.fd.ping_timeout: 10s ##ping超时重试次数,默认3次 discovery.zen.fd.ping_retries: 3