Elasticsearch クラスターには複数のノードが含まれることが多く、状況によってはクラスターからノードを削除する必要があります。このプロセスは、データの整合性と可用性を確保するために慎重に実行する必要があります。この記事では、Elasticsearch クラスターからノードを安全に削除する手順を説明します。
クラスターが緑色であることを確認してください
Elasticsearch クラスターからノードを削除する前に、クラスターが正常な状態 (「緑色」ステータスで示される) であることを確認することが重要です。緑色のクラスターは、すべてのプライマリ シャードとレプリカ シャードが割り当てられており、Elasticsearch がスムーズに実行されていることを意味します。クラスターのステータスを確認するには、次の Elasticsearch API 呼び出しを使用できます。
GET _cluster/health
削除プロセスを続行する前に、応答の「ステータス」フィールドが「緑色」であることを確認してください。クラスターのステータスが「黄色」または「赤色」の場合は、シャードの分散に問題があることを示しており、最初にこれらの問題を解決する必要があります。
シャードを他のノードに移動する
Elasticsearch クラスターからノードを安全に削除するには、そのシャードを他のノードに再配布する必要があります。これは、クラスター データの可用性と信頼性を確保するための重要な手順です。削除対象のノードを除外するには、次の Elasticsearch API 呼び出しを使用します。
PUT _cluster/settings
{
"transient": {
"cluster.routing.allocation.exclude._ip": "10.0.0.1"
}
}
「10.0.0.1」を削除するノードの IP アドレスに置き換えます。
このコマンドは、ディスク使用量やノードの詳細など、シャード割り当てに関する情報を表示します。すべてのシャードが他のノードに割り当てられ、削除しようとしているノードがシャードをホストしていないことが確認できたら、安全にノードの削除を続行できます。
ただし、IP アドレスによる除外だけがフィルタリングの方法ではありません。実際、除外に使用できる属性は多数あります。
以下にリストを示します。
- _name: ノード名でノードを照合できます。
- _host_ip: ホスト IP アドレスによってノードを照合できます (IP はホスト名に関連付けられます)。
- _publish_ip: IP アドレスを公開することでノードを照合できます
- _ip: _host_ip または _publish_ip と一致させることができます
- _host: ホスト名でノードを照合できます
- _id: ノード ID によってノードを照合できます。
- _tier: ノードはデータ層の役割によって照合できます
配布プロセスを監視する
すべてのシャードが他のノードに正常に再配置されたことを確認するには、割り当てプロセスを厳密に実行する必要があります。Elasticsearch cat API を使用すると、次のようにこれを行うことができます。
GET _cat/allocation?v
このコマンドは、ディスク使用量やノードの詳細など、シャード割り当てに関する情報を表示します。すべてのシャードが他のノードに割り当てられており、削除するノードがシャードをホストしていないことが確認できたら、安全にノードの削除を続行できます。
他のノードに対して手順を繰り返します
Elasticsearch クラスターから複数のノードを削除する場合は、クラスターから削除するノードごとに手順 2 と 3 を繰り返します。この段階的なアプローチにより、削除プロセス全体を通じて Elasticsearch クラスターの安定性と可用性が維持されます。
結論は
Elasticsearch クラスターからのノードの削除は、慎重な計画と実行を必要とするデリケートな操作です。このガイドで概説されている手順に従うことで、シャードを安全に再割り当てし、割り当てプロセスを監視し、データの整合性を維持することができます。変更を加える前に、必ず Elasticsearch のドキュメントを確認し、クラスター固有のニーズを考慮してください。ノードの削除などのクラスター操作を適切に管理することは、Elasticsearch デプロイメントの信頼性とパフォーマンスを継続的に確保するために重要です。
続きを読む: Elasticsearch: クラスターレベルのシャード割り当てフィルタリングを使用してノードを安全に廃止する方法 (ノードを除く)