LoginSignup
19
23

More than 3 years have passed since last update.

1-Elasticsearchについて

Last updated at Posted at 2018-04-29

はてなブログに投稿しましたが、こちらにも記述します。

Elasticsearchについて構築方法の前に詳細を記述したいと思います。

Elasticsearchの構成要素について

https://www.elastic.co/guide/en/elasticsearch/reference/current/_basic_concepts.html

image.png

(1)インスタンス(instance)
 RHELなどのOSと同義です。
 インスタンス名=ホスト名です。

(2)ノード(node)
 Elasticsearchのプロセス(JVM)です。1インスタンスの中に複数のノードを起動することができます。
 ノード名=プロセスを識別するためのタグです。
 ノードについては別途記述します。

(3)シャード(shard)
 Elasticsearchに保存されたデータ(インデックス)を分割し、分散配置したものです。
 データ保護の仕組みから主データ(プライマリ)と複製データ(レプリカ)のセットで分散配置できたりします。
 プライマリデータが破損した場合はレプリカデータからデータの復元が可能です。
 デフォルトは5プライマリ/1レプリカです。
 シャード数は600shards/nodeが推奨、多くても1,000shardsを超えないように推奨されています。

(4)インデックス(index)
 図には記述していませんが、Elasticsearchに保存するデータのことをインデックスと呼びます。

(5)クラスタ(cluster)
 複数のノードをまとめて1つのElasticsearchと見せるものです。
 複数のノードをまとめることが出来ます。

ノードについて

ノードについてさらに詳しく解説します。

https://www.elastic.co/guide/en/elasticsearch/reference/current/modules-node.html

ノードの種類

ノードは4つに分割されます。

(1)マスター適格ノード(Master-eligible node)
 マスター適格ノードの中から1台マスターノード(Master node)が自動的に選出されます。
 残りのマスター適格ノードはマスターノード障害に備えたノードとして存在します。
 マスターノードはElasticsearchの管理・制御を実施します。

(2)データノード(Data node)
 データを格納するノードで、このノードが複数存在することにより分散配置が可能となります。
 さらにHot/Warmという分類があり、階層化的な?ことを出来るようです。(ここはよく理解していないです。。)

(3)クライアントノード(Ingest node)
 日本語名はちょっと怪しいですが、こちらのノードはAPIを受け付ける専用のノードとなります。

 そのため、管理やデータの保管などはしません。
 APIの発行やKibanaからの接続先はこのノードを指定します。マスターノードやデータノードはそれぞれの役割に専念させるため、API等の受け口にしないことが推奨されています。

(4)調整ノード(Tribe node)
 日本語名は適当につけました。。。複数クラスタ構成で利用するノードのようです。
 まだシングルクラスタしか経験がないため、本ノードについては理解もしていません。。。。

Javaヒープサイズについて

https://www.elastic.co/guide/en/elasticsearch/reference/current/heap-size.html

まず、物理メモリの半分以下をElasticsearchに割り当てるのが推奨です。
OSでスワップを無効にするか、コンフィグファイルや起動パラメータでスワップを無効にするのが推奨です。
最小値と最大値の記述を行うのですが、どちらも同じ値を入れるのが推奨のようです。
ノードの種類によって割り当てるメモリサイズが異なります。

(1)マスター適格ノード(Master-eligible node) 及びマスターノード(Master node)
 4~8GBを割り当てます。

(2)データノード(Data node)
 30GB以下の割り当てが良いようです。

(3)クライアントノード(Ingest node)
 4~8GBを割り当てます。

通信ポートについて

Elasticsearchの通信には2種類存在します。
image.png

(1)ノード間の通信
 Elasticsearchの分散配置処理などはTransportという内部通信ポートでやり取りをしています。
 X-Packの有償版を導入するとこの通信を暗号化することができます。
 ポートは9300~9400ポートが利用され、特に指定をしないとElasticsearchがポートの割付をしてくれます。
 https://www.elastic.co/guide/en/elasticsearch/reference/current/modules-transport.html

(2)外部からの通信
 APIやKibanaからの接続をhttpポートで受け付けます。
 X-Packの有償版を導入するとこの通信を暗号化することができます。
 ポートは9200~9300ポートが利用され、特に指定をしないとElasticsearchがポートの割付をしてくれます。
 https://www.elastic.co/guide/en/elasticsearch/reference/current/modules-http.html

19
23
3

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
19
23