はじめに

Verticaの接続時フェイルオーバーについてご紹介します。Verticaでは新規コネクション確立時に、接続先のノードがダウンしている場合、別の正常ノードに再接続することができます。クライアントドライバとして、JDBC、ODBC、ADO.NETが用意されており、各クライアントドライバで接続時フェイルオーバーを利用することができます。

図1:接続時フェイルオーバー イメージ図
※クリックすると拡大表示できます

図1_接続時フェイルオーバー

設定方法

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

図2:接続時フェイルオーバー設定方法
※クリックすると拡大表示できます

図2_接続時フェイルオーバー設定方法
【設定手順】
JDBCドライバの「BackupServerNode」パラメータを設定します。

BackupServerNode
・「IPアドレス」または「ノード名」を指定します。一度に複数ノードがダウンするケースも想定されるため、接続時フェイルオーバー先のノードは、複数指定することもできます。その場合は、優先順に左から「,」カンマで区切ります。
・上記例の場合、「server4」(xx.xx.xx.54)から「server1」(xx.xx.xx.51)に接続を試み、「server1」がダウン中のため、接続時フェイルオーバーが有効となり、「server2」(xx.xx.xx.52)に再接続をしています。

動作確認

3ノード構成で、接続時フェイルオーバーを未設定/設定にした場合の動作を確認しました。以下のとおりです。

接続時フェイルオーバー 未設定時の動作

①「BackupServerNode」をコメントインする


②ステータスの状態を確認する
※「server1」,「server2」,「server3」のステータスは全て「UP」の状態です。


③JDBCドライバ経由でSQLを実行する
※「server1」でSQLが処理されます。


④「BackupServerNode」をコメントアウトする


⑤「server1」をダウンさせる


⑥ステータスの状態を確認する
※「server1」のステータスは「DOWN」であり、「server2」と「server3」のステータスは「UP」の状態です。


⑦JDBCドライバ経由でSQLを実行する
※「server1」がダウン中のため、「server4」でエラーが発生します。

【エラー内容】


接続時フェイルオーバー 設定時の動作

①「BackupServerNode」をコメントインする


②「server1」をダウンさせる


③ステータスの状態を確認する
※「server1」のステータスは「DOWN」であり、「server2」と「server3」のステータスは「UP」の状態です。


④JDBCドライバ経由でSQLを実行する
※「server1」はダウン中ですが、「server4」でエラーは発生せずに、接続時フェイルオーバー先の「server2」でSQLが処理されます。



注意点

Verticaは、Oracleの透過的アプリケーション・フェイルオーバーには対応しておりません。透過的アプリケーション・フェイルオーバーとは、確立済コネクションがノードダウンで切断された場合に再接続を試みて、別ノードに新しいコネクションを自動的に作成する機能です。

図3:透過的アプリケーション・フェイルオーバー イメージ図
※クリックすると拡大表示できます

図3_透過的アプリケーションフェイルオーバーイメージ図

参考

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

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

・Verticaノードのクラスタ
http://vertica-tech.ashisuto.co.jp/node_cluster/

・ロードバランスの概要
http://vertica-tech.ashisuto.co.jp/load-balance/

検証バージョンについて

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