データノードを安全に削除する
データノードを減らしたい、データノードだけメンテしたい。そんな時に。
構成
データノード複数台
手順
・対象ノードからシャードを追い出す(追い出し命令実行)
・再配置が実行されてシャードがなくなるのを待つ
・対象ノードのElasticsearchを止める
・追い出し命令停止
コマンド
curlはマスターノードで実行
・ノードからシャードを追い出す(7.3.2でも動いた)
curl -XPUT http://localhost:9200/_cluster/settings -H "Content-Type: application/json" -d '{
"transient": {
"cluster.routing.allocation.exclude._name": "data-lab-01"
}
}'
複数nodeの場合はカンマ区切りで書く(例"node1,node2")
注意:
シングルノードに移行させたい場合は、すべてのインデックスをレプリカを0にしないとこのコマンドで追い出しても(実際は追い出されないが・・)
クラスタ系のURLをたたくと遅くなる
たぶんシャードにnodeでも書かれているんだろう。
・シャードがなくなったら
curl -s -XGET http://localhost:9200/_cat/shards | grep 'node_name' | wc -l
・とめる(対象データノードで実行
systemctl stop elasticsearch
・確認
curl -XGET http://localhost:9200/_cluster/settings
・追い出し命令停止
curl -XPUT http://localhost:9200/_cluster/settings -d '{
"transient": {
"cluster.routing.allocation.exclude._name": ""
}
}'
・確認
curl -XGET http://localhost:9200/_cluster/settings
結果
クラスターヘルスはグリーン
削除(切り離された)データノードを落としてメモリやSSDの増設などができる。
削除したままでもOK。