elasticsearch-node

この elasticsearch-node コマンドを使用すると、ノードがシャットダウンしている間にのみ可能な特定の危険な操作を実行できます。このコマンドを使用すると、ノードの role を調整したり、クラスタ設定を危険にさらして編集したり、災害後にデータを回復したり、ディスク上のデータと互換性がない場合でもノードを起動したりできます。

Synopsis

Shell

  1. bin/elasticsearch-node repurpose|unsafe-bootstrap|detach-cluster|override-version
  2. [-E <KeyValuePair>]
  3. [-h, --help] ([-s, --silent] | [-v, --verbose])

Description

このツールにはいくつかのモードがあります:

  • elasticsearch-node repurpose は、以前 data node または master-eligible node であったノードから不要なデータを削除するために使用できますが、これらの役割のいずれかを持たないように再利用された場合です。
  • elasticsearch-node remove-settings は、クラスタが形成されるのを妨げる互換性のない設定が含まれている場合に、クラスタ状態から永続的な設定を削除するために使用できます。
  • elasticsearch-node remove-index-settings は、クラスタが形成されるのを妨げる互換性のないインデックス設定が含まれている場合に、クラスタ状態からインデックス設定を削除するために使用できます。
  • elasticsearch-node remove-customs は、クラスタ状態から壊れたメタデータを削除するために使用できます。これにより、クラスタ状態が読み込まれなくなることを防ぎます。
  • elasticsearch-node unsafe-bootstrap は、危険なクラスタブートストラッピングを実行するために使用できます。これにより、ノードの1つがローカルコピーのクラスタメタデータを使用して、新しいクラスタを自分自身で形成することが強制されます。
  • elasticsearch-node detach-cluster は、ノードを1つのクラスタから別のクラスタに移動することを可能にします。これは、elasticsearch-node unsafe-bootstrap コマンドで作成された新しいクラスタにノードを移動するために使用できます。危険なクラスタブートストラッピングが不可能な場合でも、新しいクラスタにノードを移動することができます。
  • elasticsearch-node override-version は、データパス内のデータが互換性のないバージョンのElasticsearchによって書き込まれた場合でも、ノードを起動することを可能にします。これにより、時にはElasticsearchの以前のバージョンにダウングレードできる場合があります。

JVM options

CLIツールは64MBのヒープで実行されます。ほとんどのツールでは、この値で問題ありません。ただし、必要に応じて、CLI_JAVA_OPTS 環境変数を設定することで上書きできます。たとえば、次のようにして、elasticsearch-node ツールで使用されるヒープサイズを1GBに増やすことができます。

Shell

  1. export CLI_JAVA_OPTS="-Xmx1g"
  2. bin/elasticsearch-node ...

Changing the role of a node

ノードを適切な再利用プロセスに従わずに再利用したい場合があるかもしれません。elasticsearch-node repurpose ツールを使用すると、ディスク上の余分なデータを削除し、ノードを再利用した後に起動できます。

意図された使用法は次のとおりです:

  • ノードを停止する
  • elasticsearch.yml を更新し、node.roles を希望の設定にします。
  • ノードで elasticsearch-node repurpose を実行します
  • ノードを起動します

elasticsearch-node repurposedata 役割のないノードで実行し、master 役割を持つ場合、ノード上の残りのシャードデータは削除されますが、インデックスとクラスタメタデータはそのまま残ります。elasticsearch-node repurposedata および master 役割のないノードで実行すると、残りのシャードデータとインデックスメタデータが削除されますが、クラスタメタデータはそのまま残ります。

このコマンドを実行すると、クラスタ内の他のノードで利用できないデータが含まれている場合、インデックスに対してデータ損失が発生する可能性があります。このツールを実行するのは、可能な結果を理解し、受け入れ、ノードがクリーンに再利用できないことを確認した後のみです。

このツールは、削除されるデータの概要を提供し、変更を加える前に確認を求めます。詳細な情報を得るには、冗長(-v)オプションを渡すことができます。

Removing persistent cluster settings

ノードに永続的なクラスタ設定が含まれており、クラスタの形成を妨げる場合があります。クラスタが形成できないため、Cluster update settings APIを使用してこれらの設定を削除することはできません。

