Db2 への接続の高可用性のための非 Java クライアント・サポート

Db2 サーバーは、ワークロード・バランシングと自動クライアント・リルートを通じて、クライアント・アプリケーションに高可用性を提供します。 このサポートは、非 Java クライアント (ODBC、 CLI、.NET、OLE DB、PHP、Ruby、または組み込み SQL)、および Java™ クライアント (JDBC、SQLJ、または pureQuery) を使用するアプリケーションで使用可能です。

非 Java クライアントでは、高可用性サポートを利用するために、以下のクライアントまたはクライアント・パッケージの 1 つを使用する必要があります。
  • IBM® Data Server Client
  • IBM Data Server Runtime Client
  • IBM Data Server Driver Package
  • IBM Data Server Driver for ODBC and CLI
Db2 サーバーへの接続の高可用性サポートには、以下が含まれます。
自動クライアント・リルート
このサポートによって、クライアントが代替サーバーを介してデータベースへ再接続しようとして失敗してもリカバリーすることができます。 別のサーバーへ再接続することをフェイルオーバーと呼びます。 自動クライアント・リルートのクライアント・サポートは、 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 次サーバーへの接続中に障害が発生した場合、クライアント・アフィニティーを使用して、代替サーバーへのフェイルオーバーの特定の順序を実行します。