ページの先頭行へ戻る
PRIMECLUSTER Global Link Services 説明書 4.3 (伝送路二重化機能編)

3.6.10 ユーザコマンド実行機能の設定

ユーザがあらかじめ用意したコマンドを特定のタイミングで実行することができます。実行タイミングの詳細は、“2.2.11 ユーザコマンド実行機能”を参照してください。本機能によりNIC切替方式運用の場合には、ARPテーブルのフラッシュ、インタフェース状態の変更、MTU長の変更などの処理を実行させることができます。また、GS/SURE連携方式運用の場合には、特定プロセスへのシグナル送信処理などを実行させることができます。実行させる為には、以下の設定を行う必要があります。なお、サンプルファイルが用意されていますので、ユーザ環境に適したスクリプトファイルを作成する場合の参考にしてください。

NIC切替方式用のサンプルファイル
GS/SURE連携方式用のサンプルファイル
伝送路二重化機能のサービス用のサンプルファイル
【設定ファイル】

設定ファイルの配置先およびファイル名は仮想インタフェースの種別および仮想インタフェース名ごとに異なります。

NIC切替方式用の設定ファイル
  • /etc/opt/FJSVhanet/script/interface/shaX(IPアドレス活性、非活性時)

  • /etc/opt/FJSVhanet/script/failover/shaX(伝送路異常検出時)

  • /etc/opt/FJSVhanet/script/patrol/shaY(待機パトロール異常、復旧検出時)

※shaXは作成したNIC切替方式の仮想インタフェース名。
※shaYは作成したNIC切替方式の待機パトロールの仮想インタフェース名。

GS/SURE連携方式用の設定ファイル
  • /etc/opt/FJSVhanet/script/host/hostIP

※hostIPは通信相手の仮想インタフェースのホスト名またはIPアドレス

ただし、ホスト名を使用する場合は以下に注意してください。

/etc/inet/hostsにおいて同一IPアドレスで複数のホスト名を定義している場合、hostsファイルの先頭から見て最初に定義されているホスト名を使用してください。

伝送路二重化機能のサービス用の設定ファイル
  • /etc/opt/FJSVhanet/script/service.sh

  • /etc/opt/FJSVhanet/script/system/monitor

注意

  • スクリプトファイル内では、伝送路二重化機能の運用コマンドは呼び出さないでください。

  • スクリプトファイル内で実行されるコマンドの出力メッセージは、標準出力には表示されません。出力メッセージの内容については、logger(1)コマンドでsyslogに出力して確認してください。

  • クラスタ構成の場合、IPアドレス活性、非活性時に実行されるNIC切替方式用のスクリプトは、運用ノードでのみ実行されます。待機ノードでは実行されません。

3.6.10.1 NIC切替方式の設定内容

NIC切替方式運用時のスクリプトファイル呼出形式および定義ファイルサンプルを以下に示します。

(1) IPアドレス活性、非活性時

【スクリプト呼出形式】

/bin/sh shaX param1 param2 param3 param4

param1

activate:引継ぎIPアドレスの活性
inactivate:引継ぎIPアドレスの非活性
create:物理NICの活性 (論理IP引継ぎのみ)
delete:物理NICの非活性 (論理IP引継ぎのみ)

param2

before:活性/非活性の前
after:活性/非活性の後

param3

ifname:物理インタフェース名

param4

inet6:アドレスファミリ(IPv6の場合のみ)
※IPv4の場合 param4 はありません。

【定義ファイルサンプル】
#!/bin/sh
#
#       All Rights Reserved, Copyright (c) FUJITSU LIMITED 2011
#
#ident  "%W% %G% %U% - FUJITSU"
#

#
#  Control interface for HA-Net
#

#
#       Params
#
#       $1      activate or inactivate or create or delete
#       $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
#

