インフラ

Amazon ElasticSearch Searviceの推奨構成について

aws es 推奨

こんにちは、ちゃりおです。

AWSのElasticSearchを使っているのですが、たまにトラブルが発生していました。
(データノードに障害あって一時的にダウンタイム発生など)

色々調べているうちに、運用している環境が本番で推奨される構成
を満たしていないのがわかってきました。

今回は、AWSのドキュメントから本番で使うElasticSearchの推奨構成について調べてみました。

推奨構成

公式ドキュメントに詳細が載っているので、最低限知っておきたいことを書きます。

データノード × 3
専用マスターノード × 3

datamaster

データノード

データノードはデータを保持し、CRUD、検索、集計などのデータ関連の操作を実行します。
ElasticSearch Node

必要なノードの数は実際にテストしながら決めることになると思います。

冗長化の観点からは3つはあったほうが良さそうです。

少なくとも 3 つのノードを使用する

意図しないネットワークのパーティション化 (スプリットブレイン) を回避するには、少なくとも 3 つのノードを使用します。データ損失の可能性を回避するには、インデックスごとに少なくとも 1 つのレプリカがあることを確認します。(デフォルトでは、各インデックスに 1 つのレプリカがあります。)

インスタンスサイズは、Mクラス以上が推奨されています。

Amazon Elasticsearch Service ドメインの耐障害性を高めるにはどうすればよいですか?
Get Started with Amazon Elasticsearch Service: How Many Data Instances Do I Need?

専用マスターノード

Amazon Elasticsearch Service では、クラスターの安定性を向上するために専用マスターノードを使用します。専用マスターノードではクラスター管理タスクを実行しますが、データは保持せず、データのアップロードリクエストにも応答しません。このように、クラスター管理タスクをオフロードすると、ドメインの安定性が向上します。
本番稼働用 Amazon ES ドメインには、専用マスターノードを 3 つ割り当てることをお勧めします。

専用マスターノードは、クラスターの安全性を高めます。

ドメインの変更時に、BlueGreenデプロイメントが行われるのですが
この際に専用マスターノードがないとデータノードの特定のデータノードの負荷があがります。

専用マスターノードがあるとドメインの変更時に、専用マスターノードで処理されるのでデータノードに
負荷を与えることなくドメインの変更を行うことができます。

クォーラムの関係で、冗長化には最低でも3台必要になります。

最小構成で(インスタンス数1~10)、インスタンスタイプは「c5.large.elasticsearch」が推奨されています。

専用マスターノード

料金

本番推奨最小構成の場合の月額。(2020/02/11時点)
EBSの料金はインスタンスの料金に比べて、安いので割愛します。

データノード: m5.large × 3 $306.72
専用マスターノード: c5.large × 3 $270
合計: $576.72

約6万くらいですね。

まとめ

AWSのドキュメントを参考にElasticSearchの推奨構成について調べました。
本番でElasticSearchを運用する際の参考になればと思います。

ElasticSearchについて理解が浅いので、公式ドキュメントで勉強しようと思います。

aws saa
AWS初心者が3週間でAWSソリューションアーキテクト(SAA)を取った勉強法こんにちは、ちゃりお(@chari7311)です! 以前社内の事情でAWSソリューションアーキテクトを3週間で取るよう言われました。 ...
albデフォルトアクション -min
[AWS初心者向け]初めてALBを使うときに知っておきたいデフォルトアクションのことこんにちは、ちゃりおです。 ALBのリスナールールのデフォルトアクションについてです。 手動で作るときに、デフォルトアクションで気をつ...
AWS re:Invent2019 筋肉エンジニアのためのレポートこんにちは、ちゃりおです。 AWS re:Invent2019に参加してきました。 会社のブログで真面目な記事を書いたので、自分のブロ...