DB2® for Linux, UNIX, and Windows servers
provide high availability for client applications, through workload
balancing and automatic client reroute. This support is available for applications that
use Java™ clients (JDBC, SQLJ,
or pureQuery®), as well
as non-Java clients (ODBC, CLI, .NET, OLE DB, PHP, Ruby, or embedded
SQL).
For Java clients,
high availability support requires IBM® Data Server Driver for JDBC and SQLJ version
3.58 or 4.8, or later.
High availability support for connections to
DB2 for Linux, UNIX, and Windows servers
includes:
- Automatic client reroute
- This support enables a client to recover from a failure by attempting
to reconnect to the database through an alternate server. Reconnection
to another server is called failover. For Java clients, automatic client reroute support
is always enabled.
Automatic client reroute capability for Java
applications is available with IBM Data Server Driver for JDBC and SQLJ type 4 connectivity or IBM Data Server Driver for JDBC and SQLJ type 2 connectivity.
Servers can provide automatic client
reroute capability in any of the following ways:
- Several servers are configured in a DB2 pureScale® instance.
A connection to a database is a connection to a member of that DB2 pureScale instance.
Failover involves reconnection to another member of the DB2 pureScale instance.
This environment requires that clients use TCP/IP to connect to the DB2 pureScale instance.
- A DB2 pureScale instance and
an alternate server are defined for a database. Failover first involves
reconnection to another member of the DB2 pureScale instance.
Failover to the alternate server is attempted only if no member of
the DB2 pureScale instance is
available.
- A DB2 pureScale instance is
defined for the primary server, and another DB2 pureScale instance is
defined for the alternate server. Failover first involves reconnection
to another member of the primary DB2 pureScale instance.
Failover to the alternate DB2 pureScale instance is
attempted only if no member of the primary DB2 pureScale instance is
available.
- A database is defined on a single server. The configuration for
that database includes specification of an alternate server. Failover
involves reconnection to the alternate server.
For Java, client applications, failover
for automatic client reroute can be seamless or non-seamless.
With non-seamless failover, when the client application reconnects
to another server, an error is always returned to the application,
to indicate that failover (connection to the alternate server) occurred.
With seamless failover, the driver does not return an error if a connection
failure and successful reconnection to an alternate server occur during
execution of the first SQL statement in a transaction.
In a DB2 pureScale instance,
automatic client reroute support can be used without workload balancing
or with workload balancing.
You can configure
automatic client reroute to include the following additional capability:
- Client affinities
- Client affinities is an automatic client reroute solution that
is controlled completely by the client. It is intended for situations
in which you need to connect to a particular primary server. If an
outage occurs during the connection to the primary server, you use
client affinities to enforce a specific order for failover to alternate
servers.
- Workload balancing
- Workload balancing can improve availability of a DB2 pureScale instance.
With
workload balancing, a DB2 pureScale instance ensures
that work is distributed efficiently among members.
Workload
balancing for Java applications is available with IBM Data Server Driver for JDBC and SQLJ type 4 connectivity only.
Java clients on
any operating system support workload balancing. The connection from
the client to the DB2 pureScale instance must
use TCP/IP.
When workload balancing is enabled, the client gets
frequent status information about the members of the DB2 pureScale instance through
a server list. The client caches the server list and uses the information
in it to determine the member to which the next transaction should
be routed.
For Java applications,
when JNDI is used, the cached server list can be shared by multiple
JVMs for the first connection. However workload balancing is always
performed within the context of a single JVM.
DB2 for Linux, UNIX, and Windows supports
two types of workload balancing:
- Connection-level workload balancing
- Connection-level workload balancing is performed at connection
boundaries. It is not supported for Java clients.
- Transaction-level workload balancing
- Transaction-level workload balancing is performed at transaction
boundaries. Client support for transaction-level workload balancing
is disabled by default for clients that connect to DB2 for Linux, UNIX, and Windows.