web-dev-qa-db-ja.com

Elastic Searchは、分散メンバーシップとコンセンサスの問題にどのように取り組みますか?

ESインスタンスのクラスターに複数のノードを含めることができるという点で、Elastic Searchは分散トポロジでデプロイされることになっています。

私はAPIが好きで、有望に見えます。しかし、Elastic Searchが分散コンピューティングにおけるいくつかの標準的な問題をどのように解決するのでしょうか。私の「建築」の質問は、私が製品の使用に専念すべきかどうかを理解しようとすることに動機づけられています。

メンバーシップの問題を検討してください。クラスターにノードを追加した場合、Elastic Searchクラスターはそのノードを追加したいことをどのようにして知りたいですか?または、ノードがダウンした場合(またはノードが含まれているデータセンターへのネットワーク)が不安定になりすぎた場合Amazon Dynamoのようなゴシッププロトコルを使用していますか?

コンセンサスの問題を考えてみます。私がPOSTドキュメントをクラスタの1つのノードに送ると、変更は他のノードにどのように伝達されますか?もちろん、ドキュメントにインデックスを付ける必要があることを理解しています。そのため、検索クエリがすぐにそれを見つけることは期待できません。ESはPaxosアルゴリズムを使用していますか?Raftアルゴリズム?

6
Alan

オンラインには信じられないほどの詳細情報はありません Elasticsearch:The Definitive Guide ですが、次の点については十分です。

  1. クラスターメンバーシップ:最も古いノードが「マスター」になり、ノードがクラスターに参加したりクラスターから離脱したりするときに、ある種のゴシッププロトコルが使用されているように見えます。
  2. マスターがクラスター(私が自分で試した)を離れると、リーダーシップの選挙が行われます。 Elastic Searchは、これをどのように実現するかについて述べておらず、ユーザーのためにカプセル化したままにしておきたいと考えています。
1
Alan

大規模なクラスターのスプリットブレインの問題、いわゆるdiscovery.zen.*パラメーターを減らすために、サーバー構成に適用できるいくつかの微調整もあります。

ESの内部の仕組みやアルゴリズムについてはそれほど多くの情報はありませんが、評価中に見つけたのはサーバーのセットアップに関するリファレンスドキュメントでした。

特に、ESの良い点は、インストールのelasticsearch.ymlディレクトリにある単一のファイル./configを介してほとんどすべてのサーバー構成が行われることです。

それで、私は セットアップ構成 から始めて、あなたのインストールで実際の.ymlを開き続けます。それは本当によくコメントされており、多くのこと(スプリットブレインの問題を解決するために使用される「zen」パラメーターを含む)とWebページへのクロスリンクについて説明しています。

1
A. Chiesa