解决elasticsearch无法启动问题

今天es集群服务连续挂了两次,皆因网络因素引起。目前共有三台机器,分别对应三个node角色。

  • 9.12 master,data
  • 9.11 data
  • 9.15 client 作负载均衡用

当网络很差时,master和其他节点一旦断连,会引起master节点reshard(即分片重新分配),我们目前的shards太多,这导致master压力特别大,基本没响应。在分配的过程中,网络一旦变好,其他节点又会重新加入,这样又会重新分配。

网络一直到下午4点左右才完全恢复正常。但是master恢复的太慢。

为了快速恢复,把3台机器全部关闭服务,重新开启。 恢复顺序如下:

  • 启动master节点,启动会立即重新分配。
  • 在master节点,关闭分配功能。执行 curl -v -XPUT http://localhost:9200/_cluster/settings -d '{"transient":{"cluster.routing.allocation.enable": "none"}}'
  • 由于我们的shard(分片)太多,关闭部分无用的index。 curl -XPOST 'http://localhost:9200/index_name/_close'
  • 开启data节点
  • 打开分配功能。 执行 curl -v -XPUT http://localhost:9200/_cluster/settings -d '{"transient":{"cluster.routing.allocation.enable": "all"}}'。这时,重新分配会很快,shard越少越快。
  • 完成后,重新打开关闭的index,这时也会重新分配。 curl -XPOST 'http://localhost:9200/index_name/_open'。至此,恢复完成。

在集群中,网络质量还是很重要的。 一旦节点失联,会引起较大的性能影响。因此shard数量要少越好。当然,node节点越多,影响也就越小了。

此条目发表在elasticsearch分类目录,贴了标签。将固定链接加入收藏夹。

发表评论

邮箱地址不会被公开。