調整するノードのみがスマート ロード バランサーとして機能します。コーディネーター専用ノードのこの特別な役割は、データ ノードとマスター ノードの調整責任を軽減することで、幅広いクラスターに利点をもたらします。クラスターに参加した後、これらのノードは他のノードと同様に完全なクラスター状態を取得し、この情報を使用してリクエストを適切な宛先に効率的に送信します。
Elasticsearch クラスターにコーディネーター ノードを追加することは、クラスターのパフォーマンスと効率を向上させるための戦略的な動きとなる可能性があります。調整ノードはクライアント ノードとも呼ばれ、本質的にはデータの保存や計算の実行を行わない Elasticsearch ノードです。これらの主な役割は、クライアントからの検索およびインデックス作成リクエストを適切なデータ ノードにルーティングし、応答を集約することです。
調整ノード
検索リクエストやバッチ インデックス作成リクエストなどのリクエストには、異なるデータ ノードに保持されているデータが含まれる場合があります。たとえば、検索リクエストは 2 つのフェーズで実行され、クライアント リクエストを受信するノード (調整ノード) によって調整されます。データのインデックス作成方法については、記事「Elasticsearch: データのインデックス作成方法」を参照してください。データの読み取り方法については、記事「Elasticsearch: データはどのように読み取られるのか?」を参照してください。
分散化フェーズ中、調整ノードはデータを保持するデータ ノードにリクエストを転送します。各データ ノードはリクエストをローカルで実行し、その結果を調整ノードに返します。収集フェーズ中に、調整ノードは各データ ノードの結果を単一のグローバル結果セットに縮小します。
各ノードは暗黙的な調整ノードです。これは、node.roles を介して明示的に空のロール リストを持つノードは調整ノードとしてのみ機能し、無効にすることはできないことを意味します。したがって、このようなノードには、収集フェーズを処理するのに十分なメモリと CPU が必要です。
詳細な資料:ノード | Elasticsearch ガイド [8.10] | Elastic
クラスターへのコーディネーター ノードの追加を検討する必要があるいくつかのシナリオを次に示します。
- 高いクエリ負荷: クラスターで高いクエリ負荷が発生している場合は、コーディネーター ノードを追加すると、負荷をより均等に分散できます。調整ノードはクエリの分散と結果の集約のタスクを処理できるため、データ ノードはクエリの実行に集中できます。
- 複雑な集計: ユースケースに複雑な集計が含まれる場合は、コーディネーター ノードが役立つ可能性があります。集約はリソースを大量に消費する可能性があるため、この作業を調整ノードにオフロードすると、パフォーマンスの向上に役立ちます。
- 多数のインデックスまたはシャード: クラスターに多数のインデックスまたはシャードがある場合、リクエストをルーティングするタスクが非常に複雑になる可能性があります。調整ノードを追加すると、この複雑さを管理し、リクエストのルーティングをより効率的にすることができます。
- クライアント接続数が多い: クラスターに接続しているクライアントが多数ある場合、コーディネーター ノードを追加すると、それらの接続をより効率的に管理できるようになります。コーディネーター ノードはクライアント接続を処理できるため、データ ノードはリクエストの処理に集中できます。
- ハイブリッド クラウドまたはマルチリージョン展開: ハイブリッド クラウドまたはマルチリージョン展開では、コーディネーター ノードを使用して、データの場所やネットワーク遅延などの要因に基づいて、リクエストを適切なデータ ノードにルーティングできます。
コーディネーター ノードを追加する前に、クラスター リソースへの影響を考慮する必要があります。調整ノードには CPU、メモリ、ネットワーク帯域幅が必要なため、クラスタに他のノードをサポートするのに十分なリソースがあることを確認する必要があります。
また、コーディネーター ノードの追加がすべてのパフォーマンスの問題を解決する万能薬ではないことにも留意してください。クラスターのパフォーマンスを監視し、必要に応じて調整を行うことが重要です。
ここにいくつかの質問と回答があります
Q: Elasticsearch のコーディネーター ノードとは何ですか?
回答: コーディネーター ノードはクライアント ノードとも呼ばれ、データを保存したり計算を実行したりしないノードです。その主な役割は、クライアントからの検索およびインデックス作成リクエストを適切なデータ ノードにルーティングし、応答を集約することです。
Q: クラスターへのコーディネーター ノードの追加を検討する必要があるのはどのような場合ですか?
回答: クラスターで高いクエリ負荷が発生している場合、ユースケースに複雑な集計が含まれる場合、クラスターに多数のインデックスまたはシャードがある場合、クラスターに接続しているクライアントが多数ある場合は、コーディネーターの追加を検討する必要があります。ノード、またはハイブリッド クラウドまたはマルチリージョン展開を実行している場合。
Q: コーディネーター ノードはクラスターのパフォーマンスをどのように向上させますか?
回答: コーディネーター ノードは、リクエストのルーティングとデータ ノードからの応答の集約のタスクをオフロードすることで、パフォーマンスを向上させることができます。これにより、データ ノードはクエリの実行に集中できるようになり、応答時間が短縮されます。
Q: 調整ノードにはどのようなリソースが必要ですか?
回答: コーディネーター ノードはデータ ノードよりも少ない DISK、CPU、RAM を必要とします。
Q: ノードをいくつ追加した後、Elasticsearch クラスターにコーディネーター ノードを追加することを検討する必要がありますか?
A: コーディネーター ノードを追加するかどうかの決定は、クラスター内のノードの数に厳密には基づいていません。それより重要なのは、クラスターのワークロードとパフォーマンスです。クラスターで高いクエリ負荷、複雑な集計、多数のインデックスまたはシャード、または多数のクライアント接続数が発生している場合は、コーディネーター ノードを追加すると役立つことがあります。ただし、一般的なガイドラインとして、クラスターが 10 ~ 20 ノードを超えて拡大すると、コーディネーター ノードの追加を検討し始める可能性があります。クラスターのパフォーマンスを監視し、必要に応じて調整を行うことが重要であることに注意してください。