赞
踩
比如有一个索引有3个主分片和3个副本分片,目前有3台服务器,那么主分片以及副本分片会有ES自己内部去分配具体哪个分片在哪台服务器上。同一个主分片和副本分片不会同时存在于同一台服务器节点,这是不允许的,因为一旦宕机,那么这个分片里的数据就都丢失了。
从原先的ES虚拟机克隆三台机器,然后进入到ES的data目录下删除nodes文件
同时修改三台es配置的cluster.name
再将node.name分别改为es-node1,es-node2,es-node3
为三台ES添加如下配置:
# 主节点,true代表在未来可能成为主节点,false就不会
node.master: true
# 数据节点,主要针对文档的处理(增删改查)
node.data: true
为三台ES配置集群的IP
discovery.seed_hosts
cluster.initial_master_nodes,这个配置不用改动,因为这是默认初始化的一台主节点,就是cluster1
查看配置的信息
more elasticsearch.yml | grep ^[^#]
启动三台ES
可以在cluster1中看到日志的输出,cluster2和cluster3加入了集群
通过可视化工具可以查看当前集群情况,标记★的表示主节点。
集群发生脑裂是由于原先master发送宕机之后,重新选举一台master之后,宕机的master重新恢复,单独成为了一个不完整的集群,也就是一个集群中出现了两个master。
造成这个问题的原因是由于 最小投票人数(discovery.zen.minimum_master_nodes) 导致的,该配置默认值是1,所以宕机的master默认就是选举中的一个,所以他恢复之后成为了master。
discovery.zen.minimum_master_nodes = (N/2)+1
N的值是由ES中的node.master:true所决定的,只有这个配置为true,在算作一个基数。
这个问题在ES 7.X版本之前存在,7.X之后这个配置项已移除,选举都交由ES来完成。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。