IBM Support

[Db2] ACR (サーバー・サイド ACR) の代替としてのクライアント・アフィニティーの使用

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 の構成例
    1. 主系にインスタンス・オーナーでログインし、代替サーバーを構成します。
      db2 update alternate server for database hadb using hostname hadr2.example.com port 50000
    2. 副系にインスタンス・オーナーでログインし、代替サーバーを構成します。
      db2 update alternate server for database hadb using hostname hadr1.example.com port 50000
    3. アプリケーションで接続先を指定します。(<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>
  • クライアント・アフィニティーの構成例
    1. アプリケーションで接続先を指定します。
      <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>
 
お問合せ先
技術的な内容に関して、パスポート・アドバンテージの契約のもと Db2 テクニカル・サポートへお問い合わせください。
Db2 テクニカル・サポート

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"}]

Document Information

Modified date:
15 August 2023

UID

ibm16997099