非 Java クライアントから Db2 への接続のための代替グループ
バージョン 9.7 フィックスパック 5 およびそれ以降のフィックスパックのリリースの非 Java クライアントの高可用性を向上するために、現在のグループへの接続を再確立できなかった場合、自動クライアント・リルートのための追加のフェイルオーバー・メカニズムとして代替グループを使用します。
デフォルトで、非 Java クライアントは、自動クライアント・リルート (ACR) が使用可能になっています。 この機能は、サーバーへの接続を再確立できなかった場合に、現在のグループ内の代替サーバーへの自動フェイルオーバーを提供します。
- db2dsdriver.cfg ファイルの < acr> セクションの < alternategroup> エレメント内で、代替グループごとに < database> エレメントを定義します。 <database> エレメント内に <parameter> エレメントを指定しないでください。パラメーター設定は 1 次グループから継承されます。 <alternategroup> エレメント内に複数の <database> エレメントを定義することができます。 <database> エレメントの順序は、フェイルオーバー中に使用される順序になります。
- 代替グループへのフェイルオーバー接続からのエラー・メッセージを抑止したい場合は、 enableAlternateGroupSeamlessACR パラメーターを <alternategroup> エレメントで true に設定します。
デフォルトの ACR の再試行期間は 10 分です。 代替グループを定義すると、この期間は 2 分に短縮されます。
非 Java クライアントが代替グループに接続されている場合、 1 次グループ内の <database> エレメントのすべての接続設定とパラメーター設定は、代替グループ内のデータベースへの接続によって継承されます。
非 Java クライアントが代替グループのデータベースに接続した後、1 次グループへのフェイルバックは提供されません。 1 次グループにもう一度接続するには、アプリケーションまたはクライアントを再始動する必要があります。
代替グループは、ACR およびワークロード・バランシングでのみサポートされています。 クライアントのアフィニティーが構成されている場合、代替グループの定義は無視されます。
例
<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>
- 1 次グループへの最初の接続が失敗する
- 非 Java クライアントが最初の試行で 1 次グループへの接続に失敗した場合、現在のグループの代替サーバーへの自動クライアント・リルートのフェイルオーバーも失敗します。 この例では、クライアントは次のアクションを実行します。
- クライアントは mydb2 への接続に失敗します。
- クライアントは server1 への接続に失敗します。
- クライアントは server2 への接続に失敗します。
- クライアントは、 db2dsdriver.cfg ファイルの < alternategroup> セクションにリストされている代替グループに、このファイルで指定されている順序で接続しようとします。
- クライアントは mydb3 への接続に失敗します。
- クライアントは正常に mydb4 に接続します。
mydb4 に接続した後、シームレスまたは非シームレスの動作の規則が適用されたままになります。 クライアントが mydb4 に接続できなかった場合、SQL30081N エラー・メッセージを受け取ります。
- 1 次サーバーへの後続の接続または既存の接続が失敗する
- 非 Java クライアントで mydb2 への接続が切断された場合、現在のグループの代替サーバーへの自動クライアント・リルートのフェイルオーバーも失敗します。 この例では、クライアントは次のアクションを実行します。
- クライアントは server1 への接続に失敗します。
- クライアントは server2 への接続に失敗します。
- クライアントは、 db2dsdriver.cfg ファイルの < alternategroup> セクションにリストされている代替グループに、このファイルで指定されている順序で接続しようとします。
- クライアントは正常に mydb3 に接続します。
mydb3 に接続した後、シームレスまたは非シームレスの動作の規則が適用されたままになります。
- 代替グループへの既存の接続が失敗する
- 非 Java クライアントが mydb2 への接続に失敗し、現在のグループの代替サーバーへの自動クライアント・リルートのフェイルオーバーも失敗し、その後 mydb3 代替グループへ正常に接続します。
クライアントで mydb3 への接続が切断された後、mydb4 に接続しようとします。 この例では、クライアントは mydb4 への接続に失敗します。
クライアントは SQL30081N エラー・メッセージを受け取ります。 1 次グループへの接続を再度試行するには、クライアントまたはアプリケーションを再始動する必要があります。