DB2 データベースを使用するアプリケーションのクライアント・リルートの構成
DB2® データベースを使用するエンタープライズ・アプリケーションをクライアント・リルート・フィーチャーを使用して構成することで、 通信が失われてもリカバリーするようにでき、アプリケーションは最小限の中断で続行できるようになります。リルート機能は連続稼働をサポートするための中核機能ですが、 リルートが可能なのは、アプリケーション・サーバー接続に対して指定された代替ロケーションがある場合のみです。
始める前に
このタスクでは、以下のことを前提としています。
- アプリケーションが接続する先の DB2 データ・ソースで以下が実行されている。
- DB2 for z/OS® バージョン 10.1 以降
- DB2 Database for Linux, UNIX, and Windows バージョン 9.7 以降
- DB2 データベースを、冗長セットアップで構成済みであるか、障害時に DB2 サーバーをスタンバイ・ノードにできるように構成済みである。
このタスクについて
クライアント・リルートを使用して、1 次データベース・サーバーへの接続に障害が起こった場合に DB2 が 代替サーバーに関する情報を提供するようにできます。
クライアント・サイドでの構成がなくても、DB2 サーバー上でクライアント・リルート機能が有効にされていれば、 DB2 用 Java™ Common Connectivity (JCC) Java Database Connectivity (JDBC) ドライバーは、 DB2 サーバーへの初期接続を行うときにクライアント・リルート機能をサポートします。1 つ以上の代替サーバーが構成されている DB2 サーバーに JCC JDBC ドライバーが接続すると、 1 次サーバーは代替サーバーに関する情報を JCC JDBC ドライバーに送信します。1 次サーバーへの接続で障害が起こった場合、 JCC JDBC ドライバーは代替サーバーへ接続をリルートできます。ただし、アプリケーション・サーバー・プロセスが異常終了した場合は、 代替サーバー情報は失われるため、クライアントはもう一度 1 次サーバーに接続する必要があります。クライアントが 1 次サーバーへの初期接続を確立できない場合、 クライアントは代替サーバーの情報を持っていないため、リルートできません。
この問題を解決するには、アプリケーション・サーバー の DB2 データ・ ソースを、「代替サーバー名」および「代替ポート番号」フィールド、または clientRerouteAlternateServerName および clientRerouteAlternatePortNumber データ・ソース・カスタム・プロパティーを使用して構成することで、初期接続の試行時でもクライアント・リルートをサポートできます。 JDBC ドライバーは、1 次 DB2 サーバーに接続できない場合、クライアント・ リルートに必要な情報が既に示されているので、代替サーバーへの 接続をリルートすることができます。
接続がリルートされ、JCC JDBC ドライバーが代替 DB2 サーバーに接続されると、 その代替サーバーはそれ自体の代替サーバーについての情報を JCC JDBC ドライバーに送信します。そうすると、JCC JDBC ドライバーは、 その代替 DB2 サーバーが利用できなくなった場合に接続をさらにリルートするために必要な情報を持っている状態になります。元は代替サーバーだったサーバーが今度は 1 次サーバーになり、 新しい代替サーバーが設定されます。しかし、1 次サーバーと代替サーバーのこの新しい状態を JCC JDBC ドライバーはもう保持しません。アプリケーション・サーバーで障害が起こって再始動されると、 JCC JDBC ドライバーは元のサーバー構成から開始しなければならず、もともと 1 次サーバーと見なされていたサーバーへの接続を試みます。
以下の DB2 構成可能環境で、自動クライアント・リルート・フィーチャーを使用できます。
手順
例
<dataSource id="DefaultDataSource"jndiName="jdbc/db2">
<properties.db2.jcc
databaseName="sampleDatabase"
driverType="4"
serverName="host"
portNumber="50000"
clientRerouteAlternateServerName="host01, host02, host03"
clientRerouteAlternatePortNumber="50000, 50005, 50000"
retryIntervalForClientReroute="2"
maxRetriesForClientReroute="3" />
...
</dataSource>