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

2jcobegt  于 2022-12-29  发布在  ElasticSearch
关注(0)|答案(2)|浏览(253)

假设我在集群中有5个节点,我必须在运行时删除2个节点,那么如何才能做到这一点而不影响索引呢?
我有连续的数据流来在近10 Gbphour这是越来越索引不断。
在这方面,再平衡会有所帮助吗?

ia2d9nvy

ia2d9nvy1#

您可以通过通知群集将节点从分配中排除来停用该节点。(来自文档here

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

这将导致Elasticsearch将该节点上的碎片分配给其余节点,而集群的状态不会变为黄色或红色(即使您的replication为0)。
一旦所有的碎片都被重新分配,你可以关闭节点,然后做你需要做的任何事情。一旦你完成了,包含节点进行分配,Elasticsearch会再次重新平衡碎片。

eyh26e7m

eyh26e7m2#

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

curl -XPUT P.P.P.P:9200/_cluster/settings -H 'Content-Type: application/json' -d '{
  "transient" :{
      "cluster.routing.allocation.exclude._ip" : "X.X.X.X"
   }
}';echo

这里P.P.P.P是主节点的私有IP,如果在localhost上运行elasticsearch,您也可以使用localhostX.X.X.X是要从集群中删除的节点的私有IP。
如果接受删除节点,此命令将向acknowledgementtrue提供信息,并且将启动数据位置调整。请检查数据位置调整是否已结束,并且节点上是否没有剩余的碎片,然后停止elasticsearch进程和stop/terminate示例。可以在this article上找到检查数据位置调整和剩余碎片的命令。

相关问题