# logger -p daemon.notice "execute script before activate interface on" $INTERFACE
#if [ ! $INTERFACE = "hmeX" ]
#then
#     ifconfig $INTERFACE ether $MAC_ADDR1
#else
#     ifconfig $INTERFACE ether $MAC_ADDR2
#fi
;;

'after')
#
# script after activate interface
#

# logger -p daemon.notice "execute script after activate interface on" $INTERFACE
#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
#

# logger -p daemon.notice "execute script before inactivate interface on" $INTERFACE
;;

'after')
#
# script after inactivate interface
#

# logger -p daemon.notice "execute script after inactivate interface on" $INTERFACE
;;

*)
        ;;
esac

;;

'create')
#
#  create physical interface (logical IP takeover only)
#

case "$2" in
'before')
#
# script before create interface
#

# logger -p daemon.notice "execute script before create interface on" $INTERFACE
;;

'after')
#
# script after create interface
#

# logger -p daemon.notice "execute script after create interface on" $INTERFACE
;;

*)
        ;;
esac

;;

'delete')
#
#  delete physical interface (logical IP takeover only)
#

case "$2" in
'before')
#
# script before delete interface
#

# logger -p daemon.notice "execute script before delete interface on" $INTERFACE
;;

'after')
#
# script after delete interface
#

# logger -p daemon.notice "execute script after delete interface on" $INTERFACE
;;

*)
        ;;
esac

;;

*)
        ;;
esac

fi

if [ $ADDRESS_FAMILY = "inet6" ]
then

case "$1" in
'activate')

#
# Activate interface
#

case "$2" in
'before')
#
# script before activate interface
#

# logger -p daemon.notice "execute script before activate interface on" $INTERFACE

;;

'after')
#
# script after activate interface
#

# logger -p daemon.notice "execute script after activate interface on" $INTERFACE

;;

*)
        ;;
esac

;;

'inactivate')
#
# inactivate interface
#

case "$2" in
'before')
#
# script before inactivate interface
#

# logger -p daemon.notice "execute script before inactivate interface on" $INTERFACE
;;

'after')
#
# script after inactivate interface
#

# logger -p daemon.notice "execute script after inactivate interface on" $INTERFACE
;;

*)
        ;;
esac

;;

'create')
#
#  create physical interface (logical IP takeover only)
#

case "$2" in
'before')
#
# script before create interface
#

# logger -p daemon.notice "execute script before create interface on" $INTERFACE
;;

'after')
#
# script after create interface
#

# logger -p daemon.notice "execute script after create interface on" $INTERFACE
;;

*)
        ;;
esac

;;

'delete')
#
#  delete physical interface (logical IP takeover only)
#

case "$2" in
'before')
#
# script before delete interface
#

# logger -p daemon.notice "execute script before delete interface on" $INTERFACE
;;

'after')
#
# script after delete interface
#

# logger -p daemon.notice "execute script after delete interface on" $INTERFACE
;;

*)
        ;;
esac

;;

*)
        ;;
esac

fi

exit 0

(2) 伝送路異常検出時

【スクリプト呼出形式】

/bin/sh shaX param1

param1

Primary: Primaryインタフェース異常
Secondary: Secondaryインタフェース異常
all: Primary/Secondaryインタフェース双方異常

【定義ファイルサンプル】
#!/bin/sh
#
#       All Rights Reserved, Copyright (c) FUJITSU LIMITED 2011
#
#ident  "%W% %G% %U% - FUJITSU"
#
# Control interface for HA-Net
#
#
#     Params
#
#     $1  communication line state    primary/secondary/all
#
#
# Set Params
#
#STATE=$1
#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
# logger -p daemon.notice "execute script Polling fail : primary" 
#fi
#if [ $STATE = "secondary" ]
#then
# logger -p daemon.notice "execute script Polling fail : secondary" 
#fi
#if [ $STATE = "all" ]
#then
# logger -p daemon.notice "execute script Polling failover" 
#fi

(3) 待機パトロール異常、復旧検出時

