インフラ

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

aws es 推奨

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

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

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

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

Contents

推奨構成

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

データノード × 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週間で取るよう言われました。 ...
es workshop
Amazon Elasticsearch Service Intro Workshopをやってみたこんにちは、ちゃりおです。 最近ElasticsearchServiceを触る機会があり、チュートリアル的なものをやりたいと思っていま...
AWS re:Invent2019 筋肉エンジニアのためのレポートこんにちは、ちゃりおです。 AWS re:Invent2019に参加してきました。 会社のブログで真面目な記事を書いたので、自分のブロ...