Managing HP Serviceguard A.11.20.10 for Linux, December 2012

A.3.1.1 Obtain Enough IP Addresses
Each application receives a relocatable IP address that is separate from the stationary IP
address assigned to the system itself. Therefore, a single system might have many IP addresses,
one for itself and one for each of the applications that it normally runs. Therefore, IP addresses in
a given subnet range will be consumed faster than without high availability. It might be necessary
to acquire additional IP addresses.
Multiple IP addresses on the same network interface are supported only if they are on the same
subnetwork.
A.3.1.2 Allow Multiple Instances on Same System
Applications should be written so that multiple instances, each with its own application name and
IP address, can run on a single system. It might be necessary to invoke the application with a
parameter showing which instance is running. This allows distributing the users among several
systems under normal circumstances, but it also allows all of the users to be serviced in the case
of a failure on a single system.
A.3.2 Avoid Using SPU IDs or MAC Addresses
Design the application so that it does not rely on the SPU ID or MAC (link-level) addresses. The
SPU ID is a unique hardware ID contained in non-volatile memory, which cannot be changed. A
MAC address (also known as a NIC id) is a link-specific address associated with the LAN hardware.
The use of these addresses is a common problem for license servers, since for security reasons they
want to use hardware-specific identification to ensure the license isn't copied to multiple nodes.
One workaround is to have multiple licenses; one for each node the application will run on. Another
way is to have a cluster-wide mechanism that lists a set of SPU IDs or node names. If your application
is running on a system in the specified set, then the license is approved.
Previous generation HA software would move the MAC address of the network card along with
the IP address when services were moved to a backup system. This is no longer allowed in
Serviceguard.
There were a couple of reasons for using a MAC address, which have been addressed below:
Old network devices between the source and the destination such as routers had to be manually
programmed with MAC and IP address pairs. The solution to this problem is to move the MAC
address along with the IP address in case of failover.
Up to 20 minute delays could occur while network device caches were updated due to timeouts
associated with systems going down. This is dealt with in current HA software by broadcasting
a new ARP translation of the old IP address with the new MAC address.
A.3.3 Assign Unique Names to Applications
A unique name should be assigned to each application. This name should then be configured in
DNS so that the name can be used as input to gethostbyname(3), as described in the following
discussion.
A.3.3.1 Use DNS
DNS provides an API which can be used to map hostnames to IP addresses and vice versa. This
is useful for BSD socket applications such as telnet which are first told the target system name. The
application must then map the name to an IP address in order to establish a connection. However,
some calls should be used with caution.
Applications should not reference official hostnames or IP addresses. The official hostname and
corresponding IP address for the hostname refer to the primary LAN card and the stationary IP
address for that card. Therefore, any application that refers to, or requires the hostname or primary
IP address may not work in an HA environment where the network identity of the system that
supports a given application moves from one system to another, but the hostname does not move.
One way to look for problems in this area is to look for calls to gethostname(2) in the
application. HA services should use gethostname() with caution, since the response may change
262 Designing Highly Available Cluster Applications