Multi-homed hosts

Hosts that have more than one network interface usually have one Internet Protocol (IP) address for each interface. Such hosts are called multi-homed hosts.

EGO identifies hosts by their official host name, so it needs to match each of the network addresses of multi-homed hosts with a single host name. To do this, the host name information must be configured so that all of the Internet addresses for a host resolve to the same name.

Multiple network interfaces

Some system manufacturers recommend that each network interface, and therefore, each Internet address, be assigned a different host name. Each interface can then be directly accessed by name. This setup is often used to make sure NFS requests go to the nearest network interface on the file server, rather than going through a router to some other interface. Configuring this way can confuse EGO, because there is no way to determine that the two different names (or addresses) mean the same host.

All host naming systems can be configured so that host address lookups always return the same name, while still allowing access to network interfaces by different names. Each host has an official name and a number of aliases, which are other names for the same host. By configuring all interfaces with the same official name but different aliases, you can refer to each interface by a different alias name while still providing a single official name for the host.

IP connectivity

Some or all hosts have multiple network interfaces that connect to physically segmented networks. You may not want EGO to use the first IP address according to DNS to initiate a connection.

IP preference

A host has multiple network interfaces that connect to physically connected networks, but for routing or performance reasons, you might want to assign network interface preferences to different activities.

For example, communication between a client and management hosts could use one network interface, and communication between compute and management hosts could use another network interface. While it might be physically possible for a socket client to use the first IP address of a socket server according to DNS to initiate a connection, this might not be desirable.

Host name lookup

A common DNS server may return a different IP address in host name lookups depending on which subnet that host is on (different BIND/DNS views). For example, host named hostA might resolve to 192.168.0.1 on one subnet and 10.0.0.1 on another subnet on the same network.

Filtering a preferred IP address from multiple IP addresses

Use EGO_PREFERRED_IP_MASK in ego.conf to specify the preferred IP address for multiple network interfaces.

If more than one IP address matches the IP mask, the first matching IP address is used as the preferred IP address. If no addresses match the mask, the order of the address list is not changed.

Under some circumstances (when you have multiple aliases), you also need to specify the unique official name and list the aliases.

IP mask format

Specify the IP mask as conventional CIDR blocks, consisting of a four-part dotted-decimal address, followed by a slash, then a number from 0 to 32:

nnn.nnn.nnn.nnn/nn

The number following the slash is the prefix length, which is the number of shared initial bits, counting from the left-hand side of the address. An IP address matches the CIDR prefix if the initial nn bits of the address and the CIDR prefix are the same.

For example, if the IP mask is defined as 10.0.0.0/8, and the address list contains

192.168.0.1

10.1.1.1

192.168.1.1

The address list is reordered to reflect the IP preference:

10.1.1.1

192.168.0.1

192.168.1.1

Identifying aliases

The aliases and associated IP address must be listed in the hosts file under EGO_CONFDIR.

Note:

The configuration of the hosts file in the EGO_CONFDIR directory only affects the behavior of Symphony daemons and clients. It has no impact on OS commands or user applications.

Note:

The hosts file in the EGO_CONFDIR directory takes precedence over the OS hosts file.

Example

  • You have two networks: NetA 172.0.0.* and NetB 10.0.0.*

  • The client is on NetA but it cannot access NetB.

  • The client host name is Client1 and it has one IP address: 172.0.0.200.

  • The management hosts are linked to both networks.

  • The master host (also running some other system services) has one official host name (MgmtHost1) but two aliases:
    • MgmtHost1a (172.0.0.1)

    • MgmtHost1b (10.0.0.1)

  • SSM host has one official name (MgmtHost2) but two aliases:
    • MgmtHost2a (172.0.0.2)

    • MgmtHost2b (10.0.0.2)

  • Compute hosts are linked to NetB network with one host name (ComputeHost*) and with one IP address (10.0.0.*).

  • NetB is faster and preferred.

On the client, you would set the following:

  1. In $EGO_CONFDIR/ego.conf, set EGO_PREFERRED_IP_MASK="172.0.0.0/8"

  2. In $EGO_CONFDIR/hosts, add the following lines:

    172.0.0.1 MgmtHost1 MgmtHost1a

    172.0.0.2 MgmtHost2 MgmtHost2a

On the grid, you would set the following:

  1. In $EGO_CONFDIR/ego.conf, set EGO_PREFERRED_IP_MASK="10.0.0.0/8"

  2. In $EGO_CONFDIR/hosts, add the following lines:

    172.0.0.1 MgmtHost1 MgmtHost1a
    10.0.0.1 MgmtHost1 MgmtHost1b
    172.0.0.2 MgmtHost2 MgmtHost2a
    10.0.0.2 MgmtHost2 MgmtHost2b

Result:

The client can connect to 172.0.0.* hosts but cannot access 10.0.0.* hosts. (Client cannot access the grid.)

Configure IP preference for multi-homed hosts

For network routing or performance reasons, you might want to assign network interface preferences to different activities. For example, if you want to specify a preferred IP address for initiating connections from compute hosts to management hosts and from management hosts to compute hosts.

  1. Edit ego.conf.
  2. Set EGO_PREFERRED_IP_MASK="ip_mask".

    where ip_mask is used to reorder the list of IP addresses for a host name so that a preferred IP address as determined by the mask is put first in the list, and that address is used to initiate the connection to the host.

    For example:

    EGO_PREFERRED_IP_MASK="10.0.0.0/8"
  3. Save ego.conf.
  4. Shut down and restart your cluster. Refer to Shut down Symphony cluster and Start Symphony cluster.