【スクリプト呼出形式】

/bin/sh shaX param1 param2

param1

establish:待機パトロール確立
recover:待機NIC監視復旧
fail:待機NIC異常

param2

待機NICの物理インタフェース名:hmeXなどの物理インタフェース名
unknown:待機NICが未決定の場合

【定義ファイルサンプル】
#!/bin/sh
#
#       All Rights Reserved, Copyright (c) FUJITSU LIMITED 2011
#
#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
# logger -p daemon.notice "execute script Patrol fail ($NIC)" 
#fi
#if [ $STATE = "establish" ]
#then
# logger -p daemon.notice "execute script Patrol establish ($NIC)" 
#fi
#if [ $STATE = "recover" ]
#then
# logger -p daemon.notice "execute script Patrol recover ($NIC)" 
#fi

3.6.10.2 GS/SURE連携方式の設定内容

GS/SURE連携方式運用時のスクリプトファイル呼出形式および定義ファイルサンプルを以下に示します。

【スクリプト呼出形式】

/bin/sh hostIP

【定義ファイルサンプル】
#
#       All Rights Reserved, Copyright (c) FUJITSU LIMITED 2011
#
#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
#

3.6.10.3 伝送路二重化機能のサービスの設定内容

伝送路二重化機能のサービスを設定する場合の、スクリプトファイル呼出形式および設定例を以下に示します。

(1) サービス起動時

サービス起動時のスクリプトファイル呼出形式および定義ファイルサンプルを以下に示します。

【スクリプト呼出形式】

/bin/sh service.sh param1

param1

fjsvhanet:      伝送路二重化機能のサービス起動
fjsvhanet-poll:  伝送路二重化機能の伝送路監視サービスの起動

【定義ファイルサンプル】
#!/bin/sh
#
#       All Rights Reserved, Copyright (c) FUJITSU LIMITED 2011
#
#ident  "%W% %G% %U% - FUJITSU"
#
#       custom initialize script for fjsvhanet and fjsvhanet-poll service
#
#
#       Params
#
#       $1      Started service name    fjsvhanet or fjsvhanet-poll
#

case "$1" in

'fjsvhanet')
        #
        # add procedure for fjsvhanet service
        #
        # logger -p daemon.notice "execute script for fjsvhanet service"
        #
        # svcadm restart svc:/network/xxxxxxxx
        #
        ;;

'fjsvhanet-poll')
        #
        # add procedure for fjsvhanet-poll service
        #
        # logger -p daemon.notice "execute script for fjsvhanet-poll service"
        #
        # svcadm restart svc:/network/xxxxxxxx
        #
        ;;

*)
        ;;

esac

exit 0

(2) セルフチェック機能での異常検出時

セルフチェック機能のスクリプトファイル呼出形式および定義ファイルサンプルを以下に示します。

【スクリプト呼出形式】

/bin/sh monitor param1 param2

param1

driver:仮想ドライバ
daemon:制御デーモン

param2

hungup:仮想ドライバもしくは制御デーモンのハングアップを検出
error:仮想ドライバもしくは制御デーモンの異常を検出
process:制御デーモンの異常停止を検出

【定義ファイルサンプル】
#!/bin/sh
#
#       All Rights Reserved, Copyright (c) FUJITSU LIMITED 2011
#
#ident  "%W% %G% %U% - FUJITSU"
#

#
#  Control interface for HA-Net
#

#
#       Params
#
#       $1      driver  ... sha driver
#               daemon  ... hanetctld
#       $2      hungup  ... hanetctld or driver hungup has been detected.
#               error   ... hanetctld or driver i/o error has been detected.
#               process ... hanetctld process does not exist.
#

COMPO=$1
ERRKIND=$2

case $COMPO
in
driver)
        #
        # script when a driver error is detected.
        #


;;

daemon)
        #
        # script when a daemon error is detected.
        #


;;
esac

exit 0