Java 以外のアプリケーションに対する Db2 自動クライアント・リルート・サポートの構成

Db2 データベースへの接続の場合、Java™ 以外のアプリケーションの自動クライアント・リルート・サポートの構成プロセスは、 Db2 pureScale® 環境 およびその他の環境で同じです。

自動クライアント・リルート機能はデフォルトで使用可能になります。 Db2 pureScale 環境Db2 pureScale インスタンス または他の環境の 1 次サーバーに接続する必要があります。

サーバーとの接続が最初に正常に確立された時点で、クライアントは接続されたサーバーから、すべての利用可能な代替サーバーのリストを取得します。このリストを、クライアントはメモリーに保管します。 最初の接続が失敗すると、クライアントは、 db2dsdriver.cfg ファイルの <acr>< acr> セクションの <alternateserverlist>< alternateserverlist> タグの下に定義されている代替サーバーのリストを検査します。 db2dsdriver.cfg ファイルの <acr>< acr> セクションに代替サーバーが定義されていない場合、サーバーへの最初の正常な接続時に、クライアントはローカル・キャッシュ・ファイル srvrlst.xmlを作成します。 クライアントは、このファイルを、サーバーの利用可能な代替サーバーのリストで更新します。 新しい接続が行われてサーバーのリストがクライアントの srvrlst.xml ファイルの内容と異なるときには常に、このファイルはリフレッシュされます。

クライアントは、 srvrlst.xml ファイルを使用して代替サーバーを見つけると、 db2diag.log ファイルにレコードを書き込みます。 このログをモニターして、初期サーバー接続が失敗する頻度を判別できます。

表 1 では、Java 以外のアプリケーションの接続を確立するための基本設定について説明します。

表 1. Java 以外のアプリケーションの Db2 データベースへの接続を確立するための基本設定
クライアントの設定 Db2 pureScale 環境の値 その他の環境の値
データベース・ホスト (ホスト)1 Db2 pureScale インスタンス2 のメンバーの IP アドレス。 1 次サーバーの IP アドレス
データベース・ポート (port)1 Db2 pureScale インスタンス2 のメンバーの SQL ポート番号。 1 次サーバーの SQL ポート番号
データベース名 (name)1 データベース名 データベース名
注:
  1. 使用するクライアントに応じて、 接続情報は以下のいずれかのソース内で定義されます。
    • CLI アプリケーション、または IBM® Data Server Client または IBM Data Server Runtime Clientを使用するオープン・ソース・アプリケーションを使用して接続する場合は、以下のように接続情報を定義できます。
      • アプリケーションの接続ストリングにホスト、ポート、およびデータベースの情報を指定すると、 CLI ドライバーおよびオープン・ソース・ドライバーはその情報を使用します。
      • ホスト、ポート、およびデータベースの情報がアプリケーションの接続ストリングに指定されていないが、その情報が db2cli.ini ファイルに指定されている場合、ドライバーはそのファイルの情報を使用します。
      • アプリケーションまたは db2cli.ini ファイル内の接続ストリングにホスト、ポート、およびデータベース情報が指定されていない場合、ドライバーは IBM データ・サーバー・ドライバー構成ファイル (db2dsdriver.cfg) 内の情報を使用します。
    • .NET アプリケーションを IBM Data Server Client または IBM Data Server Runtime Clientとともに使用する場合は、データベース・カタログ、接続ストリング、 db2dsdriver.cfg ファイル、または .NET オブジェクト・プロパティーで接続情報を定義できます。
    • IBM Data Server Client または IBM Data Server Runtime Clientで組み込み SQL アプリケーションを使用している場合は、データベース・カタログ、接続ストリング、または db2dsdriver 構成ファイルで接続情報を定義できます。
  2. あるいは、 WebSphere® Application Server Network Deployment やマルチホーム DNS などのディストリビューターを使用して、データベースへの初期接続を確立することもできます。
    • ディストリビューターを使用する場合は、ディストリビューターの IP アドレスおよびポート番号を 指定します。 ディストリビューターは、現在のワークロード分散を分析し、その情報を使用して接続要求を Db2 pureScale インスタンスのいずれかのメンバーに転送します。
    • マルチホーム DNS の場合は、 Db2 pureScale インスタンスの任意のメンバーの IP アドレスとポート番号に解決できる IP アドレスとポート番号を指定します。 マルチホーム DNS の処理では、単純なラウンドロビン選択、またはメンバーのワークロード分散などの基準に基づいてメンバーが選択されます。

