ロードバランサー不要!複数のElasticsearchクライアントノードへ接続する方法
2017年11月10日に ObjectRocket.com/blog で初公開された記事です。
Rackspace ObjectRocket for Elasticsearch® のすべてのクラスターには、複数のクライアントノードが標準で含まれています。そのため、お客様からよくいただく質問の一つが「すべてのクライアントノードに接続するためのロードバランサーを提供しないのはなぜか」というものです。
環境によっては、単一ノードへの単一接続をクラスター全体の障害点と捉える方もいるかもしれません。確かに、ロードバランサーは接続プールの管理に有効な場合もあります。しかし、Elasticsearchはそもそもロードバランサーなしで動作するよう設計されています。本記事では、提供されているすべてのクライアントノードをElasticsearchで活用する方法を詳しく解説します。
Pythonでの設定例
まずはPython®での設定例を見てみましょう。
from elasticsearch import Elasticsearch
Import certifi
es = Elasticsearch(['dc-port-0.es.objectrocket.com', 'dc-port-1.es.objectrocket.com', 'dc-port-2.es.objectrocket.com', 'dc-port-3.es.objectrocket.com'],
http_auth=('YOUR_USERNAME', 'YOUR_PASSWORD'),
port=12345,
use_ssl=True,
verify_certs=True,
ca_certs=certifi.where(),
)
最初の引数に注目してください。Elasticsearchはホストのリストを受け入れる仕様になっています。つまり、クライアント側だけで冗長化された接続設定を完結できるのです。Beatsなどの他のツールでも同様の設定が可能です。設定ファイルの記述例は以下の通りです。
output:
elasticsearch:
hosts: ["https://dc-port-0.es.objectrocket.com:port", "https://dfw-port-1.es.objectrocket.com:port", "https://dfw-port-2.es.objectrocket.com:port", "https://dfw-port-3.es.objectrocket.com:port"]
# HTTP basic auth
username: "YOUR_USERNAME"
password: "YOUR_PASSWORD"
現在利用可能なツールやクライアントの大半は、複数ホストの指定に対応しています。お客様の作業負担を軽減するため、ObjectRocketのUIには、Python®、Ruby、C#、Java®、Javascript®、Go、Logstash、Beats向けの接続コードスニペットをあらかじめ用意しています。使用中のテクノロジーを選択すれば、ホスト名が入力済みのスニペットをすぐにコピーして利用できます。
複数ホストを受け付けないアプリケーションへの代替策
一部のアプリケーションでは、ホストのリストを指定できません。最も代表的なのがKibana®で、こちらは単一ホストのみを受け付けます。こうした場合に使える回避策をいくつか紹介します。
アプリケーションの各部分を別々のクライアントに向ける
ミッションクリティカルではない用途やアプリケーションであれば、単一のクライアントノードに接続しても問題ありません。リクエスト率が極端に高くない限り、1つのクライアントで十分に負荷をさばけます。同種のアプリケーションが複数ある場合は、それぞれを異なるクライアントノードに振り分けることで、自然に負荷分散を実現できます。
ローカル側でロードバランシングを構成する
クライアントやアプリケーションが複数ホストに対応しておらず、かつ接続の冗長性がどうしても必要というケースでは、ローカル環境でロードバランシングを構成する方法があります。nginx®やHAProxy®などを利用するほか、DNS(ドメインネームシステム)でElasticsearchクライアント間をラウンドロビンするローカルホスト名を設定するのも有効です。このような対応が必要になるケースは実際にはごくわずかですが、いざというときの解決策は用意されています。
まとめ
ほとんどすべてのシナリオでは、負荷分散を自動的に担ってくれるホストのリストを指定するだけで済みます。それでも対応できない特殊なケースに備えて、ローカルでロードバランシングを構成する手法も覚えておくと安心です。
Rackspace DBA Servicesの詳細については、ぜひ公式サイトをご確認ください。
コメントやご質問がある場合は、フィードバックタブからお気軽にお寄せください。Sales Chatをクリックすれば、今すぐチャットで相談を始めることもできます。
-
Windows 10でマルチディスプレイを設定する方法|接続・表示設定・カスタマイズまで徹底解説
1台のモニターだけでは作業しづらいと感じたら、追加のディスプレイを導入することで生産性を高め、時間を大幅に節約できます。 プログラマー、グラフィックデザイナー、データアナリスト、あるいはデスクトップPCを日常的に使う方にとって、2画面は1画面よりも圧倒的に快適です。マルチモニター環境はマルチタスクを格段にしやすくするため、実用性の高さが大きな魅力となっています。 複数のタブを行き来したり、ウィンドウを最小化しては開いたりする作業は、切り替えに時間がかかり非効率になりがちです。しかし、複数の画面があればこうした問題は簡単に解消できます。これは生産性向上への確実な近道であり、さらに専用ツールを使え
-
ソフト不要!Windowsで複数ファイルを一括リネームする2つの簡単な方法
ファイルを他のファイルと区別するために、名前を変更したい場面があるでしょう。1つのファイルのリネームなら、右クリックして「名前の変更」を選択するだけで簡単に行えます。しかし、複数のファイルを一度に名前変更するのはそう簡単ではありません。 この記事では、専用のサードパーティ製ソフトやアプリを使わずに、複数のファイルをまとめてリネームできる簡単な方法を2つご紹介します。 方法1:複数ファイルを選択して一括リネームする 最も手軽なのが、Windowsの標準機能を使った一括リネームです。以下の手順で操作してください。 Ctrlキーを押しながらクリックで、名前を変更したいファイルをすべて選択します。