Managing HP Serviceguard for Linux, Eighth Edition, March 2008

Designing Highly Available Cluster Applications
Controlling the Speed of Application Failover
Appendix B342
Design for Multiple Servers
If you use multiple active servers, multiple service points can provide
relatively transparent service to a client. However, this capability
requires that the client be smart enough to have knowledge about the
multiple servers and the priority for addressing them. It also requires
access to the data of the failed server or replicated data.
For example, rather than having a single application which fails over to a
second system, consider having both systems running the application.
After a failure of the first system, the second system simply takes over
the load of the first system. This eliminates the start up time of the
application. There are many ways to design this sort of architecture, and
there are also many issues with this sort of design. This discussion will
not go into details other than to give a few examples.
The simplest method is to have two applications running in a
master/slave relationship where the slave is simply a hot standby
application for the master. When the master fails, the slave on the second
system would still need to figure out what state the data was in (i.e., data
recovery would still take place). However, the time to fork the application
and do the initial startup is saved.
Another possibility is having two applications that are both active. An
example might be two application servers which feed a database. Half of
the clients connect to one application server and half of the clients
connect to the second application server. If one server fails, then all the
clients connect to the remaining application server.
Design for Replicated Data Sites
Replicated data sites are a benefit for both fast failover and disaster
recovery. With replicated data, data disks are not shared between
systems. There is no data recovery that has to take place. This makes the
recovery time faster. However, there may be performance trade-offs
associated with replicating data. There are a number of ways to perform
data replication, which should be fully investigated by the application
designer.
Many of the standard database products provide for data replication
transparent to the client application. By designing your application to
use a standard database, the end-user can determine if data replication
is desired.