はじめに
Verticaはマスターノードが不要なMPPアーキテクチャを採用しており、各ノードで処理を分散しますが、クライアントからの接続を受け付けるノード(イニシエータ)は、残りのノード(エグゼキュータ)と比較して、負荷が上がる傾向にあります。この負荷を分散するために、Verticaにはクライアント接続のロードバランス機能があります。ロードバランス方式
ロードバランスには以下の2種類の方式があり、任意の方式を選択することができます。項目 | 内容 |
---|---|
ラウンドロビン | 各ノードは順番にイニシエータノードの役割を割り振られます。 |
ランダム | 各ノードはランダムにイニシエーターノードの役割を割り振られます。 |
例えば、3ノード構成でラウンドロビン方式を選択した場合は、以下のように動作します。
▼最初の接続
【1】クライアントは接続先として指定したノード①に接続します。
【2】ノード①がイニシエータとなり処理が行われます。
【2】ノード①がイニシエータとなり処理が行われます。
▼2回目の接続
【1】クライアントは接続先として指定したノード①に接続します。
【2】ノード①はクライアントにノード②のIPアドレスを返却します。
【3】クライアントはノード②のIPアドレスに接続します。
【4】ノード②がイニシエータとなり処理が行われます。
【2】ノード①はクライアントにノード②のIPアドレスを返却します。
【3】クライアントはノード②のIPアドレスに接続します。
【4】ノード②がイニシエータとなり処理が行われます。
このように、クライアントは最初の接続は常にノード①に対して行われます。そこで指定されたIPアドレスのノードに接続して処理を行うことで、ロードバランスを実現しています。
なお、クライアント側でノード②をバックアップ接続先として指定している場合、ノード①がダウンしても、ノード②が起点となってノード②~③間でロードバランスを継続できます。
Verticaのロードバランス機能は、ODBC接続、JDBC接続、ADO.NET接続で利用できます。
設定は、データベース側とクライアント側のそれぞれで行います。
ロードバランスの具体的な設定手順は「ロードバランスの設定方法」を参照してください。
注意点
ロードバランスを利用する上で、以下の点について、ご注意ください。・ノードの負荷状況に応じて、接続先を自動的に変更する機能ではありません。
・ロードバランスは、データベース側とクライアント側の両方で設定しないと有効になりません。
・ロードバランスは、データベース側とクライアント側の両方で設定しないと有効になりません。
【参考】
以下は、データベース側とクライアント側のロードバランス設定による、各ノード毎の接続数を示しています。両方で設定をしないと接続が分散されないことがわかります。
* 3ノード構成に対して、JDBCドライバ経由で同時100多重でSQLを実行しました。
* 各ノード毎の接続数は、以下のSQLで確認しています。
1 |
dbadmin=> SELECT node_name,count(node_name) FROM user_sessions where is_active=1 GROUP BY node_name; |
参考情報
ロードバランスの設定方法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 本記事を公開