IBM データ・サーバー・ドライバー構成ファイル (db2dsdriver.cfg) で構成キーワードまたはレジストリー変数を設定して、自動クライアント・リルートの動作を変更することができます。 自動クライアント・リルートを制御するために使用できる構成キーワードを表 2 に示します。 クライアント・アフィニティーが使用可能でない場合について、キーワードが説明されています。

表 2. 自動クライアント・リルートの動作を制御するための設定
db2dsdriver 構成ファイルの <acr>< acr> セクション内のエレメント
acrRetryInterval キーワード 連続して行われる接続再試行の間に待機する秒数を指定します。 DB2_CONNRETRIES_INTERVAL レジストリー変数の値は、この値をオーバーライドします。 acrRetryInterval キーワードの範囲は、 0 (最大整数値 (MAX_INT)) です。 DB2_CONNRETRIES_INTERVAL レジストリー変数を設定しない場合、 acrRetryInterval キーワードのデフォルト値は待機なし (0) になります。
alternateserverlist キーワード データベースへの最初の接続が失敗した場合に接続を試行する代替サーバーを識別するサーバー名とポート番号のセットを指定します。 最初の接続後、代替サーバー・リストは使用されません。 Db2 pureScale 環境では、リスト内の項目を Db2 pureScale インスタンスのメンバーにすることができます。 その他の環境では、リストに 1 次サーバーのエントリーおよび高可用性災害時リカバリー (HADR) スタンバイ・サーバーのエントリーが含まれています。
detectReadonlyTxn キーワード 自動クライアント・リルート・フィーチャーが使用可能になっているときに、失敗したステートメントがトランザクション内の最初の SQL ステートメントではない場合であっても、新規メンバーへの接続がシームレスにフェイルオーバーできるかどうかを指定します。 detectReadonlyTxn キーワードは、 Db2 Cancun Release 10.5.0.4 以降のサーバーに接続している場合に有効です。 サポートされる Db2 サーバーへの接続の場合、 detectReadonlyTxn キーワードのデフォルト値は true です。
true 値に設定すると、接続されているサーバーは、特殊レジスターが変更されるごとにその現行値を返します。
制約事項: 反復可能読み取り (RR) または読み取り固定 (RS) 分離レベルのトランザクションでは、 detectReadonlyTxn キーワードを true に設定することはできません。
enableAcr キーワード 自動クライアント・リルートが有効かどうかを指定します。 デフォルトは trueです。
enableAlternateGroupSeamlessACR キーワード グループ間のシームレス・フェイルオーバーまたは非シームレス・フェイルオーバーの動作を指定します。 デフォルトは falseです。 このキーワードは、<alternategroup>< acr> セクションの <acr> < alternategroup> エレメントに定義する必要があります。 このキーワードを に設定するには、 enableSeamlessACR キーワードも に設定する必要があります。 enableAlternateGroupSeamlessACR キーワードを に設定しても、 enableSeamlessACR キーワードの設定には影響しません。 alternategroup セクションのサーバーへの接続が正常に確立されている場合、シームレスまたは非シームレスの動作の規則が適用されたままになります。
enableAlternateServerListFirstConnect キーワード データ・サーバーに対する最初の接続が失敗した場合のみ使用される代替サーバー・リストがあるかどうかを指定します。 デフォルトは falseです。 代替サーバー・リストの最初の接続の有効化 キーワードの値が の場合、 db2dsdriver.cfg ファイルで自動クライアント・リルートに指定したその他の設定に関係なく、シームレス・フェイルオーバーを使用する自動クライアント・リルートが暗黙的に有効になります。 この機能を使用するには、 db2dsdriver.cfg ファイル内に <alternateserverlist> < alternateserverlist> エレメントも必要です。
enableSeamlessAcr キーワード シームレス・フェイルオーバーが可能かどうかを指定します。 enableAcr キーワードが に設定されている場合、 enableSeamlessAcr キーワードのデフォルトは です。 enableSeamlessACR キーワードは、グループまたはクラスター内のメンバーにのみ適用されます。
maxAcrRetries キーワード 自動クライアント・リルートのための接続試行の最大数を指定します。 有効な範囲は 0 -最大整数値 (MAX_INT) です。 DB2_MAX_CLIENT_CONNRETRIES レジストリー変数の値は、 maxAcrRetries キーワードの値をオーバーライドします。 DB2_MAX_CLIENT_CONNRETRIES レジストリー変数または maxAcrRetries キーワードを設定しない場合、デフォルトでは、接続は 10 分間再試行されます。 ただし、代替グループを定義した場合は、接続試行がデフォルトで 2 分間行われます。 maxAcrRetries キーワード値を 0 に設定すると、自動クライアント・リルートが使用不可になります。

