ノード削除の事前検証API

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

ノード削除の事前検証。

リクエスト

POST /_internal/prevalidate_node_removal

前提条件

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

説明

このAPIは、指定されたノードをクラスターから削除しようとした場合に成功する可能性があるかどうかを確認します。未割り当てのシャードがないクラスターでは、任意のノードの削除は安全と見なされ、ノードの削除が成功する可能性が高いことを意味します。

クラスターにred クラスターの健康状態がある場合、ノードを削除することが未割り当てのシャードの最後のコピーを削除するリスクを伴わないことを確認します。クラスターに赤いインデックスがある場合、APIは赤いインデックスが検索可能スナップショットインデックスであるかどうかを確認し、そうでない場合は、API呼び出しで指定された各ノードにリクエストを送信して、ノードが検索可能スナップショットインデックスではない赤いインデックスのローカルシャードコピーを含む可能性があるかどうかを確認します。このリクエストは、受信した各ノードで処理され、ノードが赤いインデックスシャードのためのシャードディレクトリを持っているかどうかを確認します。

レスポンスには、指定されたノードの削除の全体的な安全性と、各ノードに対する詳細なレスポンスが含まれます。ノード固有のレスポンス部分には、そのノードの削除が成功しない可能性がある理由に関する詳細も含まれています。

クエリパラメータ(namesids、またはexternal_ids)のいずれか1つのみを使用してノードのセットを指定する必要があります。

ノードのセットに対する事前検証結果がtrue(成功する可能性が高い)を返す場合、これはすべてのノードが一度に正常に削除できることを意味するのではなく、むしろ各個別のノードの削除が成功する可能性があることを意味します。実際のノード削除は、ノードライフサイクルAPIを介して処理できます。

クエリパラメータ

  • master_timeout
  • (オプション、時間単位)マスターノードを待機する期間。タイムアウトが切れる前にマスターノードが利用できない場合、リクエストは失敗し、エラーが返されます。デフォルトは30sです。リクエストがタイムアウトしないことを示すために-1に設定することもできます。
  • timeout
  • (オプション、時間単位)クラスターのメタデータを更新した後、クラスター内のすべての関連ノードからの応答を待機する期間。タイムアウトが切れる前に応答が受信されない場合、クラスターのメタデータの更新は適用されますが、応答は完全に承認されなかったことを示します。デフォルトは30sです。リクエストがタイムアウトしないことを示すために-1に設定することもできます。
  • names
  • (オプション、文字列)ノード名のカンマ区切りリスト。
  • ids
  • (オプション、文字列)ノードIDのカンマ区切りリスト。
  • external_ids
  • (オプション、文字列)ノード外部IDのカンマ区切りリスト。

レスポンスボディ

  • is_safe
  • (boolean)提供されたすべてのノードの削除が安全かどうか。
  • message
  • (string)操作が安全と見なされる理由についての詳細を提供するメッセージ。
  • nodes
  • (object)提供された各ノードの削除の事前検証結果。
    1. - `````<node>
    • (object)特定のノードの削除事前検証に関する情報を含みます。
      1. - `````id
      • (string)ノードID
      • name
      • (string)ノード名
      • external_id
      • (string)ノード外部ID
      • result
      • (object)ノードの削除事前検証結果を含みます。
        resultのプロパティ
      • is_safe
      • (boolean)ノードの削除が安全と見なされるかどうか。
      • reason
      • (string)事前検証結果が安全と見なされる理由を指定する文字列。次の値のいずれかになります:
        • no_problems: 事前検証は、ノードが安全に削除されるのを妨げる問題を見つけませんでした。
        • no_red_shards_except_searchable_snapshots: 赤いインデックスがすべて検索可能スナップショットインデックスであるため、ノードを削除してもクラスターからそのインデックスの最後のコピーを削除するリスクはありません。
        • no_red_shards_on_node: ノードは赤い非検索可能スナップショットインデックスシャードのコピーを含んでいません。
        • red_shards_on_node: ノードは一部の非検索可能スナップショット赤インデックスのシャードコピーを含む可能性があります。ノードに存在する可能性のあるシャードのリストは、messageフィールドに指定されています。
        • unable_to_verify_red_shards: ノードへの接続に失敗したか、タイムアウトしました。詳細はmessageフィールドに提供されます。
      • message
      • (オプション、文字列)削除事前検証結果に関する詳細情報。

この例では、ノードnode1node2を削除するのが安全かどうかを検証します。レスポンスは、node1を削除するのが安全であることを示していますが、node2を削除するのは安全でない可能性があるため、指定された赤いシャードのコピーを含む可能性があります。したがって、2つのノードの削除の全体的な事前検証はfalseを返します。

Python

  1. resp = client.perform_request(
  2. "POST",
  3. "/_internal/prevalidate_node_removal",
  4. params={
  5. "names": "node1,node2"
  6. },
  7. )
  8. print(resp)

Js

  1. const response = await client.transport.request({
  2. method: "POST",
  3. path: "/_internal/prevalidate_node_removal",
  4. querystring: {
  5. names: "node1,node2",
  6. },
  7. });
  8. console.log(response);

コンソール

  1. POST /_internal/prevalidate_node_removal?names=node1,node2

APIは次のレスポンスを返します:

コンソール-結果

  1. {
  2. "is_safe": false,
  3. "message": "removal of the following nodes might not be safe: [node2-id]",
  4. "nodes": [
  5. {
  6. "id": "node1-id",
  7. "name" : "node1",
  8. "external_id" : "node1-externalId",
  9. "result" : {
  10. "is_safe": true,
  11. "reason": "no_red_shards_on_node",
  12. "message": ""
  13. }
  14. },
  15. {
  16. "id": "node2-id",
  17. "name" : "node2",
  18. "external_id" : "node2-externalId",
  19. "result" : {
  20. "is_safe": false,
  21. "reason": "red_shards_on_node",
  22. "message": "node contains copies of the following red shards: [[indexName][0]]"
  23. }
  24. }
  25. ]
  26. }