・インスタンス数の最大値は、AWSのElasticSearchはリージョンごとのAZ数となる。(1-AZ、2-AZ、3-AZで選択可能)
・AZ間で冗長化とイメージしがちだが、ElastiSearchはインデックスのレプリカ数で決まるため、AZ数やインスタンス数=冗長化数ではない。
・データノードは各AZに分散して配置されるため、AZ数の倍数が良い。
・データノードはインデックスにデータを格納し、インデックス作成とクエリのリクエストを処理する。
・専用マスターノードを作成しないと、データノードのうち何れかがマスターノードとなる。
https://aws.amazon.com/jp/blogs/news/best-practices-for-configuring-your-amazon-elasticsearch-service-domain/
https://docs.aws.amazon.com/ja_jp/elasticsearch-service/latest/developerguide/es-managedomains-multiaz.html
専用マスターノードは以下の管理タスクをデータノードから分離することで、ドメインの安定性を向上させます。
データノードがクエリのリクエストの処理に集中できるようにするんですね。
・クラスター内のすべてのノードを追跡する
・クラスター内のインデックスの数を追跡する
・各インデックスに属するシャード数を追跡する
・クラスター内のノードのルーティング情報を保持する
・クラスター内のインデックス作成やノードの作成/削除など、状態が変化したときにクラスターの状態を更新する
・クラスターの状態に施された変更を、クラスター内のすべてのノードにわたって複製する
・クラスター内のデータノードの可用性を監視するハートビートシグナル (定期的なシグナル) を送信することで、すべてのクラスターノードの状態を監視する
※AZ障害時のダウンタイムの発生有無については、以下を参照すること。
https://docs.aws.amazon.com/ja_jp/elasticsearch-service/latest/developerguide/es-managedomains-multiaz.html#es-managedomains-za-summary
プライマリシャード、レプリカシャードがあり、シャード数はノードをいくつに分割するかで決まる。
・プライマリシャード:レプリカを作成したオリジナルのシャード
・レプリカシャード:プライマリシャードから作成されたシャード
・インデックスは、データノードに跨って配置される。
・シャードはインデックス内のデータを分割した単位。(分割数=シャード数)
・データノードに分散して配置される。(配置される数=レプリカ数)
下記は実際に配置してみた状態、どういった規則でシャードが配置されるかは不明(今度AWSに聞いてみる、ノードがどこのAZに配置されているかも知りたい。)
→インスタンス (データノード) と AZ の対応付けは利用者は知ることはできないが、「シャードは各AZに分散される」ことが“期待される”とのこと。
https://docs.aws.amazon.com/ja_jp/elasticsearch-service/latest/developerguide/es-managedomains-multiaz.html
インデックス名はJSONファイルの中身で指定するわけでなくURIで指定するAPIなんですね。
# コマンドプロンプト curl -X PUT {ElasticSearchドメイン}/{インデックス名} -d @ElasticSearch.json -H "Content-type: application/json" # Powershell Invoke-WebRequest -Method PUT {ElasticSearchドメイン}/{インデックス名} -InFile 'ElasticSearch.json' -H @{'Content-type' = 'application/json'}
シャードとレプリカを指定
{ "settings": { "index" : { "number_of_shards": 1, "number_of_replicas": 2 } } }