Elasticsearchでノードを再起動する適切な方法は何ですか? (できればREST API、Java APIも大丈夫かもしれません)
ノードを再起動する正しい方法は、 shutdown API を使用するか、プロセスにTERM
信号を送信することでシャットダウンすることです(たとえば、kill $PID
)。
シャットダウンしたら、サービス検索ラッパーなど、elasticsearchの実行に使用するものを使用して、またはコマンドラインから起動するだけで、新しいノードを起動できます。
サービスラッパーを使用している場合は、restart
コマンドを渡すことでノードを再起動できます。例:/etc/init.d/elasticsearch restart
しかし、それは上記の単なる便利なラッパーです。
restart
APIは問題があったため、バージョン0.11以降無効になっています。
ノードがダウンしたり、新しいノードが起動したりするたびに、クラスターはシャードを再配布します。これは、ノードを再起動するだけの場合は望ましくない可能性があるため、ローリング再起動を利用できます。
最初にシャード割り当てを無効にします。
PUT/_cluster/settings {"transient":{"cluster.routing.allocation.enable": "none"}}
ノードを再起動service elasticsearch restart
シャード割り当てを有効にします。
PUT/_cluster/settings {"transient":{"cluster.routing.allocation.enable": "all"}}
これについての詳細: ここ
shutdown API に類似した再起動APIがあります。 「シャットダウン」を「再起動」に置き換えるだけです。 githubの問題 も参照してください。