- elasticsearch-node
- Synopsis
- Description
- Parameters
- Examples
elasticsearch-node
この elasticsearch-node
コマンドを使用すると、ノードがシャットダウンしている間にのみ可能な特定の危険な操作を実行できます。このコマンドを使用すると、ノードの role を調整したり、クラスタ設定を危険にさらして編集したり、災害後にデータを回復したり、ディスク上のデータと互換性がない場合でもノードを起動したりできます。
Synopsis
Shell
bin/elasticsearch-node repurpose|unsafe-bootstrap|detach-cluster|override-version
[-E <KeyValuePair>]
[-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
export CLI_JAVA_OPTS="-Xmx1g"
bin/elasticsearch-node ...
Changing the role of a node
ノードを適切な再利用プロセスに従わずに再利用したい場合があるかもしれません。elasticsearch-node
repurpose
ツールを使用すると、ディスク上の余分なデータを削除し、ノードを再利用した後に起動できます。
意図された使用法は次のとおりです:
- ノードを停止する
elasticsearch.yml
を更新し、node.roles
を希望の設定にします。- ノードで
elasticsearch-node repurpose
を実行します - ノードを起動します
elasticsearch-node repurpose
を data
役割のないノードで実行し、master
役割を持つ場合、ノード上の残りのシャードデータは削除されますが、インデックスとクラスタメタデータはそのまま残ります。elasticsearch-node repurpose
を data
および 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
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
node$ ./bin/elasticsearch-node repurpose
WARNING: Elasticsearch MUST be stopped before running this tool.
Found 2 shards in 2 indices to clean up
Use -v to see list of paths and indices affected
Node is being re-purposed as master and no-data. Clean-up of shard data will be performed.
Do you want to proceed?
Confirm [y/N] y
Node successfully repurposed to master and no-data.
Repurposing a node as a coordinating-only node
この例では、以前データを保持していたノードがコーディネート専用ノードとして再利用されます。最初に、ノードの設定を node.roles: []
に更新します。次に、elasticsearch-node repurpose
コマンドを実行して余分なシャードデータとインデックスメタデータを見つけて削除します:
Txt
node$./bin/elasticsearch-node repurpose
WARNING: Elasticsearch MUST be stopped before running this tool.
Found 2 indices (2 shards and 2 index meta data) to clean up
Use -v to see list of paths and indices affected
Node is being re-purposed as no-master and no-data. Clean-up of index data will be performed.
Do you want to proceed?
Confirm [y/N] y
Node successfully repurposed to no-master and no-data.
Removing persistent cluster settings
ノードに永続的なクラスタ設定が含まれており、クラスタの形成を妨げる場合、すなわち、Cluster update settings APIを使用して削除できない場合、次のコマンドを実行して1つ以上のクラスタ設定を削除できます。
Txt
node$ ./bin/elasticsearch-node remove-settings xpack.monitoring.exporters.my_exporter.host
WARNING: Elasticsearch MUST be stopped before running this tool.
The following settings will be removed:
xpack.monitoring.exporters.my_exporter.host: "10.1.2.3"
You should only run this tool if you have incompatible settings in the
cluster state that prevent the cluster from forming.
This tool can cause data loss and its use should be your last resort.
Do you want to proceed?
Confirm [y/N] y
Settings were successfully removed from the cluster state
ワイルドカードを使用して複数の設定を削除することもできます。たとえば、
Txt
node$ ./bin/elasticsearch-node remove-settings xpack.monitoring.*
Removing index settings
インデックスにインデックス設定が含まれており、クラスタの形成を妨げる場合、次のコマンドを実行して1つ以上のインデックス設定を削除できます。
Txt
node$ ./bin/elasticsearch-node remove-index-settings index.my_plugin.foo
WARNING: Elasticsearch MUST be stopped before running this tool.
You should only run this tool if you have incompatible index settings in the
cluster state that prevent the cluster from forming.
This tool can cause data loss and its use should be your last resort.
Do you want to proceed?
Confirm [y/N] y
Index settings were successfully removed from the cluster state
ワイルドカードを使用して複数のインデックス設定を削除することもできます。たとえば、
Txt
node$ ./bin/elasticsearch-node remove-index-settings index.my_plugin.*
Removing custom metadata from the cluster state
ディスク上のクラスタ状態にカスタムメタデータが含まれており、ノードの起動とクラスタ状態の読み込みを妨げる場合、次のコマンドを実行してこのカスタムメタデータを削除できます。
Txt
node$ ./bin/elasticsearch-node remove-customs snapshot_lifecycle
WARNING: Elasticsearch MUST be stopped before running this tool.
The following customs will be removed:
snapshot_lifecycle
You should only run this tool if you have broken custom metadata in the
cluster state that prevents the cluster state from being loaded.
This tool can cause data loss and its use should be your last resort.
Do you want to proceed?
Confirm [y/N] y
Customs were successfully removed from the cluster state
Unsafe cluster bootstrapping
クラスタに5つのマスター候補ノードがあり、そのうち3つを永久に失ったと仮定します。
- 最初の残りのノードでツールを実行し、確認ステップで
n
と答えます。
Txt
node_1$ ./bin/elasticsearch-node unsafe-bootstrap
WARNING: Elasticsearch MUST be stopped before running this tool.
Current node cluster state (term, version) pair is (4, 12)
You should only run this tool if you have permanently lost half or more
of the master-eligible nodes in this cluster, and you cannot restore the
cluster from a snapshot. This tool can cause arbitrary data loss and its
use should be your last resort. If you have multiple surviving master
eligible nodes, you should run this tool on the node with the highest
cluster state (term, version) pair.
Do you want to proceed?
Confirm [y/N] n
- 2番目の残りのノードでツールを実行し、再度確認ステップで
n
と答えます。
Txt
node_2$ ./bin/elasticsearch-node unsafe-bootstrap
WARNING: Elasticsearch MUST be stopped before running this tool.
Current node cluster state (term, version) pair is (5, 3)
You should only run this tool if you have permanently lost half or more
of the master-eligible nodes in this cluster, and you cannot restore the
cluster from a snapshot. This tool can cause arbitrary data loss and its
use should be your last resort. If you have multiple surviving master
eligible nodes, you should run this tool on the node with the highest
cluster state (term, version) pair.
Do you want to proceed?
Confirm [y/N] n
- 2番目のノードはより大きな用語を持っているため、より新しいクラスタ状態を持っているため、このノードを使用してクラスタを危険にさらしてブートストラップする方が良いです:
Txt
node_2$ ./bin/elasticsearch-node unsafe-bootstrap
WARNING: Elasticsearch MUST be stopped before running this tool.
Current node cluster state (term, version) pair is (5, 3)
You should only run this tool if you have permanently lost half or more
of the master-eligible nodes in this cluster, and you cannot restore the
cluster from a snapshot. This tool can cause arbitrary data loss and its
use should be your last resort. If you have multiple surviving master
eligible nodes, you should run this tool on the node with the highest
cluster state (term, version) pair.
Do you want to proceed?
Confirm [y/N] y
Master node was successfully bootstrapped
Detaching nodes from their cluster
危険なクラスタブートストラッピングを実行した後、elasticsearch-node
detach-cluster
コマンドを実行して、すべての残りのノードを失敗したクラスタから切り離し、新しいクラスタに参加できるようにします:
Txt
node_3$ ./bin/elasticsearch-node detach-cluster
WARNING: Elasticsearch MUST be stopped before running this tool.
You should only run this tool if you have permanently lost all of the
master-eligible nodes in this cluster and you cannot restore the cluster
from a snapshot, or you have already unsafely bootstrapped a new cluster
by running `elasticsearch-node unsafe-bootstrap` on a master-eligible
node that belonged to the same cluster as this node. This tool can cause
arbitrary data loss and its use should be your last resort.
Do you want to proceed?
Confirm [y/N] y
Node was successfully detached from the cluster
Bypassing version checks
elasticsearch-node override-version
コマンドを実行して、データパスに保存されたバージョンを上書きし、ノードがディスク上のデータと互換性がないにもかかわらず起動できるようにします:
Txt
node$ ./bin/elasticsearch-node override-version
WARNING: Elasticsearch MUST be stopped before running this tool.
This data path was last written by Elasticsearch version [x.x.x] and may no
longer be compatible with Elasticsearch version [y.y.y]. This tool will bypass
this compatibility check, allowing a version [y.y.y] node to start on this data
path, but a version [y.y.y] node may not be able to read this data or may read
it incorrectly leading to data loss.
You should not use this tool. Instead, continue to use a version [x.x.x] node
on this data path. If necessary, you can use reindex-from-remote to copy the
data from here into an older cluster.
Do you want to proceed?
Confirm [y/N] y
Successfully overwrote this node's metadata to bypass its version compatibility checks.