非 Java クライアントから Db2 への接続のための代替グループ

バージョン 9.7 フィックスパック 5 およびそれ以降のフィックスパックのリリースの非 Java クライアントの高可用性を向上するために、現在のグループへの接続を再確立できなかった場合、自動クライアント・リルートのための追加のフェイルオーバー・メカニズムとして代替グループを使用します。

デフォルトで、非 Java クライアントは、自動クライアント・リルート (ACR) が使用可能になっています。 この機能は、サーバーへの接続を再確立できなかった場合に、現在のグループ内の代替サーバーへの自動フェイルオーバーを提供します。

この ACR 機能に加えて、現在のグループへの接続を再確立できなかった場合のフェイルオーバー・ターゲットとして、代替グループ を定義できます。 非 Java クライアントに対して代替グループを定義するには、次のようにします。
  • db2dsdriver.cfg ファイルの < acr> セクションの < alternategroup> エレメント内で、代替グループごとに < database> エレメントを定義します。 <database> エレメント内に <parameter> エレメントを指定しないでください。パラメーター設定は 1 次グループから継承されます。 <alternategroup> エレメント内に複数の <database> エレメントを定義することができます。 <database> エレメントの順序は、フェイルオーバー中に使用される順序になります。
  • 代替グループへのフェイルオーバー接続からのエラー・メッセージを抑止したい場合は、 enableAlternateGroupSeamlessACR パラメーターを <alternategroup> エレメントで true に設定します。

デフォルトの ACR の再試行期間は 10 分です。 代替グループを定義すると、この期間は 2 分に短縮されます。

非 Java クライアントが代替グループに接続されている場合、 1 次グループ内の <database> エレメントのすべての接続設定とパラメーター設定は、代替グループ内のデータベースへの接続によって継承されます。

非 Java クライアントが代替グループのデータベースに接続した後、1 次グループへのフェイルバックは提供されません。 1 次グループにもう一度接続するには、アプリケーションまたはクライアントを再始動する必要があります。

代替グループは、ACR およびワークロード・バランシングでのみサポートされています。 クライアントのアフィニティーが構成されている場合、代替グループの定義は無視されます。

db2dsdriver.cfg ファイル内の代替グループ定義の例を以下に示します:
<dsncollection>
  <dsn alias="mydsn2" name="mydb2" host="myserver2.ibm.com" port="5912">
  ...
</dsncollection>

<databases>
  <database name="mydb2" host="myserver2.ibm.com" port="5912">
   <parameter name="IsolationLevel" value="4"/>
   ...
   <wlb>
     <parameter name="enableWLB" value="true"/>
   </wlb>
   <acr>
    ... (ACR parameters definition)
    <alternateserverlist>
      <server name="server1" hostname="db2luwa.luw.ibm.com" port="5912">
      </server>
      <server name="server2" hostname="db2luwb.luw.ibm.com" port="5912">
      </server>
    </alternateserverlist>
    <alternategroup>
     <parameter name="enableAlternateGroupSeamlessACR" value="true"/>
     <database name="mydb3" host="myserver3.ibm.com" port="5912">
     </database>
     <database name="mydb4" host="myserver4.ibm.com" port="5912">
     </database>
     </alternategroup>
   </acr>
   </database> 

   <database name="mydb3" host="myserver3.ibm.com" port="5912">
    <parameter name="IsolationLevel" value="2"/>
    <acr>
     <parameter name="enableACR" value="true"/>
    <alternateserverlist>
      <server name="server4" hostname="db2luwd.luw.ibm.com" port="5912">
      </server>
    </alternateserverlist>
    <alternategroup>
     <parameter name="enableAlternateGroupSeamlessACR" value="true"/>
     <database name="mydb5" host="myserver5.ibm.com" port="5912">
     </database>
     </alternategroup>
    </acr>
   ...
   </database> 
</databases>
次のサンプル・シナリオでは、代替グループに対して自動クライアント・リルートが動作する方法を説明します。 代替グループのフェイルオーバーの詳細に焦点を当てるために、現在のグループへの ACR のフェイルオーバーについての詳細はこれらのシナリオでは説明されていません。 これらのシナリオは、前述の段落で説明した、db2dsdriver.cfg サンプル・ファイルを使用します。
1 次グループへの最初の接続が失敗する
非 Java クライアントが最初の試行で 1 次グループへの接続に失敗した場合、現在のグループの代替サーバーへの自動クライアント・リルートのフェイルオーバーも失敗します。 この例では、クライアントは次のアクションを実行します。
  1. クライアントは mydb2 への接続に失敗します。
  2. クライアントは server1 への接続に失敗します。
  3. クライアントは server2 への接続に失敗します。
  4. クライアントは、 db2dsdriver.cfg ファイルの < alternategroup> セクションにリストされている代替グループに、このファイルで指定されている順序で接続しようとします。
    1. クライアントは mydb3 への接続に失敗します。
    2. クライアントは正常に mydb4 に接続します。

mydb4 に接続した後、シームレスまたは非シームレスの動作の規則が適用されたままになります。 クライアントが mydb4 に接続できなかった場合、SQL30081N エラー・メッセージを受け取ります。

1 次サーバーへの後続の接続または既存の接続が失敗する
非 Java クライアントで mydb2 への接続が切断された場合、現在のグループの代替サーバーへの自動クライアント・リルートのフェイルオーバーも失敗します。 この例では、クライアントは次のアクションを実行します。
  1. クライアントは server1 への接続に失敗します。
  2. クライアントは server2 への接続に失敗します。
  3. クライアントは、 db2dsdriver.cfg ファイルの < alternategroup> セクションにリストされている代替グループに、このファイルで指定されている順序で接続しようとします。
    1. クライアントは正常に mydb3 に接続します。

mydb3 に接続した後、シームレスまたは非シームレスの動作の規則が適用されたままになります。

代替グループへの既存の接続が失敗する
非 Java クライアントが mydb2 への接続に失敗し、現在のグループの代替サーバーへの自動クライアント・リルートのフェイルオーバーも失敗し、その後 mydb3 代替グループへ正常に接続します。

クライアントで mydb3 への接続が切断された後、mydb4 に接続しようとします。 この例では、クライアントは mydb4 への接続に失敗します。

クライアントは SQL30081N エラー・メッセージを受け取ります。 1 次グループへの接続を再度試行するには、クライアントまたはアプリケーションを再始動する必要があります。