elasticsearch-node remove-settings ツールを使用すると、ディスク上のクラスタ状態からこれらの永続的な設定を強制的に削除できます。このツールは、削除すべき設定のリストをパラメータとして受け取り、ワイルドカードパターンもサポートしています。

意図された使用法は次のとおりです:

  • ノードを停止する
  • ノードで elasticsearch-node remove-settings name-of-setting-to-remove を実行する
  • 他のすべてのマスター候補ノードに対して繰り返す
  • ノードを起動する

Removing index settings

インデックスにインデックス設定が含まれており、クラスタの形成を妨げる場合があります。クラスタが形成できないため、Update index settings APIを使用してこれらの設定を削除することはできません。

elasticsearch-node remove-index-settings ツールを使用すると、ディスク上のクラスタ状態からこれらのインデックス設定を強制的に削除できます。このツールは、削除すべきインデックス設定のリストをパラメータとして受け取り、ワイルドカードパターンもサポートしています。

意図された使用法は次のとおりです:

  • ノードを停止する
  • ノードで elasticsearch-node remove-index-settings name-of-index-setting-to-remove を実行する
  • すべてのノードに対して繰り返す
  • ノードを起動する

Removing custom metadata from the cluster state

ノードにカスタムメタデータが含まれている場合があります。通常、プラグインによって提供され、ノードの起動とディスクからのクラスタの読み込みを妨げます。

elasticsearch-node remove-customs ツールを使用すると、問題のあるカスタムメタデータを強制的に削除できます。このツールは、削除すべきカスタムメタデータ名のリストをパラメータとして受け取り、ワイルドカードパターンもサポートしています。

意図された使用法は次のとおりです:

  • ノードを停止する
  • ノードで elasticsearch-node remove-customs name-of-custom-to-remove を実行する
  • 他のすべてのマスター候補ノードに対して繰り返す
  • ノードを起動する

Recovering data after a disaster

時々、Elasticsearchノードは一時的に停止します。これは、メンテナンス作業を行う必要があるためか、ハードウェアの故障によるものかもしれません。一時的な状態を解決し、ノードを再起動すると、ノードはクラスタに再参加し、通常通りに続行します。構成によっては、クラスタは1つ以上のノードが停止している間も完全に利用可能である場合があります。

時には、停止したノードを再起動できない場合があります。たとえば、ノードのホストが修理できないハードウェアの問題に直面している場合です。クラスタがまだ利用可能な場合は、別のホストで新しいノードを起動し、Elasticsearchはこのノードを失敗したノードの代わりにクラスタに持ち込みます。

各ノードは、path.data 設定 で定義されたデータディレクトリにデータを保存します。これは、災害時にデータディレクトリを別のホストに移動することでノードを再起動できることを意味します。前提として、これらのデータディレクトリが故障したホストから回復できることが必要です。

Elasticsearchは、マスター候補ノードの過半数からの応答を必要とします。これにより、マスターを選出し、クラスタ状態を更新します。つまり、3つのマスター候補ノードがある場合、1つが失敗してもクラスタは利用可能なままです。ただし、3つのマスター候補ノードのうち2つが失敗すると、少なくとも1つが再起動されるまでクラスタは利用できなくなります。

非常にまれな状況では、クラスタの可用性を回復するために十分なノードを再起動できない場合があります。そのような災害が発生した場合は、最近のスナップショットから新しいクラスタを構築し、そのスナップショットが取得されて以来に取り込まれたデータを再インポートする必要があります。

ただし、災害が深刻すぎる場合、最近のスナップショットから回復することも不可能な場合があります。残念ながら、この場合、データ損失のリスクがない方法はありませんが、elasticsearch-node ツールを使用して、失敗したクラスタの一部のデータを含む新しいクラスタを構築することができるかもしれません。

Bypassing version checks

Elasticsearchがディスクに書き込むデータは、現在のバージョンと限られた将来のバージョンによって読み取れるように設計されています。一般的に、古いバージョンや、1つ以上のメジャーバージョンが新しいバージョンによって読み取ることはできません。ディスクに保存されたデータには、それを書き込んだノードのバージョンが含まれており、Elasticsearchは起動時にこのバージョンとの互換性を確認します。

