如何在运行时从elasticsearch集群中删除节点,而不会停机

假设我有5个节点在集群中,我不得不在运行时删除2个节点。 那么如何在不影响指数的情况下做到呢?

我连续接近10 Gbphour的数据,这些数据不断被索引。

重新平衡会在这方面做任何帮助吗? 提前致谢

通过告诉群集将其从分配中排除,可以使节点退役。 (从这里的文档)

curl -XPUT localhost:9200/_cluster/settings -d '{ "transient" :{ "cluster.routing.allocation.exclude._ip" : "10.0.0.1" } }';echo 

这将导致Elasticsearch将该节点上的分片分配给剩余的节点,而不会将集群状态更改为黄色或红色(即使您具有复制0)。

一旦所有的碎片都被重新分配了,你可以closures节点并做任何你需要做的事情。 一旦你完成了,包括节点的分配和Elasticsearch将重新平衡碎片再次。

要从集群中删除elasticsearch节点,只需运行以下命令

 curl -XPUT PPPP:9200/_cluster/settings -d '{ "transient" :{ "cluster.routing.allocation.exclude._ip" : "XXXX" } }';echo 

这里PPPP是主节点的私有IP,如果在localhost上运行elasticsearch,也可以使用localhost localhostXXXX是要从群集中删除的节点的私有IP。

如果该节点被接受被删除并且数据重定位将开始,该命令将给予acknowledgement true 。 检查数据重定位是否结束,节点上没有任何碎片,停止elasticsearch过程并stop/terminate实例。 可以在本文中find检查数据重定位和碎片的命令。

您可以始终终止进程以在运行时删除节点。 Elasticsearch集群将在其余节点中自动重新平衡。 但是,这里有一些缺点。

  1. 你有多less副本你的设置?
  2. 您的设置中有多less个碎片?
  3. 如果分片中的数据太大(每小时10GB),则可能需要很长时间才能重新平衡。
  4. 如果您有足够的副本,那么群集状态将变为黄色。 在此状态下,您可以在此期间进行索引和search。 然而,碎片最初取消分配,然后慢慢移动到平衡节点。