シャットダウンAPIの実装

この機能は、Elasticsearch ServiceElastic Cloud Enterprise、およびElastic Cloud on Kubernetesによる間接的な使用を目的としています。直接の使用はサポートされていません。

ノードをシャットダウンする準備をします。

リクエスト

PUT _nodes/<node-id>/shutdown

前提条件

  • Elasticsearchのセキュリティ機能が有効になっている場合、このAPIを使用するにはmanage クラスター権限を持っている必要があります。
  • オペレータ権限機能が有効になっている場合、このAPIを使用するにはオペレータである必要があります。

説明

ノードを再起動またはシャットダウンしてクラスターから削除する準備をするために、進行中のタスクとインデックスシャードを必要に応じて他のノードに移行します。これにより、Elasticsearchを安全に停止でき、クラスターへの影響を最小限に抑えることができます。

シャットダウンのタイプを指定する必要があります:restartremove、またはreplace。ノードがすでにシャットダウンの準備をしている場合、このAPIを使用してシャットダウンのタイプを変更できます。

このAPIはElasticsearchプロセスを終了しませんノードシャットダウンステータスを監視して、Elasticsearchを停止するのが安全な時期を判断します。

パスパラメータ

  • <node-id>
  • (必須、文字列) シャットダウンの準備をするノードのID。オフラインのノードを指定した場合、クラスターに再参加したときにシャットダウンの準備が行われます。

このパラメータはクラスターのアクティブノードに対して検証されません。これにより、オフラインの間にノードをシャットダウンのために登録できます。無効なノードIDを指定してもエラーは発生しません。

クエリパラメータ

  • master_timeout
  • (オプション、時間単位) マスターノードを待機する期間。タイムアウトが切れる前にマスターノードが利用できない場合、リクエストは失敗し、エラーが返されます。デフォルトは30sです。リクエストがタイムアウトしないことを示すために-1に設定することもできます。

リクエストボディ

  • type
  • (必須、文字列) 有効な値はrestartremove、またはreplaceです。ノードを一時的にシャットダウンしてアップグレード、構成変更、またはその他のメンテナンスを行う必要がある場合はrestartを使用します。ノードはクラスターに再参加することが期待されているため、データはノードから移行されません。ノードをクラスターから永久に削除する必要がある場合はremoveを使用します。データがノードから移行されるまで、ノードはシャットダウンの準備が整ったとは見なされません。ノードを別のノードと1:1で置き換えるにはreplaceを使用します。特定の割り当ての決定は、ソースノードをターゲットノードに真に置き換えるために無視されます。置き換えタイプのシャットダウン中に、ロールオーバーやインデックス作成が未割り当てのシャードを引き起こす可能性があり、置き換えが完了するまでシュリンクが失敗することがあります。
  • reason
  • (必須、文字列) ノードがシャットダウンされる理由を人間が読める形で記述します。このフィールドは他のクラスターオペレーターに情報を提供しますが、シャットダウンプロセスには影響しません。
  • allocation_delay
  • (オプション、文字列) typerestartの場合のみ有効です。ノードが再起動してクラスターに参加するまで、Elasticsearchがどのくらいの時間待機するかを制御します。これは、index.unassigned.node_left.delayed_timeout設定を使用した割り当ての遅延と同じように機能します。再起動の割り当て遅延とインデックスレベルの割り当て遅延の両方を指定した場合、長い方が使用されます。
  • target_node_name
  • (オプション、文字列) typereplaceの場合のみ有効です。シャットダウンされるノードを置き換えるノードの名前を指定します。シャットダウンされるノードのシャードは、ターゲットノードにのみ割り当てることが許可され、他のデータはターゲットノードに割り当てられません。データの移動中は、ディスクの水位やユーザー属性フィルタリングルールなど、特定の割り当てルールが無視されます。

ノードをシャットダウンのために登録します:

Python

  1. resp = client.shutdown.put_node(
  2. node_id="USpTGYaBSIKbgSUJR2Z9lg",
  3. type="restart",
  4. reason="Demonstrating how the node shutdown API works",
  5. allocation_delay="20m",
  6. )
  7. print(resp)

Ruby

  1. response = client.shutdown.put_node(
  2. node_id: 'USpTGYaBSIKbgSUJR2Z9lg',
  3. body: {
  4. type: 'restart',
  5. reason: 'Demonstrating how the node shutdown API works',
  6. allocation_delay: '20m'
  7. }
  8. )
  9. puts response

Js

  1. const response = await client.shutdown.putNode({
  2. node_id: "USpTGYaBSIKbgSUJR2Z9lg",
  3. type: "restart",
  4. reason: "Demonstrating how the node shutdown API works",
  5. allocation_delay: "20m",
  6. });
  7. console.log(response);

コンソール

  1. PUT /_nodes/USpTGYaBSIKbgSUJR2Z9lg/shutdown
  2. {
  3. "type": "restart",
  4. "reason": "Demonstrating how the node shutdown API works",
  5. "allocation_delay": "20m"
  6. }
ノードを再起動する準備をします。
使用するremoveは、クラスターから永久に削除されるノード用です。