This appendix contains an example ha.conf configuration file. The sections in this appendix are as follows:
The example configuration file in the next section describes a cluster with these characteristics:
The nodes are two rackmount Origin2000 servers with the hostnames failsafe1 and failsafe2 (rackmount Origin2000s have MMSC system controllers).
Interface ef0 on failsafe1 has the fixed IP address failsafe1. Similarly, interface ef0 on failsafe2 has the fixed IP address failsafe2.
Interface ef0 on failsafe1 has an IP alias called stocks. Similarly, ef0 on failsafe2 has an IP alias called bonds.
Two XLV logical volumes use disk space on shared disk storage. The primary node for both of them is failsafe1. The volumes are /dev/xlv/vol_shared1 and /dev/xlv/vol_shared2.
The volume /dev/xlv/vol_shared1 has a filesystem that is mounted at /shared1. Similarly, the volume /dev/xlv/vol_shared2 has a filesystem that is mounted at /shared2.
The filesystems mounted at /shared1 and /shared2 on failsafe1 are exported for NFS mounting. Clients mount the filesystems using the IP alias stocks.
Each node is a web server for the Netscape Enterprise Server.
Clients access the Enterprise Server on failsafe1 using the IP address 192.0.2.3 and port number 443. Similarly, clients access the Enterprise Server on failsafe2 using the IP address 192.0.2.4 and port number 443. These are high-availability IP addresses that have been ifconfig'd to the ef0 interfaces on their nodes.
These IRIS FailSafe configuration choices have been made:
IRIS FailSafe e-mail notifications are sent to the account fsafe_admin on the local node.
If one node has a power failure, the other node should attempt to go to degraded state.
All failures should cause failovers.
The serial port /dev/ttyd2 on each node is used for the serial cable to the system controller port on the other node.
Both nodes should move to normal state after a failure.
If the interface ef0 on failsafe1 fails, its high-availability IP address (IP alias) stocks is failed over to interface ef0 on failsafe2. Similarly, if the interface ef0 on failsafe2 fails, its high-availability IP address (IP alias) bonds is failed over to interface ef0 on failsafe1.
If the private network fails, IRIS FailSafe uses the public network and the ef0 interfaces (IP addresses failsafe1 and failsafe2) instead.
Re-MACing isn't needed.
The statmon directory for the filesystems mounted at /shared1 and /shared2 is /shared1/statmon.
After a failover, don't restart the Enterprise Server on the surviving node.
Monitor the Enterprise Servers using type 3 monitoring and the search string ns-httpd.
The configuration file shown below describes the configuration described in the previous section.
system-configuration
{
mail-dest-addr = fsafe_admin@localhost
pwrfail = true
monitor-failures = on
}
node failsafe1
{
interface failsafe1-ef0
{
name = ef0
ip-address = failsafe1
netmask = 0xffffff00
broadcast-addr = 192.0.2.255
}
heartbeat
{
hb-private-ipname = priv-failsafe1
hb-public-ipname = failsafe1
hb-probe-time = 5
hb-timeout = 5
hb-lost-count = 3
}
reset-tty = /dev/ttyd2
sys-ctlr-type = MMSC
controlled-failback = false
}
node failsafe2
{
interface failsafe2-ef0
{
name = ef0
ip-address = failsafe2
netmask = 0xffffff00
broadcast-addr = 192.0.2.255
}
heartbeat
{
hb-private-ipname = priv-failsafe2
hb-public-ipname = failsafe2
hb-probe-time = 5
hb-timeout = 5
hb-lost-count = 3
}
reset-tty = /dev/ttyd2
sys-ctlr-type = MMSC
controlled-failback = false
}
interface-pair one
{
primary-interface = failsafe1-ef0
secondary-interface = failsafe2-ef0
re-mac = false
netmask = 0xffffff00
broadcast-addr = 192.0.2.255
ip-aliases = ( stocks )
}
interface-pair two
{
primary-interface = failsafe2-ef0
secondary-interface = failsafe1-ef0
re-mac = false
netmask = 0xffffff00
broadcast-addr = 192.0.2.255
ip-aliases = ( bonds )
}
application-class volumes
{
server-node = failsafe1
server-node = failsafe2
}
volume vol_shared1
{
server-node = failsafe1
backup-node = failsafe2
devname = vol_shared1
}
volume fs1_1
{
server-node = failsafe1
backup-node = failsafe2
devname = vol_shared2
}
application-class filesystems
{
server-node = failsafe1
}
filesystem fs_shared1
{
mount-point = /shared1
mount-info
{
fs-type = xfs
volume-name = vol_shared1
mode = rw,noauto
}
}
filesystem fs_shared2
{
mount-point = /shared2
mount-info
{
fs-type = xfs
volume-name = vol_shared2
mode = rw,noauto
}
}
application-class nfs
{
server-node failsafe1
{
statmon-dir = /shared1/statmon
ip-aliases = ( stocks )
}
}
nfs nfs_shared1
{
filesystem = fs_shared1
export-point = /shared1
export-info = rw,wsync,anon=root
ip-address = stocks
}
nfs nfs_shared2
{
filesystem = fs_shared2
export-point = /shared2
export-info = rw,wsync,anon=root
ip-address = stocks
}
application-class webserver
{
server-node = failsafe1
server-node = failsafe2
}
webserver web-stocks
{
server-node = failsafe1
backup-node = failsafe2
httpd-script = /etc/init.d/ns_enterprise
httpd-options-file = ns_enterprise.options
httpd-restart = false
webserver-num = 1
web-config1
{
monitoring-level = 3
search-string = ns-httpd
ip-address = 192.0.2.3
port-num = 443
httpd-dir = /usr/ns-home/https-stocks
}
}
webserver web-bonds
{
server-node = failsafe2
backup-node = failsafe1
httpd-script = /etc/init.d/ns_enterprise
httpd-options-file = ns_enterprise.options
httpd-restart = false
webserver-num = 1
web-config1
{
monitoring-level = 3
search-string = ns-httpd
ip-address = 192.0.2.4
port-num = 443
httpd-dir = /usr/ns-home/https-bonds
}
}
application-class main
{
server-node = failsafe1
server-node = failsafe2
}
action main
{
giveaway = /var/ha/actions/giveaway
giveback = /var/ha/actions/giveback
takeback = /var/ha/actions/takeback
takeover = /var/ha/actions/takeover
kill = /usr/etc/ha_kill
}
action-timer main
{
start-monitor-time = 90
}
internal
{
short-timeout = 5
long-timeout = 60
version-major = 1
version-minor = 2
}
application-class interfaces
{
server-node = failsafe1
server-node = failsafe2
agent = /usr/etc/ha_ifa
}
interface-agent {
start-monitor-time = 60
interface-probe-interval = 30
interface-probe-timeout = 20
remote-send-probe-interval = 25
remote-send-timeout = 10
}
action-timer interfaces
{
start-monitor-time = 60
lmon-probe-time = 60
lmon-timeout = 60
retry-count = 5
}
action interfaces
{
local-monitor = /var/ha/actions/ha_ifa_lmon
}
action-timer volumes
{
start-monitor-time = 300
lmon-probe-time = 300
lmon-timeout = 60
retry-count = 1
}
action volumes
{
local-monitor = /var/ha/actions/ha_vol_lmon
}
action-timer filesystems
{
start-monitor-time = 60
lmon-probe-time = 120
lmon-timeout = 60
retry-count = 1
}
action filesystems
{
local-monitor = /var/ha/actions/ha_filesys_lmon
}
action-timer nfs
{
start-monitor-time = 60
lmon-probe-time = 60
lmon-timeout = 120
retry-count = 2
}
action nfs
{
local-monitor = /var/ha/actions/ha_nfs_lmon
}
action-timer webserver
{
start-monitor-time = 60
lmon-probe-time = 20
lmon-timeout = 30
retry-count = 1
}
action webserver
{
local-monitor = /var/ha/actions/ha_web_lmon
}
|