How To
Summary
HADR やフェイル・オーバー・クラスターなどのクラスター・ソリューションにおいて、主接続先が一つの場合は ACR (サーバー・サイド ACR) を使用します。ここで、ACR が正しく動作しないような状況で ACR の代替としてクライアント・アフィニティーを使用できます。
Objective
アプリケーション・プロセスは接続先の候補としてサーバー・リストを保持できます。ACR ではデータベース・サーバーがアプリケーションに送信したサーバー・リストが使用され、クライアント・アフィニティーではアプリケーションが定義したサーバー・リストが使用されます。
クライアント・アフィニティーは常に複数の接続先が存在し、ここから優先接続先を選択する目的で使用しますが、以下のようなシナリオで ACR の代替として使用可能です。
- サーバーがアプリケーションで解決できないホスト名を返す。またはサーバーがアプリケーションから接続不能なホスト名を返す
- サーバーが送信するサーバー・リストに含まれない代替サーバーへ接続する要件がある
注:クライアント・アフィニティーは優先接続先に接続できない場合、データベース接続においてパフォーマンス遅延や余分なトラフィックが発生します。このため無条件に ACR の代替としてクライアント・アフィニティーを使用する運用は推奨されません。パフォーマンス上のペナルティなどを理解した上で使用してください。
たとえば、HADR で主系から副系へ TAKEOVER が発生した場合、ACR を使用するアプリケーション・プロセスは再接続で副系へ接続しますが、クライアント・アフィニティーを使用するアプリケーション・プロセスは再接続でも主系のホストに接続を試行し、これが失敗してから副系に接続します。
なお、ACR でもアプリケーション・プロセス起動後の初回接続時に主接続先に接続できない場合のみ、アプリケーションが定義した代替接続先を参照できます。
Steps
主系 (hadr1.example.com) と副系 (hadr2.example.com) の HADR 構成において、ACR を使用する場合とクライアント・アフィニティーを使用する例
- ACR の構成例
- 主系にインスタンス・オーナーでログインし、代替サーバーを構成します。
db2 update alternate server for database hadb using hostname hadr2.example.com port 50000
- 副系にインスタンス・オーナーでログインし、代替サーバーを構成します。
db2 update alternate server for database hadb using hostname hadr1.example.com port 50000
- アプリケーションで接続先を指定します。(<acr> は必須ではありません。ここで定義された代替サーバーはアプリケーション起動後の初回接続に失敗した時のみ使用されます。)
<configuration> <dsncollection> <dsn alias="SAMPLE" name="SAMPLE" host="hadr1.example.com" port="50000"/> </dsncollection> <databases> <database name="SAMPLE" host="hadr1.example.com" port="50000"> <acr> <parameter name="enableAcr" value="true"/> <parameter name="maxAcrRetries" value="2"/> <parameter name="acrRetryInterval" value="5"/> <parameter name="enableAlternateServerListFirstConnect" value="true"/> <alternateserverlist> <server name="server1" hostname="hadr2.example.com" port="50000"/> </alternateserverlist> </acr> </database> </databases> </configuration>
- 主系にインスタンス・オーナーでログインし、代替サーバーを構成します。
- クライアント・アフィニティーの構成例
- アプリケーションで接続先を指定します。
<configuration> <dsncollection> <dsn alias="SAMPLE" name="SAMPLE" host="hadr1.example.com" port="50000"/> </dsncollection> <databases> <database name="SAMPLE" host="hadr1.example.com" port="50000"> <acr> <parameter name="enableAcr" value="true"/> <parameter name="maxAcrRetries" value="2"/> <parameter name="acrRetryInterval" value="5"/> <alternateserverlist> <server name="server1" hostname="hadr1.example.com" port="50000"> </server> <server name="server2" hostname="hadr2.example.com" port="50000"> </server> </alternateserverlist> <affinitylist> <list name="list1" serverorder="server1,server2"> </list> </affinitylist> <clientaffinitydefined> <client name="client1" hostname="client1" listname="list1"> </client> </clientaffinitydefined> </acr> </database> </databases> </configuration>
- アプリケーションで接続先を指定します。
Document Location
Worldwide
[{"Type":"MASTER","Line of Business":{"code":"LOB10","label":"Data and AI"},"Business Unit":{"code":"BU058","label":"IBM Infrastructure w\/TPS"},"Product":{"code":"SSEPGG","label":"Db2 for Linux, UNIX and Windows"},"ARM Category":[{"code":"a8m500000008Pl2AAE","label":"Connectivity-\u003ECataloging"}],"ARM Case Number":"","Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"All Versions"}]
Was this topic helpful?
Document Information
Modified date:
15 August 2023
UID
ibm16997099