Before you can use client affinities for automatic client reroute in CLI or .NET applications, you need to include elements in the <acr> section of the db2dsdriver.cfg configuration file to indicate that you want to use client affinities, and to identify the primary and alternate servers.
The following example shows how to enable client affinities for failover without failback.
Suppose that your db2dsdriver configuration file looks like this:
<database name="SAMPLE" host="v33ec065.svl.ibm.com" port="446">
<acr>
<parameter name="enableAcr" value="true"/>
<parameter name="maxAcrRetries" value="1"/>
<parameter name="acrRetryInterval" value="2"/>
<alternateserverlist>
<server name="server1"
hostname="v33ec067.svl.ibm.com"
port="446">
</server>
<server name="server2"
hostname="v33ec066.svl.ibm.com"
port="446">
</server>
<server name="server3"
hostname="v33ec065.svl.ibm.com"
port="446">
</server>
</alternateserverlist>
<affinitylist>
<list name="list1" serverorder="server1,server2,server3">
</list>
<list name="list2" serverorder="server3,server2,server1">
</list>
</affinitylist>
<clientaffinitydefined>
<!- this section has specific defined affinities -->
<client name="client1"
hostname="appsrv1.svl.ibm.com"
listname="list2">
</client>
<client name="client2"
hostname="appsrv2.svl.ibm.com"
listname="list1">
</client>
</clientaffinitydefined>
<clientaffinityroundrobin>
<client name="client3" hostname="appsrv3.svl.ibm.com">
<!- This entry is index 0. The number of servers is 3.
0 mod 3 is 0, so the first that is tried
during automatic client reroute is the server whose
index in <alternateserverlist> is 0 (server1).
The next server has index 1 mod 3, which is 1
(server2). The final server has index 2 mod 3,
which is 2 (server3). -->
</client>
<client name="client4" hostname="appsrv4.svl.ibm.com">
<!- This entry is index 1. The number of servers is 3.
1 mod 3 is 1, so the first that is tried
during automatic client reroute is the server whose
index in <alternateserverlist> is 1 (server2).
The next server has index 2 mod 3, which is 2
(server3). The final server has index 3 mod 3,
which is 0 (server1). -->
</client>
</clientaffinityroundrobin>
</acr>
</database>
The following example shows how to enable client affinities for failover with failback.
Suppose that your db2dsdriver configuration file looks like this:
<database name="SAMPLE" host="v33ec065.svl.ibm.com" port="446">
<acr>
<parameter name="enableAcr" value="true"/>
<parameter name="maxAcrRetries" value="1"/>
<parameter name="acrRetryInterval" value="2"/>
<parameter name="affinityFailbackInterval" value="300"/>
<alternateserverlist>
<server name="server1"
hostname="v33ec067.svl.ibm.com"
port="446">
</server>
<server name="server2"
hostname="v33ec066.svl.ibm.com"
port="446">
</server>
<server name="server3"
hostname="v33ec065.svl.ibm.com"
port="446">
</server>
</alternateserverlist>
<affinitylist>
<list name="list1" serverorder="server1,server2,server3">
</list>
<list name="list2" serverorder="server3,server2,server1">
</list>
</affinitylist>
<clientaffinitydefined>
<!- this section has specific defined affinities -->
<client name="client1"
hostname="appsrv1.svl.ibm.com"
listname="list2">
</client>
<client name="client2"
hostname="appsrv2.svl.ibm.com"
listname="list1">
</client>
</clientaffinitydefined>
<clientaffinityroundrobin>
<client name="client3" hostname="appsrv3.svl.ibm.com">
<!- This entry is index 0. The number of servers is 3.
0 mod 3 is 0, so the first that is tried
during automatic client reroute is the server whose
index in <alternateserverlist> is 0 (server1).
The next server has index 1 mod 3, which is 1
(server2). The final server has index 2 mod 3,
which is 2 (server3). -->
</client>
<client name="client4" hostname="appsrv4.svl.ibm.com">
<!- This entry is index 1. The number of servers is 3.
1 mod 3 is 1, so the first that is tried
during automatic client reroute is the server whose
index in <alternateserverlist> is 1 (server2).
The next server has index 2 mod 3, which is 2
(server3). The final server has index 3 mod 3,
which is 0 (server1). -->
</client>
</clientaffinityroundrobin>
</acr>
</database>