まれに、このチェックをバイパスして、互換性のないバージョンによって書き込まれたデータを使用してElasticsearchノードを起動することが望ましい場合があります。保存されたデータの形式が変更されている場合、これは機能しない可能性があり、形式がElasticsearchによって誤解される可能性があるため、リスクのあるプロセスです。これにより、データ損失が発生する可能性があります。

このチェックをバイパスするには、elasticsearch-node override-version ツールを使用して、データパスに保存されたバージョン番号を現在のバージョンで上書きし、Elasticsearchがディスク上のデータと互換性があると認識させます。

Unsafe cluster bootstrapping

マスター候補ノードが1つ以上残っているが、その過半数を再起動することができない場合、elasticsearch-node unsafe-bootstrap コマンドは、別の クラスタブートストラッピングプロセス を実行するかのように、クラスタの 投票設定 を危険にさらして上書きします。ターゲットノードは、そのノードにローカルに保持されているクラスタメタデータを使用して、新しいクラスタを自分自身で形成できます。

これらの手順は、ターゲットノードが最新のクラスタメタデータを保持していない可能性があるため、任意のデータ損失を引き起こす可能性があります。この古いメタデータにより、クラスタ内のインデックスの一部またはすべてを使用できなくなる可能性があります。

危険なブートストラッピングは、単一ノードを含む新しいクラスタを形成するため、実行した後は、elasticsearch-node detach-cluster ツール を使用して、失敗したクラスタから他の生存ノードをこの新しいクラスタに移行する必要があります。

elasticsearch-node unsafe-bootstrap ツールを実行すると、ノードの状態を分析し、アクションを取る前に確認を求めます。確認を求める前に、実行されるノードのクラスタ状態の用語とバージョンを次のように報告します:

Txt

  1. Current node cluster state (term, version) pair is (4, 12)

このツールを実行するノードを選択する場合は、できるだけ大きな用語を持つノードを選択する必要があります。同じ用語を持つノードが複数ある場合は、最大のバージョンを持つノードを選択します。この情報は、最新のクラスタ状態を持つノードを特定し、失われる可能性のあるデータの量を最小限に抑えます。たとえば、最初のノードが (4, 12) を報告し、2番目のノードが (5, 3) を報告している場合、2番目のノードが優先されます。なぜなら、その用語が大きいからです。ただし、2番目のノードが (3, 17) を報告している場合、最初のノードが優先されます。なぜなら、その用語が大きいからです。2番目のノードが (4, 10) を報告している場合、最初のノードと同じ用語を持っていますが、バージョンが小さいため、最初のノードが優先されます。

このコマンドを実行すると、任意のデータ損失が発生する可能性があります。このツールを実行するのは、可能な結果を理解し、受け入れ、クラスタの回復のための他のすべての可能性を尽くした後のみです。

このツールを使用するための操作の順序は次のとおりです:

  • 1. クラスタ内のマスター候補ノードの半分以上へのアクセスを本当に失ったことを確認し、それらを健康なハードウェアにデータパスを移動することで修理または回復できないことを確認します。
  • 2. すべての 残りのノードを停止します。
  • 3. 上記のように、新しい選出されたマスターとなる残りのマスター候補ノードの1つを選択します。
  • 4. このノードで、以下に示すように elasticsearch-node unsafe-bootstrap コマンドを実行します。ツールが Master node was successfully bootstrapped を報告したことを確認します。
  • 5. このノードを起動し、マスターノードとして選出されたことを確認します。
  • 6. クラスタ内の他のすべてのノードで、以下に示す elasticsearch-node detach-cluster ツールを実行します。
  • 7. 他のすべてのノードを起動し、それぞれがクラスタに参加することを確認します。
  • 8. このプロセス中に失われたデータがあるかどうかを調査します。

ツールを実行すると、クラスタをブートストラップするために使用されるノードが実行されていないことを確認します。このツールが実行されている間、すべての他のマスター候補ノードも停止していることが重要ですが、ツールはこれを確認しません。

メッセージ Master node was successfully bootstrapped は、データ損失がなかったことを意味するものではなく、ツールがその仕事を完了できたことを意味します。

Detaching nodes from their cluster

ノードがクラスタ間を移動することは安全ではありません。なぜなら、異なるクラスタは完全に異なるクラスタメタデータを持っているからです。2つのクラスタのメタデータを安全にマージする方法はありません。

