假设我在集群中有 5 个节点,我必须在运行时删除 2 个节点。那么如何在不影响索引的情况下完成呢?
我有近 10 Gbphour 的连续数据流,并且不断被索引。
再平衡对此有帮助吗?提前致谢
假设我在集群中有 5 个节点,我必须在运行时删除 2 个节点。那么如何在不影响索引的情况下完成呢?
我有近 10 Gbphour 的连续数据流,并且不断被索引。
再平衡对此有帮助吗?提前致谢
您可以通过告诉集群将其从分配中排除来停用节点。(来自这里的文档)
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 将再次重新平衡分片。
要从集群中删除 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
if elasticsearch is running on localhost
。X.X.X.X
是要从集群中删除的节点的私有 IP。
acknowledgement
true
如果节点被接受删除并且数据重定位将开始,该命令将给出。检查数据重定位是否结束并且节点上没有任何碎片,然后停止elasticsearch
进程和stop/terminate
实例。检查数据重定位和剩余分片的命令可以在这篇文章中找到。