2

次のアーキテクチャを持つ AWS で実行されている Web アプリケーションがあります。

  • 2 つのデータ ノードを持つ 1 つの ElasticSeach クラスター
  • ウェブサーバーの 1 つの自動スケーリング負荷分散クラスター

Elasticsearch は巧妙な内部負荷分散を行うため、すべての Web サーバーをデータ ノードの 1 つに向けることができます。しかし、これにより単一障害点が作成されます。そのノードがダウンすると、クエリ結果が得られなくなります。

これまでの私の解決策は、elasticsearch を各 Web サーバーで非データ ノードとして実行することでした。各 Web サーバーは、そのローカルの Elasticsearch ノードにクエリを実行し、次に、その要求をデータ ノードの 1 つにファームします。これはelasticsearch Webサイトで提案されているアプローチのようです

これは、データ ノードの 1 つに何らかの障害が発生した場合でも、検索クエリを提供する機能が失われないという点で優れています。ただし、これは、elasticsearch が各 Web サーバーのリソースを使用していることを意味します。Elastic Beanstalk を使用するように移行する場合 (私はこれをやりたいと思っています)、elasticsearch を Web インスタンスにインストールする方法が必要になります。編集:私はこれで成功しましたが、環境ごとに異なる構成を指定する方法をまだ理解していません。

各Webサーバーでelasticsearchを実行せずに単一障害点を回避する別の方法はありますか?

データ ノードの前にロード バランサーを使用して Web サーバーからのクエリを処理することも考えましたが、これは、VPC を設定してアクセスを制限することなく、クラスターをパブリック アクセスに開放することも意味します。

私が見逃しているより簡単な解決策はありますか?

4

1 に答える 1

0

これがあなたの質問に直接答えているとは思いませんが、Web サーバーノードで ES を実行しても問題ない場合は、.ebextensions メカニズムを使用してインストールされているソフトウェアをカスタマイズできます。これにより、スクリプトを実行したり、インストールしたりできます。新しい Elastic Beanstalk インスタンスが起動されたときのパッケージ。これでは不十分な場合は、カスタム AMI を使用して Elastic Beanstalk インスタンスを開始できます。

また、VPC で Elastic Beanstalk を実行できることに気付いていないかもしれません。

于 2013-09-18T04:13:00.267 に答える