LoginSignup
7
4

More than 3 years have passed since last update.

Elasticsearchノードの役割

Last updated at Posted at 2021-04-14

1.はじめに

この記事では、Elasticsearch Clusterの各ノードに設定するロールについて纏めることを目的とします。
すべてのノードを説明するとキリがないので、Master Node、Data Node、Ingest Node、Coordinating nodeに絞ります。

2.デフォルト設定

 elasticsearch.ymlのnode.rolesを設定することで、Elasticsearchノードの役割(ロール)を設定することができます。もし明示的に設定しない場合は、Elasticsearchはデフォルトで以下の役割を担うことになります。小規模のElasticsearch Clusterであれば、特に設定する必要はないが規模が大きいElasticsearch Clusterを構築する場合はmasterとdataは分けたほうが一般的です。

node.rolesを設定しない場合に設定されるロール
    master
    data
    data_content
    data_hot
    data_warm
    data_cold
    data_frozen
    ingest
    ml
    remote_cluster_client
    transform

3.Master-eligible node

Master nodeとは

クラスタをコントロール(管理・制御)するためのノードです。Elasticsearch Clusterを構築するにあたっては少なくとも3つのMaster-eligible nodeが必要となります。2つの場合はsplit brainの問題が発生するため、クラスタとして機能することができません。Master-eligible nodeのなかから、1台がmaster nodeとして選出され、残りのMaster-eligible nodeはmaster node障害発生に備えたノードとして稼働します。

Master nodeのヘルスチェック

Master nodeは周期的にElasticsearch Clusterを構成する全ノードに対してヘルスチェックを行いいます。ヘルスチェックが失敗した場合は、該当ノードは障害が発生したと判断します。
障害発生時に備えて、過半数以上のMaster-eligible nodeが確認できたときにMaster nodeになるような設定が重要となります。具体的には、discovery.zen.minimum_master_nodeにて、(Master-eligible nodeの数÷2) +1を設定します。

image.png

Dedicated master-eligible node

 masterの役割しか持たないElasticsearchノードをDedicated master-eligible nodeと呼びます。Elasticsearch Clusterの状態を良好に保つには、選出されたMaster nodeが負荷がかかっていないことはとても重要です。従って、大規模なElasticsearch Clusterを構築する場合は、master-eligible nodeには他の機能を担わせないようにすることが(Dedicated master-eligible nodeに設定することが)重要です。

3.Data node

Data nodesは、IndexingされたShardを保持します。Data Nodeはデータ回りのCRUD(create Read Update Delete:Elasticsearchで言うところのserchやaggregation)を実行します。これらの実行には高いI/OやCPUが必要となりますので、高いスペックのHWリソースを適応する必要があります。
もし、multi-tier deployment architectureの概念をData nodeに持たせたい場合は、Data Nodeの役割を具体的に指示します(data_content,data_hot, data_warm, data_cold, or data_frozen)。

4.Ingest Node

 Elasticsearchでのpre-processing pipeline(Indexingを行う前にDocumentの加工整形を行う処理)を行うノードです。大規模なElasticsearch Clusterの場合は、master nodeとData nodeと切り離して、Ingest単体のノードとして構築することが推奨されます。

5.Coordinating Node

SearchやIndexingのリクエストを受け付けるノードです。すべてのノードはCoordinating Nodeの役割を持っています。Disableすることはできません。

6.その他Tips

path_data(elasticsearch.yml)
Masterノード(Dedicated master-eligible nodeであったとしても)もpath.dataを設定する必要があります。Data nodeの場合は、Indexされたデータが格納されますが、Master nodeの場合はクラスタ管理用のメタデータが保存されるためです。

discovery.seed_hosts,cluster.initial_master_nodes(elasticsearch.yml)
master-eligible nodeのみを設定します。Data nodeの宛先は設定しません。

elasticsearch.hosts(kibana.yml)
HTTPリクエストを受けるノードを記載します。リクエストを受けつけるのはcoorginating nodeのため、Elasticsearch Clusterを構成するすべてのノードを記載しても問題ないと思います。

インスタンスタイプ
AWSで構築する場合のインスタンスタイプのお勧めは、ここに記載があります。

7
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
4