db2dsdriver.cfg ファイルが変更された場合、 CLI アプリケーションは SQLReloadConfig 関数を発行して、< acr> セクション内のすべての代替サーバーの項目を検証することができます。

表 3 のレジストリー変数は、自動クライアント・リルートの再試行動作を制御します。

表 3. 自動クライアント・リルートの再試行動作を制御するレジストリー変数
レジストリー変数
DB2_CONNRETRIES_INTERVAL 連続して行われる接続再試行の間の秒数。 DB2_MAX_CLIENT_CONNRETRIES レジストリー変数を設定した場合、デフォルトは 10 です。
DB2_MAX_CLIENT_CONNRETRIES 自動クライアント・リルートのための接続再試行の最大数。 DB2_CONNRETRIES_INTERVAL レジストリー変数を設定した場合、デフォルトは 30 です。

どちらのレジストリー変数も設定せず、 maxAcrRetries キーワードと acrRetryInterval キーワードも設定しない場合、自動クライアント・リルート処理は、再試行間の待機なしで、最大 10 分間データベースへの接続を再試行します。

CLI、OLE DB、ADO.NET、および組み込み SQL アプリケーションの場合、2 つの接続タイムアウト・キーワードがあります。これらは、 IBM データ・サーバー・ドライバー構成ファイル (db2dsdriver.cfg) で設定できます:
tcipipConnectionTimeout
tcipipConnectionTimeout キーワードは、ソケットのオープンの試行が失敗するまでの秒数を指定します。 自動クライアント・リルートでは、このキーワードを使用しないでください。
ConnectionTimeout
ConnectionTimeout キーワードは、 Db2 for z/OS® データ共有グループへの接続が確立されるのをクライアント・アプリケーションが待機する秒数を指定します。
ConnectionTimeout キーワード設定は、 tcpipConnectTimeout キーワード設定および MemberConnectTimeout キーワード設定よりも優先されます。

組み込み SQL の場合は、 CLI、OLE DB、および ADO.NET アプリケーションでは、 ConnectionTimeout キーワードを設定することによって接続タイムアウト値を設定できます。 この値は、データベースへの接続が確立されるのをクライアント・アプリケーションが待機する秒数を指定します。 接続タイムアウト値を、サーバーへの接続に要する最大時間以上の値に設定する必要があります。 そうしないと、接続がタイムアウトになり、クライアント・リルートによって代替サーバーに転送される可能性があります。 例えば、通常の日にサーバーに接続するために約 10 秒かかり、回線が混雑している日に約 20 秒かかる場合、接続タイムアウト値を 20 秒以上に設定する必要があります。