ユーザがあらかじめ用意したコマンドを特定のタイミングで実行することができます。実行タイミングの詳細は、“2.2.12 ユーザコマンド実行機能”を参照してください。本機能によりNIC切替方式運用の場合には、ARPテーブルのフラッシュ、インタフェース状態の変更、MTU長の変更などの処理を実行させることができます。また、GS/SURE連携方式運用の場合には、特定プロセスへのシグナル送信処理などを実行させることができます。実行させる為には、以下の設定を行う必要があります。なお、サンプルファイルが用意されていますので、ユーザ環境に適したスクリプトファイルを作成する場合の参考にしてください。
/etc/opt/FJSVhanet/script/interface/sha.interface.sam(IPアドレス活性、非活性時)
/etc/opt/FJSVhanet/script/failover/sha.failover.sam(伝送路異常検出時)
/etc/opt/FJSVhanet/script/patrol/sha.patrol.sam(待機パトロール異常、復旧検出時)
/etc/opt/FJSVhanet/script/host/host.sam
設定ファイルの配置先およびファイル名は仮想インタフェースの種別および仮想インタフェース名ごとに異なります。
/etc/opt/FJSVhanet/script/interface/shaX(IPアドレス活性、非活性時)
/etc/opt/FJSVhanet/script/failover/shaX(伝送路異常検出時)
/etc/opt/FJSVhanet/script/patrol/shaX(待機パトロール異常、復旧検出時)
※shaXは作成したNIC切替方式の仮想インタフェース名。
/etc/opt/FJSVhanet/script/host/hostIP
※hostIPは通信相手の仮想インタフェースのホスト名またはIPアドレス
/etc/opt/FJSVhanet/script/init.sh
注意
スクリプトファイル内では、伝送路二重化機能の運用コマンドは呼び出さないでください。
スクリプトファイル内で実行されるコマンドの出力メッセージは、標準出力には表示されません。出力メッセージの内容については、logger(1)コマンドでsyslogに出力して確認してください。
クラスタ構成の場合、IPアドレス活性、非活性時に実行されるNIC切替方式用のスクリプトは、運用ノードでのみ実行されます。待機ノードでは実行されません。
NIC切替方式運用時のスクリプトファイル呼出形式および定義ファイルサンプルを以下に示します。
(1) IPアドレス活性、非活性時
/bin/sh shaX param1 param2 param3 param4
activate:活性
inactivate:非活性
before:活性/非活性の前
after:活性/非活性の後
ifname:物理インタフェース名
inet6:アドレスファミリ(IPv6の場合のみ)
※IPv4の場合 param4 はありません。
#!/bin/sh # # All Rights Reserved, Copyright (c) FUJITSU LIMITED 2001 # #ident "%W% %G% %U% - FUJITSU" # # # Control interface for HA-Net # # # Params # # $1 activate or inactivate # $2 before or after # $3 physical interface name # $4 address family (IPv6 only) # # # Set Params # #INTERFACE=$3 #IP_ADDR1="xx.xx.xx.xx" #IP_ADDR2="yy.yy.yy.yy" #MAC_ADDR1="xx:xx:xx:xx:xx:xx" #MAC_ADDR2="yy:yy:yy:yy:yy:yy" cace $# in 3) ADDRESS_FAMILY="inet" ;; 4) if [ $4 = “inet6” ] then ADDRESS_FAMILY="inet6" else ADDRESS_FAMILY="unknown” fi ;; *) ADDRESS_FAMILY="unknown” ;; esac if [ $ADDRESS_FAMILY = "inet" ] then case "$1" in 'activate') # # Activate interface # case "$2" in 'before') # # script before activate interface # # echo "execute script before activate interface on" $INTERFACE > /dev/console #if [ ! $INTERFACE = "hmeX" ] #then # ifconfig $INTERFACE ether $MAC_ADDR1 #else # ifconfig $INTERFACE ether $MAC_ADDR2 #fi ;; 'after') # # script after activate interface # # echo "execute script after activate interface on" $INTERFACE > /dev/console #if [ ! $INTERFACE = "hmeX" ] #then # arp -d $IP_ADDR1 # ping $IP_ADDR2 2 #else # arp -d $IP_ADDR2 # ping $IP_ADDR1 2 #fi ;; *) ;; esac ;; 'inactivate') # # inactivate interface # case "$2" in 'before') # # script before inactivate interface # # echo "execute script before inactivate interface on" $INTERFACE > /dev/console ;; 'after') # # script after inactivate interface # # echo "execute script after inactivate interface on" $INTERFACE > /dev/console ;; *) ;; esac ;; *) ;; esac fi if [ $ADDRESS_FAMILY = "inet6" ] then case "$1" in 'activate') # # Activate interface # case "$2" in 'before') # # script before activate interface # # echo "execute script before activate interface on" $INTERFACE > /dev/console ;; 'after') # # script after activate interface # # echo "execute script after activate interface on" $INTERFACE > /dev/console ;; *) ;; esac ;; 'inactivate') # # inactivate interface # case "$2" in 'before') # # script before inactivate interface # # echo "execute script before inactivate interface on" $INTERFACE > /dev/console ;; 'after') # # script after inactivate interface # # echo "execute script after inactivate interface on" $INTERFACE > /dev/console ;; *) ;; esac ;; *) ;; esac fi exit 0 |
コマンド実行時にメッセージを出力し、MTU長の変更、ARPテーブルから該当する情報の削除、および通信の確認(pingコマンド実行)を実行する例を以下に示します。
なお、設定例の左側に記載されている3桁の数字は、説明用に行番号を出力していますので、実際のスクリプトファイルへの記載は不要です。
※IPv4のみで運用されている場合の設定例です。
001 #!/bin/sh 002 # 003 # All Rights Reserved, Copyright (c) FUJITSU LIMITED 2001 004 # 005 #ident "%W% %G% %U% - FUJITSU" 006 # 007 008 # 009 # Control interface for HA-Net 010 # 011 012 # 013 # Params 014 # 015 # $1 activate or inactivate 016 # $2 before or after 017 # $3 physical interface name 018 # $4 address family (IPv6 only) 019 020 # 021 # Set Params 022 # 023 024 INTERFACE=$3 025 IP_ADDR1="192.1.1.1" 026 IP_ADDR2="192.1.2.1" 027 MAC_ADDR1="02:00:00:00:00:00" 028 MAC_ADDR2="02:00:00:00:00:01" 029 030 case "$1" in 031'activate') 032 033 # 034 # Activate interface 035 # 036 case "$2" in 037 'before') 038 # 039 # script before activate interface 040 # 041 042 echo "execute script before activate interface on" $INTERFACE > /dev/console 043 if [ ! $INTERFACE = "hmeX" ] 044 then 045 ifconfig $INTERFACE ether $MAC_ADDR1 046 else 047 ifconfig $INTERFACE ether $MAC_ADDR2 048 fi 049 ;; 050 051 'after') 052 # 053 # script after activate interface 054 # 055 echo "execute script after activate interface on" $INTERFACE > /dev/console 056 ifconfig $INTERFACE mtu 1454 057 if [ ! $INTERFACE = "hmeX" ] 058 then 059 arp -d $IP_ADDR1 060 ping $IP_ADDR2 2 061 else 062 arp -d $IP_ADDR2 063 ping $IP_ADDR1 2 064 fi 065 ;; 066 *) 067 ;; 068 esac 069 070 ;; 071 072 'inactivate') 073 # 074 # inactivate interface 075 # 076 077 case "$2" in 078 'before') 079 # 080 # script before inactivate interface 081 # 082 083 echo "execute script before inactivate interface on" $INTERFACE > /dev/console 084 ;; 085 086 'after') 087 # 088 # script after inactivate interface 089 # 090 091 echo "execute script after inactivate interface on" $INTERFACE > /dev/console 092 ;; 093 094 *) 095 ;; 096 esac 097 098 ;; 099 100 *) 101 ;; 102 esac 103 104 exit 0 |
以下に設定例の説明をします。なお、説明中の[XXX]は設定例の行番号を示します。
インタフェース活性化時の処理を記述します。
コマンドを実行する旨のメッセージを出力し、インタフェース活性化前に処理するインタフェース種別により、インタフェース情報(MACアドレス)の設定を行います。
コマンドを実行する旨のメッセージを出力し、インタフェース活性化後にMTU長の変更を行い、該当するARP情報を削除し、通信の確認を行います。
インタフェース非活性化時の処理を記述します。
インタフェース非活性前にコマンドを実行する旨のメッセージを出力する。
インタフェース非活性後にコマンドを実行する旨のメッセージを出力する。
(2) 伝送路異常検出時
/bin/sh shaX param1
Primary: Primaryインタフェース異常
Secondary: Secondaryインタフェース異常
all: Primary/Secondaryインタフェース双方異常
retryout: pingコマンドのリトライアウト
pinghang: pingコマンドのハングアップ
#!/bin/sh # # All Rights Reserved, Copyright (c) FUJITSU LIMITED 2002 # #ident "%W% %G% %U% - FUJITSU" # # Control interface for HA-Net # # # Params # # $1 communication line state primary/secondary/all # $2 event exit code retryout/pinghang # # # Set Params # #STATE=$1 #EXIT_CODE=$2 #PROC="process_name" #kill -15 `/usr/bin/ps -e | /usr/bin/sed -n \ # -e'/'$PROC'$/s/[^0-9 \t].*//p' \ # ` > /dev/null 2>/dev/null #if [ $STATE = "primary" ] #then # if [ $EXIT_CODE = "retryout" ] # then # echo "execute script Polling failover : primary retryout" > /dev/console # elif [ $EXIT_CODE = "pinghang" ] # then # echo "execute script Polling failover : primary pinghang" > /dev/console # fi #fi #if [ $STATE = "secondary" ] #then # if [ $EXIT_CODE = "retryout" ] # then # echo "execute script Polling failover : secondary retryout" > /dev/console # elif [ $EXIT_CODE = "pinghang" ] # then # echo "execute script Polling failover : secondary pinghang" > /dev/console # fi #fi #if [ $STATE = "all" ] #then # if [ $EXIT_CODE = "retryout" ] # then # echo "execute script Polling failover : all retryout" > /dev/console # elif [ $EXIT_CODE = "pinghang" ] # then # echo "execute script Polling failover : all pinghang" > /dev/console # fi #fi |
注意
param2は、Solaris10かつGLSのパッチ914233-10以降を適用している場合に有効になります。
(3) 待機パトロール異常、復旧検出時
/bin/sh shaX param1 param2
establish:待機パトロール確立
recover:待機NIC監視復旧
fail:待機NIC異常
待機NICの物理インタフェース名:hmeXなどの物理インタフェース名
unknown:待機NICが未決定の場合
#!/bin/sh # # All Rights Reserved, Copyright (c) FUJITSU LIMITED 2002 # #ident "%W% %G% %U% - FUJITSU" # # Control interface for HA-Net # # # Params # # $1 standby NIC state establish/recovery/fail # $2 standby NIC name hmeX # # # Set Params # #STATE=$1 #NIC=$2 #if [ $STATE = "fail" ] #then # echo "execute script Patrol fail ($NIC)" > /dev/console #fi #if [ $STATE = "establish" ] #then # echo "execute script Patrol establish ($NIC)" > /dev/console #fi #if [ $STATE = "recover" ] #then # echo "execute script Patrol recover ($NIC)" > /dev/console #fi |
GS/SURE連携方式運用時のスクリプトファイル呼出形式および定義ファイルサンプルを以下に示します。
/bin/sh hostIP
# # All Rights Reserved, Copyright (c) FUJITSU LIMITED 2001 # #ident "%W% %G% %U% - FUJITSU" # # # Control interface for HA-Net # # # Set Params # #PROC="process_name" # # Procedure # # #kill -15 `/usr/bin/ps -e | /usr/bin/sed -n \ # -e'/'$PROC'$/s/[^0-9 \t].*//p' \ # ` > /dev/null 2>/dev/null # |
以下にDUMY プロセスにシグナル(SIGHUP)を送信する例を示します。なお、設定例の左側に記載されている3桁の数字は、説明用に行番号を出力していますので、実際のスクリプトファイルへの記載は不要です。
001 # 002 # All Rights Reserved, Copyright (c) FUJITSU LIMITED 2001 003 # 004 #ident "%W% %G% %U% - FUJITSU" 005 # 006 007 # 008 # Control interface for HA-Net 009 # 010 011 # 012 # Set Params 013 # 014 015 PROC="DUMY" 016 017 # 018 # Procedure 019 # 020 020 # 030 kill -1 `/usr/bin/ps -e | /usr/bin/sed -n \ -e'/'$PROC'$/s/[^0-9 \t].*//p' \ ` > /dev/null 2>/dev/null |
以下に設定例の説明をします。なお、説明中の[XXX]は設定例の行番号を示します。
停止するプロセス名を指定する。
プロセス一覧から該当するプロセスのプロセスIDを獲得し、そのプロセスに対してSIGTERMを送信する。
伝送路二重化機能のサービスを設定する場合の、スクリプトファイル呼出形式および設定例を以下に示します。
/bin/sh init.sh
伝送路二重化機能のサービス(svc:/network/fjsvhanet)の起動と連動して、任意のネットワークサービス svc:/network/serviceX を再起動する場合、以下のようにスクリプトを記述します。
#!bin/sh # #logger -p daemon.notice "execute script for fjsvhanet service" # svcadm restart svc:/network/serviceX # exit 0 |