77

假设我在集群中有 5 个节点,我必须在运行时删除 2 个节点。那么如何在不影响索引的情况下完成呢?

我有近 10 Gbphour 的连续数据流,并且不断被索引。

再平衡对此有帮助吗?提前致谢

4

2 回答 2

142

您可以通过告诉集群将其从分配中排除来停用节点。(来自这里的文档)

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

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

重新分配所有分片后,您可以关闭节点并在那里做任何您需要做的事情。完成后,包括要分配的节点,Elasticsearch 将再次重新平衡分片。

于 2014-05-28T07:15:36.013 回答
11

要从集群中删除 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,你也可以使用localhostif elasticsearch is running on localhostX.X.X.X是要从集群中删除的节点的私有 IP。

acknowledgement true如果节点被接受删除并且数据重定位将开始,该命令将给出。检查数据重定位是否结束并且节点上没有任何碎片,然后停止elasticsearch进程和stop/terminate实例。检查数据重定位和剩余分片的命令可以在这篇文章中找到。

于 2016-09-24T21:22:19.350 回答