elasticsearch防脑裂配置
脑裂产生的原因及现象:
当公司有多个idc机房,并且有多个es集群节点,这些节点都分布在不同的机房,机房之间通过openvpn进行连接,机房1上有2个es节点,并且有1个是主节点,机房2上有2个es节点都是工作节点,当机房产生网络波动后,两个机房之间的es节点不能通信,这时机房1上的两个es节点因为有主节点的存在,依然是正常工作的,但是机房2上的es由于连接不上主节点,就认为主节点挂掉了,自己就选举成为了主节点,自己虽然成了主节点,但是没有入口来往集群中写数据,这时两个机房的es存储的数据就不一致了,当网络波动结束后,两个机房的es节点这时就比较尴尬了,两边都是主节点,无法分辨是谁挂了,无法确认和谁同步数据,这时用户在访问es上的数据,就会发现第一次访问了123,第二次刷新就成了456,这时就导致了数据的不一致,也就是脑裂的产生
脑裂产生的现象就是不同机房的es节点都认为对方机房的节点挂掉了,并将自己选举成了主节点,一个集群里俩master同时存在就会接收不同的数据,从而产生数据不一致问题
es集群节点数建议使用单数不建议使用偶数
es集群防止脑裂产生的配置方法
discovery.zen.minimum_master_nodes: 2 #节点的master数量,一半是集群节点数除2+1的数量,3个节点就是2 discovery.zen.fd.ping_interval: 10s #节点间存活检测间隔 discovery.zen.fd.ping_timeout: 60s #连接超时等待时间 discovery.zen.fd.ping_retries: 6 #重试次数,当连接超时后重试多少次