はじめに

Verticaはマスターノードが不要なMPPアーキテクチャを採用しており、各ノードで処理を分散しますが、クライアントからの接続を受け付けるノード(イニシエータ)は、残りのノード(エグゼキュータ)と比較して、負荷が上がる傾向にあります。この負荷を分散するために、Verticaにはクライアント接続のロードバランス機能があります。

ロードバランス方式

ロードバランスには以下の2種類の方式があり、任意の方式を選択することができます。
項目内容
ラウンドロビン各ノードは順番にイニシエータノードの役割を割り振られます。
ランダム各ノードはランダムにイニシエーターノードの役割を割り振られます。


例えば、3ノード構成でラウンドロビン方式を選択した場合は、以下のように動作します。


▼最初の接続
【1】クライアントは接続先として指定したノード①に接続します。
【2】ノード①がイニシエータとなり処理が行われます。

▼2回目の接続
【1】クライアントは接続先として指定したノード①に接続します。
【2】ノード①はクライアントにノード②のIPアドレスを返却します。
【3】クライアントはノード②のIPアドレスに接続します。
【4】ノード②がイニシエータとなり処理が行われます。

このように、クライアントは最初の接続は常にノード①に対して行われます。そこで指定されたIPアドレスのノードに接続して処理を行うことで、ロードバランスを実現しています。

なお、クライアント側でノード②をバックアップ接続先として指定している場合、ノード①がダウンしても、ノード②が起点となってノード②~③間でロードバランスを継続できます。

Verticaのロードバランス機能は、ODBC接続、JDBC接続、ADO.NET接続で利用できます。
設定は、データベース側とクライアント側のそれぞれで行います。
ロードバランスの具体的な設定手順は「ロードバランスの設定方法」を参照してください。


注意点

ロードバランスを利用する上で、以下の点について、ご注意ください。
・ノードの負荷状況に応じて、接続先を自動的に変更する機能ではありません。
・ロードバランスは、データベース側とクライアント側の両方で設定しないと有効になりません。

【参考】
以下は、データベース側とクライアント側のロードバランス設定による、各ノード毎の接続数を示しています。両方で設定をしないと接続が分散されないことがわかります。

注意事項_図3
* 3ノード構成に対して、JDBCドライバ経由で同時100多重でSQLを実行しました。
* 各ノード毎の接続数は、以下のSQLで確認しています。


参考情報

ロードバランスの設定方法
http://vertica-tech.ashisuto.co.jp/load-balance_configuration

Connection Load Balancing
https://www.vertica.com/docs/9.2.x/HTML/Content/Authoring/AdministratorsGuide/ManagingClientConnections/LoadBalancing/ConnectionLoadBalancing.htm

検証バージョンについて

この記事の内容はVertica 9.2で確認しています。

更新履歴

2019/08/23 全体の体裁修正、概要図を修正、設定方法を別記事に統合、バージョン9.2用に修正
2019/02/01 バージョン9.1用に修正
2015/09/03 本記事を公開