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

Lav*_*Lav 61 elasticsearch

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

我有接近10 Gbphour的连续数据流,这些数据将被连续索引.

重新平衡会对此有所帮助吗?提前致谢

tow*_*owr 120

您可以通过告知群集将其从分配中排除来停用节点.(来自此处的文档)

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

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

重新分配所有分片后,您可以关闭节点并执行您需要执行的任何操作.完成后,包括要分配的节点,Elasticsearch将再次重新平衡分片.

  • 此外,"cluster.routing.allocation.exclude._name"和"cluster.routing.allocation.exclude._id"可用于按节点名称和节点ID停用.在由于错误配置(/ etc/hosts&elasticsearch.yml)导致所有节点获得相同(已发布)IP 127.0.1.1的情况下需要这样. (33认同)
  • 你可以使用`curl -XGET'http:// ES_SERVER:9200/_cluster/health?pretty'`; 如果没有重定位节点,则排除的节点必须已经耗尽并且可以安全地关闭.另一种选择是检查`curl -XGET'http:// ES_SERVER:9200/_nodes/NODE_NAME/stats/indices?pretty'`以查看节点上是否没有文件. (11认同)
  • 多个_ip记录可以用逗号分隔,例如:"cluster.routing.allocation.exclude._ip":"10.0.0.1,10.0.0.2" (8认同)
  • 如何检查关闭退役节点是否可以? (2认同)

Aje*_*han 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
Run Code Online (Sandbox Code Playgroud)

P.P.P.P是主节点的私有IP,您也可以使用localhostif elasticsearch运行localhost.X.X.X.X是要从群集中删除的节点的专用IP.

acknowledgement true如果接受节点被删除并且数据重定位将开始,则此命令将给出.检查数据重定位是否结束,节点上是否还有任何分片,而不是停止elasticsearch进程和stop/terminate实例.可以在本文中找到检查数据重定位和分片的命令.