はじめに

Verticaのロードバランスについてご紹介します。Verticaでは複数ノード構成時に、特定ノードへのアクセスの集中を抑えるため、ロードバランス機能を利用して接続を分散することができます。クライアントドライバとして、JDBC、ODBC、ADO.NETが用意されており、各クライアントドライバでロードバランスを利用することができます。

図1:ロードバランスイメージ図
※クリックすると拡大表示できます

概要_図1

設定方法

以下は、クライアントドライバとして、JDBCドライバを利用した時の設定例です。

図2:ロードバランス設定方法
※クリックすると拡大表示できます

設定方法_図2
【設定手順】
①クライアント側でロードバランスを設定
  今回は、JDBCドライバのロードバランスを設定します。

   ConnectionLoadBalance:
    「0」:ロードバランスの機能は無効です。
    「1」:ロードバランスの機能は有効です。

②ネットワークインターフェースを設定
  全ノード分のPublicIPアドレスを設定したネットワークインターフェースを作成します。

③ノードのEXPORT_ADDRESSを設定
  ②で作成した全ノード分のネットワークインターフェースをEXPORT_ADDRESSに設定します。

④Vertica側のロードバランスポリシーを設定
  Verticaのロードバランスポリシー「roundrobin」もしくは「random」を設定します。データベースの再起動は必要ありません。
 
   set_load_balance_policy:
    「roundrobin」: 順番にノードを選択します。(上記の場合、クライアントから接続がある度に server1 → server2 → server3 → server1・・とノードを選択します)
    「random」:ランダムでノードを選択します。

注意点

①ノードの負荷を確認し、接続先を自動的に変更する機能はありません。

②「クライアントドライバ」と「Vertica」の両方で、設定しないとロードバランスは有効になりません。
以下は、「クライアントドライバ」と「Vertica」のロードバランス設定による、各ノードの接続数を示した図です。
「クライアントドライバ」と「Vertica」で、ロードバランスの設定をしないと接続が分散されないことがわかります。

図3:接続数の変化
※クリックすると拡大表示できます

注意事項_図3
※3ノードで構成したVerticaに対して、JDBCドライバ経由で同時100多重でSQLを実行しました。
※各ノード毎の接続数は、以下のSQLで確認しました。
   
dbadmin=> SELECT node_name,count(node_name) FROM user_sessions where is_active=1 GROUP BY node_name;

参考

以下の記事では、複数ノード構成時におけるアーキテクチャについて、ご紹介しています。ご参考までに、あわせてご確認ください。

・複数ノード構成のアーキテクチャ
http://vertica-tech.ashisuto.co.jp/query-execution-flow/
・Verticaノードのクラスタ
http://vertica-tech.ashisuto.co.jp/node_cluster/

検証バージョンについて

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