誤って間違ったクラスタに参加するのを防ぐために、各クラスタは最初に起動するときに cluster UUID として知られる一意の識別子を作成します。すべてのノードは、そのクラスタのUUIDを記録し、異なるUUIDのクラスタに参加することを拒否します。

ただし、ノードのクラスタが永久に失敗した場合、新しいクラスタに移動することを試みることが望ましい場合があります。elasticsearch-node detach-cluster コマンドを使用すると、ノードのクラスタUUIDをリセットすることで、ノードをクラスタから切り離すことができます。その後、異なるUUIDの別のクラスタに参加できます。

たとえば、危険なクラスタブートストラッピングの後、他のすべての生存ノードを古いクラスタから切り離して、新しい危険にさらされたクラスタに参加させる必要があります。

危険なクラスタブートストラッピングは、少なくとも1つの生存マスター候補ノードがある場合にのみ可能です。残りのマスター候補ノードがない場合、クラスタメタデータは完全に失われます。ただし、個々のデータノードには、シャードに対応するインデックスメタデータのコピーも含まれています。これにより、新しいクラスタがこれらのシャードを dangling indices としてインポートできる場合があります。すべてのマスター候補ノードが失われた後に、elasticsearch-node detach-cluster コマンドを使用して新しいクラスタを作成し、残存ノードをこの新しいクラスタに移動することで、いくつかのインデックスを回復できる場合があります。新しいクラスタが完全に形成されたら、Dangling indices API を使用して、ダングリングインデックスをリスト、インポート、または削除します。

ダングリングインデックスをインポートする際にはデータ損失のリスクがあります。なぜなら、データノードがインデックスメタデータの最新のコピーを持っていない可能性があり、どのシャードコピーが同期しているか に関する情報を持っていないからです。これにより、古いシャードコピーがプライマリとして選択され、一部のシャードがインポートされたマッピングと互換性がない可能性があります。

このコマンドを実行すると、任意のデータ損失が発生する可能性があります。このツールを実行するのは、可能な結果を理解し、受け入れ、クラスタの回復のための他のすべての可能性を尽くした後のみです。

このツールを使用するための操作の順序は次のとおりです:

  • 1. クラスタ内のすべてのマスター候補ノードへのアクセスを本当に失ったことを確認し、それらを健康なハードウェアにデータパスを移動することで修理または回復できないことを確認します。
  • 2. 新しいクラスタを起動し、それが健康であることを確認します。このクラスタは、1つ以上の新しいマスター候補ノードで構成されるか、上記のように危険にさらされたクラスタである可能性があります。
  • 3. すべての 残りのデータノードを停止します。
  • 4. 各データノードで、以下に示す elasticsearch-node detach-cluster ツールを実行します。ツールが Node was successfully detached from the cluster を報告したことを確認します。
  • 5. 必要に応じて、各データノードを 新しいクラスタを発見する ように構成します。
  • 6. 各データノードを起動し、それが新しいクラスタに参加したことを確認します。
  • 7. すべての回復が完了するまで待ち、このプロセス中に失われたデータがあるかどうかを調査します。 Dangling indices API を使用して、ダングリングインデックスをリスト、インポート、または削除します。

メッセージ Node was successfully detached from the cluster は、データ損失がなかったことを意味するものではなく、ツールがその仕事を完了できたことを意味します。

Parameters

  • repurpose
  • ノードの役割が変更されたときに余分なデータを削除します。
  • unsafe-bootstrap
  • このノードを新しい1ノードクラスタとして危険にさらしてブートストラップすることを指定します。
  • detach-cluster
  • このノードをクラスタから危険にさらして切り離し、別のクラスタに参加できるようにします。
  • override-version
  • データパスに保存されたバージョン番号を上書きし、ノードがディスク上のデータと互換性がないにもかかわらず起動できるようにします。
  • remove-settings
  • 提供された永続的なクラスタ設定をディスク上のクラスタ状態から強制的に削除します。
  • -E <KeyValuePair>
  • 設定を構成します。
  • -h, --help
  • すべてのコマンドパラメータを返します。
  • -s, --silent
  • 最小限の出力を表示します。
  • -v, --verbose
  • 詳細な出力を表示します。

Examples

Repurposing a node as a dedicated master node

