Managing HP Serviceguard for Linux, Tenth Edition, September 2012

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.
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.
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 over time if the application migrates. Applications that use gethostname()
to determine the name for a call to gethostbyname(3) should also be avoided for
the same reason. Also, the gethostbyaddr() call may return different answers over
time if called with a stationary IP address.
Instead, the application should always refer to the application name and relocatable IP
address rather than the hostname and stationary IP address. It is appropriate for the
application to call gethostbyname(3), specifying the application name rather than
Designing Applications to Run on Multiple Systems 313