高信頼化システム監視機能 HAモニタ HP-UX(IPF)編
ユーザコマンドのコーディング例として,サーバのIPアドレスを切り替える処理の例について説明します。(1)では,コーディング例の一部分を取り上げて,ユーザコマンドのコーディング方法を説明します。(2)では,コーディング例全体を示します。
なお,サーバのIPアドレスを切り替える処理は,LANの状態設定ファイルを設定する方法でも実現できます。LANの状態設定ファイルを設定する場合,ユーザコマンドの作成は不要です。
サーバが使用するIPアドレスを,次のタイミングで追加・削除する場合について説明します。
これらのタイミングを次に示します。図中で示す番号は,コーディング例の一部分と対応しています。
図6-31 ユーザコマンドのコーディング例で示す発行タイミング
ユーザコマンドのコーディング例と発行タイミングの対応を次に示します。
図6-32 ユーザコマンドのコーディング例と発行タイミングの対応
(1)では,サーバ起動時(サーバ起動処理の開始時点)に実行サーバで実行したい処理を記述します。この例では,IPアドレスを追加するコマンドとしてipaddr_addを記述しています。
(2)では,サーバ起動時(サーバ起動処理の開始時点)に待機サーバで実行したい処理を記述します。この例では何も実行しないため,何も記述していません。
(3)では,実行サーバ障害時(障害処理の開始時点)に実行サーバで実行したい処理を記述します。この例では,IPアドレスを削除するコマンドとしてipaddr_deleteを記述しています。
(4)では,実行サーバ障害時(障害処理の開始時点)に待機サーバで実行したい処理を記述します。この例では,IPアドレスを追加するコマンドとしてipaddr_addを記述しています。
(1)から(4)の発行タイミングごとに,HAモニタから渡される変数とHAモニタが発行するユーザコマンドの対応を次に示します。
表6-8 HAモニタから渡される変数とHAモニタが発行するユーザコマンドの対応
| 発行タイミングの番号 | $4 | $5 | $6 | HAモニタが発行するユーザコマンド※ |
|---|---|---|---|---|
| (1) | online | -s | start | /usr/bin/usrcmd -n server -k online -s start |
| (2) | standby | -s | start | /usr/bin/usrcmd -n server -k standby -s start |
| (3) | online | -a | start | /usr/bin/usrcmd -n server -k online -a start |
| (4) | standby | -a | start | /usr/bin/usrcmd -n server -k standby -a start |
注※ ユーザコマンド名およびサーバ識別名はそれぞれ次を仮定しています。
このコーディング例は,サンプルファイルとしてHAモニタのサンプルファイル用ディレクトリの下に格納されています。
#!/bin/sh
# The definition of the 1st server
SERV1="server1"
IPADDR_SERV1="a.b.c.d"
BROADCAST_SERV1="e.f.g.h"
IFNAME_SERV1="lanX:Y1"
# The definition of the 2nd server
SERV2="server2"
IPADDR_SERV2="i.j.k.l"
BROADCAST_SERV2="m.n.o.p"
IFNAME_SERV2="lanX:Y2"
# The alias IP address is added to the LAN interface.
ipaddr_add()
{
/usr/sbin/ifconfig $WIFNAME inet $WIPADDR netmask 255.255.255.0 broadcast $WBROADCAST
return 0
}
# The alias IP address is deleted from the LAN interface.
ipaddr_delete()
{
/usr/sbin/ifconfig $WIFNAME inet 0
return 0
}
# Main
KIND_ONLINE="online"
KIND_STANDBY="standby"
SERV_START="-s"
SERV_END="-e"
SERV_PLANEND="-p"
SERV_ABORT="-a"
SERV_ABORT_NS="-o"
SERV_FAULT="-f"
SERV_HOSTDOWN="-h"
SERV_PLANSWAP="-w"
STATUS_START="start"
STATUS_END="end"
STATUS_SBYEND="sbyend"
# This user command terminates, when the state of HAmonitor has changed.
if [ "$1" = "-m" ]
then
exit 1
fi
# Processing of the server
for serv in $SERV1 $SERV2
do
if [ "$2" = "$serv" ]
then
case "$serv" in
"$SERV1" )
WIPADDR="$IPADDR_SERV1"
WBROADCAST="$BROADCAST_SERV1"
WIFNAME="$IFNAME_SERV1"
;;
"$SERV2" )
WIPADDR="$IPADDR_SERV2"
WBROADCAST="$BROADCAST_SERV2"
WIFNAME="$IFNAME_SERV2"
;;
esac
if [ "$4" = "$KIND_ONLINE" ]
then
case "$5" in
"$SERV_START" )
[ "$6" = "$STATUS_START" ] && ipaddr_add
;;
"$SERV_END" )
ipaddr_delete
;;
"$SERV_PLANEND" )
ipaddr_delete
;;
"$SERV_ABORT" )
[ "$6" = "$STATUS_START" ] && ipaddr_delete
;;
"$SERV_ABORT_NS" )
[ "$6" = "$STATUS_START" ] && ipaddr_delete
;;
"$SERV_PLANSWAP" )
[ "$6" = "$STATUS_START" ] && ipaddr_delete
;;
esac
else
case "$5" in
"$SERV_START" )
;;
"$SERV_END" )
;;
"$SERV_PLANEND" )
;;
"$SERV_ABORT" )
[ "$6" = "$STATUS_START" ] && ipaddr_add
;;
"$SERV_FAULT" )
ipaddr_delete
;;
"$SERV_HOSTDOWN" )
[ "$6" = "$STATUS_START" ] && ipaddr_add
;;
"$SERV_PLANSWAP" )
[ "$6" = "$STATUS_START" ] && ipaddr_add
;;
esac
fi
fi
done
exit 0
|
All Rights Reserved. Copyright (C) 2009, 2010, Hitachi, Ltd.