この例では、以前のデータノードが専用のマスターノードとして再利用されます。最初に、ノードの設定を node.roles: [ "master" ] に更新します。次に、elasticsearch-node repurpose コマンドを実行して余分なシャードデータを見つけて削除します:

Txt

  1. node$ ./bin/elasticsearch-node repurpose
  2. WARNING: Elasticsearch MUST be stopped before running this tool.
  3. Found 2 shards in 2 indices to clean up
  4. Use -v to see list of paths and indices affected
  5. Node is being re-purposed as master and no-data. Clean-up of shard data will be performed.
  6. Do you want to proceed?
  7. Confirm [y/N] y
  8. Node successfully repurposed to master and no-data.

Repurposing a node as a coordinating-only node

この例では、以前データを保持していたノードがコーディネート専用ノードとして再利用されます。最初に、ノードの設定を node.roles: [] に更新します。次に、elasticsearch-node repurpose コマンドを実行して余分なシャードデータとインデックスメタデータを見つけて削除します:

Txt

  1. node$./bin/elasticsearch-node repurpose
  2. WARNING: Elasticsearch MUST be stopped before running this tool.
  3. Found 2 indices (2 shards and 2 index meta data) to clean up
  4. Use -v to see list of paths and indices affected
  5. Node is being re-purposed as no-master and no-data. Clean-up of index data will be performed.
  6. Do you want to proceed?
  7. Confirm [y/N] y
  8. Node successfully repurposed to no-master and no-data.

Removing persistent cluster settings

ノードに永続的なクラスタ設定が含まれており、クラスタの形成を妨げる場合、すなわち、Cluster update settings APIを使用して削除できない場合、次のコマンドを実行して1つ以上のクラスタ設定を削除できます。

Txt

  1. node$ ./bin/elasticsearch-node remove-settings xpack.monitoring.exporters.my_exporter.host
  2. WARNING: Elasticsearch MUST be stopped before running this tool.
  3. The following settings will be removed:
  4. xpack.monitoring.exporters.my_exporter.host: "10.1.2.3"
  5. You should only run this tool if you have incompatible settings in the
  6. cluster state that prevent the cluster from forming.
  7. This tool can cause data loss and its use should be your last resort.
  8. Do you want to proceed?
  9. Confirm [y/N] y
  10. Settings were successfully removed from the cluster state

ワイルドカードを使用して複数の設定を削除することもできます。たとえば、

Txt

  1. node$ ./bin/elasticsearch-node remove-settings xpack.monitoring.*

Removing index settings

インデックスにインデックス設定が含まれており、クラスタの形成を妨げる場合、次のコマンドを実行して1つ以上のインデックス設定を削除できます。

Txt

  1. node$ ./bin/elasticsearch-node remove-index-settings index.my_plugin.foo
  2. WARNING: Elasticsearch MUST be stopped before running this tool.
  3. You should only run this tool if you have incompatible index settings in the
  4. cluster state that prevent the cluster from forming.
  5. This tool can cause data loss and its use should be your last resort.
  6. Do you want to proceed?
  7. Confirm [y/N] y
  8. Index settings were successfully removed from the cluster state

ワイルドカードを使用して複数のインデックス設定を削除することもできます。たとえば、

Txt

  1. node$ ./bin/elasticsearch-node remove-index-settings index.my_plugin.*

Removing custom metadata from the cluster state

ディスク上のクラスタ状態にカスタムメタデータが含まれており、ノードの起動とクラスタ状態の読み込みを妨げる場合、次のコマンドを実行してこのカスタムメタデータを削除できます。

Txt

  1. node$ ./bin/elasticsearch-node remove-customs snapshot_lifecycle
  2. WARNING: Elasticsearch MUST be stopped before running this tool.
  3. The following customs will be removed:
  4. snapshot_lifecycle
  5. You should only run this tool if you have broken custom metadata in the
  6. cluster state that prevents the cluster state from being loaded.
  7. This tool can cause data loss and its use should be your last resort.
  8. Do you want to proceed?
  9. Confirm [y/N] y
  10. Customs were successfully removed from the cluster state

Unsafe cluster bootstrapping

クラスタに5つのマスター候補ノードがあり、そのうち3つを永久に失ったと仮定します。

  • 最初の残りのノードでツールを実行し、確認ステップで n と答えます。

