Hitachi

高信頼化システム監視機能 HAモニタ AIX(R)編


6.12.6 ユーザコマンドのコーディング例

ユーザコマンドのコーディング例として,サーバのIPアドレスを切り替える処理の例について説明します。(1)では,コーディング例の一部分を取り上げて,ユーザコマンドのコーディング方法を説明します。(2)では,コーディング例全体を示します。

なお,サーバのIPアドレスを切り替える処理は,LANの状態設定ファイルを設定する方法でも実現できます。LANの状態設定ファイルを設定する場合,ユーザコマンドの作成は不要です。

〈この項の構成〉

(1) コーディング例で示すユーザコマンドの説明

サーバが使用するIPアドレスを,次のタイミングで追加・削除する場合について説明します。

これらのタイミングを次に示します。図中で示す番号は,コーディング例の一部分と対応しています。

図6‒38 ユーザコマンドのコーディング例で示す発行タイミング

[図データ]

ユーザコマンドのコーディング例と発行タイミングの対応を次に示します。

図6‒39 ユーザコマンドのコーディング例と発行タイミングの対応

[図データ]

(1)では,サーバ起動時(サーバ起動処理の開始時点)に実行サーバで実行したい処理を記述します。この例では,IPアドレスを追加するコマンドとしてipaddr_addを記述しています。

(2)では,サーバ起動時(サーバ起動処理の開始時点)に待機サーバで実行したい処理を記述します。この例では何も実行しないため,何も記述していません。

(3)では,実行サーバ障害時(障害処理の開始時点)に実行サーバで実行したい処理を記述します。この例では,IPアドレスを削除するコマンドとしてipaddr_deleteを記述しています。

(4)では,実行サーバ障害時(障害処理の開始時点)に待機サーバで実行したい処理を記述します。この例では,IPアドレスを追加するコマンドとしてipaddr_addを記述しています。

(1)から(4)の発行タイミングごとに,HAモニタから渡される変数とHAモニタが発行するユーザコマンドの対応を次に示します。

表6‒13 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

注※ ユーザコマンド名およびサーバ識別名はそれぞれ次を仮定しています。

(2) コーディング例

このコーディング例は,サンプルファイルとしてHAモニタのサンプルファイル用ディレクトリの下に格納されています。

#Definition for server1
SERV1="server1"
IPADDR_SERV1="aaa.a.a.a"
BROADCAST_SERV1="aaa.a.a.255"
IFNAME_SERV1="en0"
 
#Definition for server2
SERV2="server2"
IPADDR_SERV2="bbb.b.b.b"
BROADCAST_SERV2="bbb.b.b.255"
IFNAME_SERV2="en1"
 
#####################################################################
# Add IPaddress   
#####################################################################
#ipaddr_add()
#{
 
#       /usr/sbin/ifconfig $WIFNAME inet $WIPADDR alias netmask 255.255.255.0 broadcast $WBROADCAST
#       echo  $?
 
#       return 0
#}
#####################################################################
# Delete IPaddress
#####################################################################
#ipaddr_delete()
#{
 
#       /usr/sbin/ifconfig $WIFNAME inet $WIPADDR delete
#       echo  $?
 
#       return 0
#}
# usrcommand defined
 
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"
 
###############################################################
# host
###############################################################
#if [ "$1" = "-m" ]
#   then
#       exit  1
#   fi
 
###############################################################
# servers
###############################################################
#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