はじめに
本稿では、Verticaのロードバランスの設定方法を詳しく解説します。ロードバランスの概要については、こちらを参照してください。
データベース側の設定
設定は以下のステップで、おこないます。
1. ロードバランス用パラメータの設定
2. ロードバランス用ネットワークの設定
1.ロードバランス用パラメータの設定
データベースにログインし、 set_load_balance_policy関数でロードバランスの方式(roundrobin / random)パラメータを設定します。
/* 設定例 */
dbadmin=> SELECT set_load_balance_policy('roundrobin');
/* 確認 */
dbadmin=> SELECT get_load_balance_policy();
get_load_balance_policy
-------------------------
roundrobin
(1 row)2.ロードバランス用ネットワークの設定
Vertica内でサブネット設定を定義します。
/* 構文 */
CREATE SUBNET <サブネット名> WITH ‘パブリックIPアドレスのサブネット';
/* 作成例 */
dbadmin=> CREATE SUBNET public_subnet WITH '172.16.20.0';
CREATE SUBNET
/* 確認例 */
dbadmin=> SELECT * FROM vs_subnets;
oid | name | schema | subnet | address_family
-------------------+---------------+--------+--------------+----------------
45035996274270972 | public_subnet | 0 | 172.16.20.0 | ipv4
(1 row)上記で作成したサブネットを、ロードバランス時にクライアントへ返却するサブネットとして定義します。
/* 構文 */
ALTER DATABASE <データベース名> EXPORT ON <サブネット名>;
/* 設定例 */
dbadmin=> ALTER DATABASE vdb EXPORT ON public_subnet;
ALTER DATABASE
/* 確認例 */
dbadmin=> SELECT database_name, export_subnet, load_balance_policy FROM databases;
database_name | export_subnet | load_balance_policy
---------------+-------------------+---------------------
vdb | 45035996274270972 | roundrobin
(1 row)クライアント側の設定(ODBC)
設定は以下のステップで、おこないます。
1. Vertica Clientをインストール
2. WindowsのODBC データソース アドミニストレーターで接続定義を作成
1.Vertica Clientをインストール
Verticaクライアントのセットアップ(Windows版)の手順に従って、Vertica Clientをインストールします。
2.WindowsのODBC データソース アドミニストレーターで接続定義を作成
Windowsの管理ツールから[データ ソース (ODBC)]を起動し、ユーザーDSNまたはシステムDSNでデータソースを追加します。この際、[Vertica]ドライバーを選択します。
その後、表示される VeritcaODBC DSN ConfigurationダイアログのBasic Settingsタブで接続設定を
行います。
【インストール時のインストール先とコンポーネント選択画面】
項目 | 内容 |
|---|---|
DSN Name | 任意のデータソース名称 |
Database | Verticaデータベース名 |
Server | メインとなる接続先のホスト名またはIPアドレス |
Backup Servers | サブとなる接続先のホスト名またはIPアドレス |
Port | Verticaデータベースのポート番号 |
Use Connection load balancing | ロードバランス設定の有無 |
User Name | 接続データベース・ユーザ名 |
Password | 接続データベース・ユーザ名のパスワード |
※上記以外のパラメータ項目については、マニュアルをご参照ください。
【データソースの設定画面】

クライアント側の設定(JDBC)
設定は以下のステップで、おこないます。
1. Vertica JDBCドライバの配置と環境設定
2. JDBC接続プロパティの設定
1.Vertica JDBCドライバの配置と環境設定
Vertica JDBCドライバをMyVerticaからダウンロードします。
【MyVerticaでの操作内容】
1) [Product]メニューを選択
2) [Downloads]メニューを選択
3) [Client Drivers]メニューを選択
4) [All Operating Systems]内にある、Verticaバージョンのリンクを選択
※選択後、JDBCドライバ(vertica-jdbc-n.n.n-n.jar)のダウンロードが始まります。
ダウンロード後、環境に合わせてJDBCドライバを配置し、環境設定を行います。
(環境変数 CLASSPATH の設定等)
2.JDBC接続プロパティの設定
JDBCのオプションで以下のパラメータを設定します。
項目 | 内容 |
|---|---|
ConnectionLoadBalance | ロードバランス設定の有無 |
※上記以外のプロパティ項目については、マニュアルをご参照ください。
【JDBC接続URLに記述する場合の例】
/* 設定箇所:ConnectionLoadBalance=1 */
jdbc:vertica://172.16.21.11:5433/vdb?ConnectionLoadBalance=1&|BackupServerNode="172.16.21.12,172.16.21.13"【Javaプログラム内に記述する場合の例】
/* 設定箇所:"ConnectionLoadBalance", 1 */
Properties myProp = new Properties();
myProp.put("ConnectionLoadBalance", 1);
myProp.put("BackupServerNode", "172.16.21.12,172.16.21.13");
Connection conn;
conn = DriverManager.getConnection("jdbc:vertica://172.16.21.11:5433/vdb", myProp);動作確認
サーバ側とクライアント側のロードバランスの設定が完了した後で、動作確認をおこないます。
以下は、ODBCとラウンドロビン方式の例を示しています。
1.ODBC接続テスト①
ODBCから、接続テストをおこないます。作成したデータソースの[Test connection]をクリックします。

正常に接続できることを確認します。

2.各ノードの接続数①
各ノードに接続された数を確認します。1号機がカウントアップされました。
/* 1回目 */
dbadmin=> SELECT node_name,count(*) FROM user_sessions GROUP BY node_name order by node_name;
node_name | count
----------------+-------
v_vdb_node0001 | 7 /* ★カウントアップ */
v_vdb_node0002 | 6
v_vdb_node0003 | 6
(3 rows)3.ODBC接続テスト②
ODBCから、2回目の接続テストをおこないます。作成したデータソースの[Test connection]をクリックします。

正常に接続できることを確認します。

4.各ノードの接続数②
各ノードに接続された数を確認します。今度は、2号機がカウントアップされました。
※2号機がカウントアップされない場合は、サーバ側またはクライアント側の設定が誤っているので、見直してください。
/* 2回目 */
dbadmin=> SELECT node_name,count(*) FROM user_sessions GROUP BY node_name order by node_name;
node_name | count
----------------+-------
v_vdb_node0001 | 7
v_vdb_node0002 | 7 /* ★カウントアップ */
v_vdb_node0003 | 6
(3 rows)5.ODBC接続テスト③
ODBCから、3回目の接続テストをおこないます。作成したデータソースの[Test connection]をクリックします。

正常に接続できることを確認します。

6.各ノードの接続数③
各ノードに接続された数を確認します。今度は、3号機がカウントアップされました。
/* 3回目 */
dbadmin=> SELECT node_name,count(*) FROM user_sessions GROUP BY node_name order by node_name;
node_name | count
----------------+-------
v_vdb_node0001 | 7
v_vdb_node0002 | 7
v_vdb_node0003 | 7 /* ★カウントアップ */
(3 rows)参考情報
ロードバランスの概要
https://www.ashisuto.co.jp/cm/analytics-database/load-balance.html
Connection Load Balancing
https://www.vertica.com/docs/9.2.x/HTML/Content/Authoring/AdministratorsGuide/ManagingClientConnections/LoadBalancing/ConnectionLoadBalancing.htm
ロードバランスおよび接続時フェイルオーバー機能を使用したvsqlからの接続
https://www.ashisuto.co.jp/cm/analytics-database/vsql_lb_cf.html
検証バージョンについて
この記事の内容はVertica 9.2で確認しています。
更新履歴
2019/08/23 本記事を公開