Txt

  1. node_1$ ./bin/elasticsearch-node unsafe-bootstrap
  2. WARNING: Elasticsearch MUST be stopped before running this tool.
  3. Current node cluster state (term, version) pair is (4, 12)
  4. You should only run this tool if you have permanently lost half or more
  5. of the master-eligible nodes in this cluster, and you cannot restore the
  6. cluster from a snapshot. This tool can cause arbitrary data loss and its
  7. use should be your last resort. If you have multiple surviving master
  8. eligible nodes, you should run this tool on the node with the highest
  9. cluster state (term, version) pair.
  10. Do you want to proceed?
  11. Confirm [y/N] n
  • 2番目の残りのノードでツールを実行し、再度確認ステップで n と答えます。

Txt

  1. node_2$ ./bin/elasticsearch-node unsafe-bootstrap
  2. WARNING: Elasticsearch MUST be stopped before running this tool.
  3. Current node cluster state (term, version) pair is (5, 3)
  4. You should only run this tool if you have permanently lost half or more
  5. of the master-eligible nodes in this cluster, and you cannot restore the
  6. cluster from a snapshot. This tool can cause arbitrary data loss and its
  7. use should be your last resort. If you have multiple surviving master
  8. eligible nodes, you should run this tool on the node with the highest
  9. cluster state (term, version) pair.
  10. Do you want to proceed?
  11. Confirm [y/N] n
  • 2番目のノードはより大きな用語を持っているため、より新しいクラスタ状態を持っているため、このノードを使用してクラスタを危険にさらしてブートストラップする方が良いです:

Txt

  1. node_2$ ./bin/elasticsearch-node unsafe-bootstrap
  2. WARNING: Elasticsearch MUST be stopped before running this tool.
  3. Current node cluster state (term, version) pair is (5, 3)
  4. You should only run this tool if you have permanently lost half or more
  5. of the master-eligible nodes in this cluster, and you cannot restore the
  6. cluster from a snapshot. This tool can cause arbitrary data loss and its
  7. use should be your last resort. If you have multiple surviving master
  8. eligible nodes, you should run this tool on the node with the highest
  9. cluster state (term, version) pair.
  10. Do you want to proceed?
  11. Confirm [y/N] y
  12. Master node was successfully bootstrapped

Detaching nodes from their cluster

危険なクラスタブートストラッピングを実行した後、elasticsearch-node detach-cluster コマンドを実行して、すべての残りのノードを失敗したクラスタから切り離し、新しいクラスタに参加できるようにします:

Txt

  1. node_3$ ./bin/elasticsearch-node detach-cluster
  2. WARNING: Elasticsearch MUST be stopped before running this tool.
  3. You should only run this tool if you have permanently lost all of the
  4. master-eligible nodes in this cluster and you cannot restore the cluster
  5. from a snapshot, or you have already unsafely bootstrapped a new cluster
  6. by running `elasticsearch-node unsafe-bootstrap` on a master-eligible
  7. node that belonged to the same cluster as this node. This tool can cause
  8. arbitrary data loss and its use should be your last resort.
  9. Do you want to proceed?
  10. Confirm [y/N] y
  11. Node was successfully detached from the cluster

Bypassing version checks

elasticsearch-node override-version コマンドを実行して、データパスに保存されたバージョンを上書きし、ノードがディスク上のデータと互換性がないにもかかわらず起動できるようにします:

Txt

  1. node$ ./bin/elasticsearch-node override-version
  2. WARNING: Elasticsearch MUST be stopped before running this tool.
  3. This data path was last written by Elasticsearch version [x.x.x] and may no
  4. longer be compatible with Elasticsearch version [y.y.y]. This tool will bypass
  5. this compatibility check, allowing a version [y.y.y] node to start on this data
  6. path, but a version [y.y.y] node may not be able to read this data or may read
  7. it incorrectly leading to data loss.
  8. You should not use this tool. Instead, continue to use a version [x.x.x] node
  9. on this data path. If necessary, you can use reindex-from-remote to copy the
  10. data from here into an older cluster.
  11. Do you want to proceed?
  12. Confirm [y/N] y
  13. Successfully overwrote this node's metadata to bypass its version compatibility checks.