假设我在群集中有5个节点,我必须在运行时删除2个节点。那么如何在不影响指数的情况下实现呢?
我有接近10 Gbphour的连续数据流,这些数据会被连续编入索引。
重新平衡会对此有所帮助吗?提前致谢
答案 0 :(得分:110)
您可以通过告知群集将其从分配中排除来停用该节点。 (来自文档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将该节点上的分片分配给其余节点,而不会将群集状态更改为黄色或红色(即使您有复制0)。
重新分配所有分片后,您可以关闭节点并执行您需要执行的操作。完成后,请包含要分配的节点,Elasticsearch将再次重新平衡分片。
答案 1 :(得分:9)
要从群集中删除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,您也可以使用localhost
。 X.X.X.X
是要从群集中删除的节点的私有IP。
如果接受删除节点并且数据重定位将开始,则此命令将给acknowledgement
true
。检查数据重定位是否结束且节点上是否还有任何分片,而不是停止elasticsearch
进程和stop/terminate
实例。
可以在this article上找到检查数据重定位和分片的命令。
答案 2 :(得分:-1)
您始终可以终止进程以在运行时删除节点。 Elasticsearch集群将自动在其余节点中重新平衡。但是,这里有一些缺点。