如何在运行时从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
localhost
。 XXXX
是要从群集中删除的节点的私有IP。
如果该节点被接受被删除并且数据重定位将开始,该命令将给予acknowledgement
true
。 检查数据重定位是否结束,节点上没有任何碎片,停止elasticsearch
过程并stop/terminate
实例。 可以在本文中find检查数据重定位和碎片的命令。
您可以始终终止进程以在运行时删除节点。 Elasticsearch集群将在其余节点中自动重新平衡。 但是,这里有一些缺点。
- 你有多less副本你的设置?
- 您的设置中有多less个碎片?
- 如果分片中的数据太大(每小时10GB),则可能需要很长时间才能重新平衡。
- 如果您有足够的副本,那么群集状态将变为黄色。 在此状态下,您可以在此期间进行索引和search。 然而,碎片最初取消分配,然后慢慢移动到平衡节点。