Easticesearch:クラスタの負荷分散について

お世話になっております。

クラスタの環境を構築中ですが、負荷分散についてご意見頂きたいです。

下記のどちらかでクラスタを組もうとしておりますが、それぞれどういったメリット/デメリットがあるでしょうか?

他の組み方もあるかもしれませんが、その場合は、合わせて他の方法を教えて頂けますと助かります。(当方がネットの記事を見ながら、参考にした構成です)

・2台のクラスタ構成(どちらもマスタノード)
-> アプリからマスタノード1台に対して、Read/Writeの全リクエスト、そこから他1台へ分散
-> この場合、1台には全てリクエストされるため、負荷が気になります

・3 or 4台のクラスタ構成(全てマスタノード)
-> ラウンドロビンで全ノードにRead/Writeのリクエスト
-> スプリットブレイン対策で、"discovery.zen.minimum_master_nodes"は2 or 3に設定
-> 負荷は分散され、こちらの構成の方が良い気もしています。(台数が増えるため、費用を考える必要はあります)

マスタノードとデータノードに分ける方法もありますが、費用の兼ね合いで全てマスタノードで考えております。

もし、マスタノード、データノードはわけるべき、といったご意見もありましたら、ご教示頂けますと幸いです。

2台の構成でどちらもマスターノードでデフォルトだとSplit brainになるのでメリットはありません。
https://www.elastic.co/guide/en/elasticsearch/reference/5.3/modules-node.html#split-brain
最悪でも、minimum_master_nodesを2に指定する必要があるかと思います。
ただし、この場合は、1台でも停止したら、データの登録などはできなくなります。
2台構成でもラウンドロビンにする方が良いかと思います。

データの件数にもよりますが、もちろん、台数が多い方が対処できるデータ量が増えます。
あとは、この辺りも参考になるかもしれません。
https://www.elastic.co/guide/en/elasticsearch/guide/2.x/replica-shards.html

ご確認ありがとうございます。

2台構成でもラウンドロビンにする方が良いかと思います。

承知しました。

ロードバランサ(ELBなど)による負荷分散でも良いかと思いますが、ラウンドロビンの方が良い理由はありますでしょうか?

ロードバランサーとかを用意しなくても、大抵のElasticsearchのクライアントライブラリであれば複数のIPアドレスを指定してラウンドロビンでやってくれるからでしょうか?
特に必要ないかなという意味です。

理解しました。

ご提示頂いたリンクも参考に、環境構築、検証してみます。

ありがとうございます。

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.