moved to https://github.com/yano3/kankara/blob/master/elasticsearch/cluster.md
- ノード
- 起動した Elasticsearch のインスタンス
- 普通は1台のサーバに1インスタンス起動するので、 Elasticsearch の起動しているサーバのイメージ
- クラスタ
- 相互に接続したノードの集合
緑の本に詳しく書いてある。
- RDB でいうところのテーブル
- インデックスを分割したもの
- プライマリシャードとレプリカシャードがある
- プライマリシャードは更新操作を受ける
- レプリカシャードはプライマリシャードのコピー
- シャード単位でノード上に配置される
ここに詳しく書いてある。ノードにはいくつかの種類がある。
- Master node はクラスタ全体の処理(シャードの配置等)を行うノード
- Master eligible node は master に候補になるノード
- Master node が死んだときには master eligible node から新たな master が選ばれる
- シャードを保管するノード
- データにまつわる操作 (CRUD, search, etc...) を扱う
- Master eligible node でも data node でもないノード
- 各種リクエストを受けるだけのロードバランサー的な何か
- 略
小規模なクラスタなら Master eligible node 兼 Data node のノード * n台で構成できる。
ここに詳しく書いてある。
- インデックスが持つプライマリシャードの数。
- インデックス作成時に設定。インデックス作成時以外変更不可。
- プライマリシャードが持つレプリカシャードの数。
- いつでも変更できる。
- スケールアウトしていく場合、
number_of_shards * (1 + number_of_replicas)
以上のノード (data node) にはシャードが配置されず無意味になるので、設定を決めるときに考慮する必要がある。 - レプリカシャードは自身のプライマリシャードや同じプライマリシャードを持つレプリカシャードと同一ノードには配置されない。
- ここに詳しく書いてある。
- API
http://elasticsearch_host/_cluster/health
green
: すべてのシャードがクラスタ上に配置されている。yellow
: プライマリシャードはクラスタ上に配置されているが、配置されていないレプリカシャードが存在している。red
: (プライマリもレプリカも)クラスタ上に配置されていないシャードが存在している。