概要
Elasticsearchクラスタを立てたので、いい感じにクエリの負荷が分散してほしい。
railsからクエリを投げるシステムを構築しているので、rubyかrailsでそういう便利機能を実装したgemがあるとうれしい。
ロードバランサはいらない?
https://discuss.elastic.co/t/easticesearch/81547/2
「ロードバランサーとかを用意しなくても、大抵のElasticsearchのクライアントライブラリであれば複数のIPアドレスを指定してラウンドロビンでやってくれる」
らしいです。
elasticsearch-ruby
このgemを使ってElasticsearchのクライアントを初期化する際、複数のホストを設定できる。
test.rb
hosts = "192.168.0.3", "192.168.0.4", "192.168.0.5"
@client = Elasticsearch::Client.new(hosts: hosts, randomize_hosts: true)
randomize_hosts
これを入れておくと接続の度にランダムでホストが選ばれるっぽい。
感想
・AWSのVPC上に立てるのであれば、簡単にELBが立ち上がるのでそんなにメリットはなさそう。
・Elasticsearchのクラスタ上にあるホストをアプリケーションが知っていないといけない。
・高度な負荷分散をやってくれるわけではない。