ES集群5台机器,由于同时读写导致其中一台机器宕机,
原本每天的索引shard数设定为10,这样5台机器每台分配2个shard,
但是一旦集群宕机,重启集群后,5号机器宕机导致它上面的shard会转移到其他1-4号机器上。
如果此时往ES里写数据,新索引的10个shard就都会分配到5号机器(因为它上面一个shard都没有,ES集群会优先往资源丰富的机器分配shard),如果此时写入数据,请求会全部集中到5号机器上再次造成节点宕机。
采取的措施是:
先建几个空索引,让ES集群自动负载均衡直至5台机器上各自的shard变得均匀,
然后启往ES里写数据建新索引的任务,这样任务的分片就会均匀分不到5台节点,不会给某台节点造成太大的压力。
最后,新建一个索引,删除一个空索引,直至空索引全部删完。