Db2 への接続の高可用性のための非 Java クライアント・サポート
Db2 サーバーは、ワークロード・バランシングと自動クライアント・リルートを通じて、クライアント・アプリケーションに高可用性を提供します。 このサポートは、非 Java クライアント (ODBC、 CLI、.NET、OLE DB、PHP、Ruby、または組み込み SQL)、および Java™ クライアント (JDBC、SQLJ、または pureQuery) を使用するアプリケーションで使用可能です。
- IBM® Data Server Client
- IBM Data Server Runtime Client
- IBM Data Server Driver Package
- IBM Data Server Driver for ODBC and CLI
- 自動クライアント・リルート
- このサポートによって、クライアントが代替サーバーを介してデータベースへ再接続しようとして失敗してもリカバリーすることができます。 別のサーバーへ再接続することをフェイルオーバーと呼びます。 自動クライアント・リルートのクライアント・サポートは、 Db2に接続する非 Java クライアントに対してデフォルトで有効になっています。
サーバーでは、以下のいずれかの方法により自動クライアント・リルート機能を提供することが可能です。
- 複数のサーバーが Db2 pureScale® インスタンスで構成されています。 データベースへの接続は、その Db2 pureScale インスタンスのメンバーへの接続です。 フェイルオーバーには、 Db2 pureScale インスタンスの別のメンバーへの再接続が含まれます。 この環境では、クライアントが TCP/IP を使用して Db2 pureScale インスタンスに接続する必要があります。
- Db2 pureScale インスタンス と、データベース用に定義された代替サーバー。 フェイルオーバーでは、まず Db2 pureScale インスタンスの別のメンバーに再接続します。 Db2 pureScale インスタンス のメンバーが使用可能でない場合にのみ、サーバーへのフェイルオーバーが試行されます。
- Db2 pureScale インスタンス が 1 次サーバーに対して定義され、別の Db2 pureScale インスタンス がそのサーバーに対して定義されている。 フェイルオーバー時には、まず 1 次インスタンス内の別のメンバーに再接続します。 代替インスタンスへのフェイルオーバーは、1 次 Db2 pureScale インスタンス のメンバーが使用可能でない場合にのみ試行されます。
- データベースが単一サーバー上で定義されている場合。 このデータベースの構成に、代替サーバーの指定を含めます。 フェイルオーバー時には、代替サーバーに再接続します。
代替グループは、現在のグループへの接続を再確立できなかった場合の、自動クライアント・リルートに関する追加のフェイルオーバー・メカニズムです。 グループ は、Db2 インスタンスで作成されるデータベースです。 Db2 pureScale またはパーティション・データベース環境では、データベースのすべての参加データベース・サーバーもグループと見なされます。 アプリケーションが明示的に接続しているデータベースは、1 次グループ と呼ばれます。
CLI または .NET クライアント・アプリケーションの場合、自動クライアント・リルートのフェイルオーバーは、 シームレス または 非シームレスにすることができます。 非シームレスなフェイルオーバーでは、クライアント・アプリケーションが別のサーバーへ再接続するときに、フェイルオーバー (代替サーバーへの接続) が発生したことを示すエラーが、毎回アプリケーションに戻されます。 シームレス・フェイルオーバーでは、トランザクションの最初の SQL ステートメントの実行中に、接続障害が発生し、代替サーバーまたは代替グループへの再接続が完了しても、クライアントはエラーを戻しません。
Db2 pureScale インスタンスでは、ワークロード・バランシングやワークロード・バランシングを使用せずに、自動クライアント・リルート・サポートを使用できます。
- ワークロード・バランシング
- ワークロード・バランシングにより、 Db2 pureScale インスタンスの可用性を向上させることができます。
ワークロード・バランシングにより、 Db2 pureScale インスタンス は、メンバー間で作業が効率的に分散されるようにします。
Db2 pureScale サーバーに対するワークロード・バランシングは、メンバー・サブセット属性の値を wlbに設定することにより、サーバー・サイドで有効にすることができます。 WLM_CREATE_MEMBER_SUBSET プロシージャー-メンバー・サブセット・オブジェクトの作成 を参照してください。
非 Java クライアントは任意のオペレーティング・システム上でワークロード・バランシングをサポートします。 クライアントから Db2 pureScale インスタンス への接続では、TCP/IP を使用する必要があります。
ワークロード・バランシングが有効になっている場合、クライアントは、サーバー・リストを介して Db2 pureScale インスタンス のメンバーに関する状況情報を頻繁に取得します。 クライアントはサーバー・リストをキャッシュに入れ、キャッシュ内のその情報を使用して、次のトランザクションを送付すべきメンバーを決定します。
非 Java クライアントの場合、サーバー・リストはアプリケーション・プロセス内にキャッシュされます。 そのプロセス内にある各接続の間でのみ、ワークロード・バランシングのために共有されます。
Db2 は、以下の 2 つのタイプのワークロード・バランシングをサポートします。- 接続レベルのワークロード・バランシング
- 接続レベルのワークロード・バランシングは、
接続境界で実行されます。 非 Java クライアントの場合のみサポートされます。 Db2に接続する非 Java クライアントでは、接続レベルのワークロード・バランシングに対するクライアント・サポートがデフォルトで有効になっています。
接続レベルのロード・バランシングは、接続期間が短い場合に非常に有効です。
- トランザクション・レベルのワークロード・バランシング
- トランザクション・レベルのワークロード・バランシングは、
トランザクション境界で実行されます。 トランザクション・レベルのワークロード・バランシングのクライアント・サポートは、 Db2に接続するクライアントではデフォルトで無効になっています。
トランザクション・レベルの ロード・バランシングは、接続期間が長い場合に非常に有効です。
- クライアント・アフィニティー
- クライアント・アフィニティーは、クライアントによって完全に制御される自動クライアント・リルートのソリューションです。 これは、特定の 1 次サーバーへ接続する必要がある状態を対象としています。 1 次サーバーへの接続中に障害が発生した場合、クライアント・アフィニティーを使用して、代替サーバーへのフェイルオーバーの特定の順序を実行します。