ページの先頭行へ戻る
PRIMECLUSTER  導入運用手引書 4.7

6.6 Online/Offlineスクリプトの設定

ISVアプリケーションや利用者アプリケーションを、userApplicationの状態遷移に連動して起動/停止するためには、Onlineスクリプト、OfflineスクリプトおよびCheckスクリプトを作成してください。

作成したスクリプトは、Cmdlineリソースに設定して、そのリソースをuserApplicationに設定します。詳細については、“6.7.3.1 Cmdlineリソースの設定”を参照してください。

ここでは、スクリプトの例と、スクリプト作成時の注意事項を説明します。

注意

Onlineスクリプト、Offlineスクリプト、およびCheckスクリプトでは、サーバ毎の設定 (”/etc/profile” や “/etc/bashrc”等)である環境変数の値が受継がれることを保証していません。このため、これらのスクリプトで使用する環境変数は各スクリプトの中で定義してください。

■サンプルスクリプト

Cmdlineリソースの設定では、OnlineスクリプトとOfflineスクリプトを、それぞれStartスクリプトとStopスクリプトとして設定します。以下に、サンプルを示します。

Startスクリプト/Stopスクリプト

#!/bin/sh
#
# Script.sample
#    Sample of Online/Offline Script
#
# Copyright(c) 2003 FUJITSU LIMITED.
# All rights reserved.
#
# $1 -c : OnlineScript
#    -u : OfflineScript

if [[ $1 = "-c" ]]; then
      # Start your application
elif [[ $1 = "-u" ]]; then
      # Stop your application
else
      # Default operation
      exit 1 # Error
fi
exit 0

上記のScript.sampleはStartスクリプトとStopスクリプトを兼ねています。
次にCheckスクリプトのサンプルを示します。

Checkスクリプト

#!/bin/sh
#
# Script.sample.check
#    Sample of Check script
#
# Copyright(c) 2003 FUJITSU LIMITED.
# All rights reserved.
#
# 対象リソースの現在の状態をチェックします。

# 状態が Online の場合:
      exit 0

# それ以外の状態の場合:
      exit 1

以上のスクリプトは、Cmdlineリソースに次のように設定します。

設定方法については“6.7.3.1 Cmdlineリソースの設定”を参照してください。

■スクリプト作成時の注意事項

●ホットスタンバイ運用の場合

Cmdlineリソースについてホットスタンバイ運用を行う場合には、次の対応が必要となります。

  1. Online/Offline/Checkスクリプトのホットスタンバイ対応

    Onlineスクリプト、OfflineスクリプトおよびCheckスクリプトをホットスタンバイ運用に対応した記述にします。 以下にホットスタンバイ運用に対応したOnline/Offlineスクリプトのサンプルを示します。

    Startスクリプト/Stopスクリプト(ホットスタンバイ運用)

    #!/bin/sh
    #
    # Script.sample
    #    Sample of Online/Offline Script
    #
    # Copyright(c) 2003 FUJITSU LIMITED.
    # All rights reserved.
    #
    # $1 -c : OnlineScript
    #    -u : OfflineScript
    
    if [[ $1 = "-c" ]]; then
          if [ ${HV_LAST_DET_REPORT} = "Offline" ]; then
                  if [ ${HV_INTENDED_STATE} = "Standby" ]; then
                          # commands for Offline -> Standby
                  else
                          # commands for Offline -> Online
                  fi
          else
                  # commands for Standby -> Online
          fi
    elif [[ $1 = "-u" ]]; then
          if [ ${HV_LAST_DET_REPORT} = "Standby" ]; then
                # commands for Standby -> Offline
          else
                # commands for Online -> Offline
          fi
    else
          # Default operation
          exit 1 # Error
    fi
    exit 0

    次にホットスタンバイ運用に対応したCheckスクリプトのサンプルを示します。

    Checkスクリプト(ホットスタンバイ運用)

    #!/bin/sh
    #
    # Script.sample.check
    #    Sample of Check script
    #
    # Copyright(c) 2003 FUJITSU LIMITED.
    # All rights reserved.
    #
    
    # 対象リソースの現在の状態をチェックします。
    
    # 状態が Online の場合:
       exit 0
    
    # 状態が Standby の場合:
       exit 4
    
    # 状態が Faulted の場合:
       exit 2
    
    # 状態が Offline の場合:
       exit 1
    
  2. Cmdlineリソースへの属性の設定

    CmdlineリソースのSTANDBYCAPABLE属性およびALLEXITCODES属性を有効にします。

    詳細については、“6.7.3.1 Cmdlineリソースの設定”を参照してください。

●Start/Stopスクリプトの終了コードについて

Start/Stopスクリプトの終了コードにより、userApplicationの状態遷移の動作が変わります。以下に終了コードと状態遷移の動作を示します。

0: スクリプトを正常終了させる場合です。

設定されたCmdlineリソースの状態遷移が正常に処理されたとみなされて、userApplicationの状態遷移処理が継続されます。userApplicationに設定された、すべてのリソースが正常に処理されるとuserApplicationの状態遷移が正常動作したことになります。

0以外 :スクリプトを異常終了させる場合です。

設定されたCmdlineリソースの状態遷移に異常が発生したとみなされて、userApplicationの状態遷移処理が中断します。

Checkスクリプトの終了コードについて

Cmdlineリソースの状態は、Checkスクリプトの終了コードにより判断されます。 以下に終了コードとCmdlineリソースの状態の対応を示します。

0: Online状態を示します。
0以外: Offline状態を示します。

CmdlineリソースのALLEXITCODES属性を有効にすると、Checkスクリプトはより詳細なリソース状態を返すことができるようになります。 以下にALLEXITCODES属性が有効な場合の終了コードとCmdlineリソースの状態の対応を示します。

0: Online状態を示します。
1: Offline状態を示します。
2: Faulted状態を示します。
3: Unknown状態を示します。
4: Standby状態を示します。
5: Onlinewarning状態を示します。
6: Offlinefaulted状態を示します。

※ 終了コード 3, 5, 6 は、特殊な状態を示す値であるため、PRIMECLUSTER 対応製品の指示がある場合のみ使用できます。また、上記以外の終了コードは使用できません。

●タイムアウトについて

指定された時間内にOnlineスクリプトまたはOfflineスクリプトの処理が完了しない場合はタイムアウトとなり、スクリプトの処理はシグナルSIGTERMにより中断され、状態遷移がエラーとなります。

デフォルト:300秒

タイムアウト値は Cmdlineリソースの「TIMEOUT」Flag値で指定可能です。

Cmdlineリソース作成時に、“6.7.3.1 Cmdlineリソースの設定”の“属性の変更”を参照し、適切なタイムアウト値を設定してください。また、Cmdlineリソース使用時にタイムアウトが発生した場合には、“10.3 クラスタアプリケーションの変更”によりタイムアウト値を適切な値に変更してください。

●環境変数

OnlineスクリプトおよびOfflineスクリプト実行時には、次の環境変数が設定されます。

設定される環境変数を以下に示します。

環境変数

概要

HV_APPLICATION

リソースが属している userApplication名が設定されます。

例) app1

HV_AUTORECOVER

スクリプトの呼び出しがAutoRecoverに起因するかどうかの情報が設定されます。AutoRecoverについては、“PRIMECLUSTER RMS 導入運用手引書”の“付録D 属性”を参照してください。

0: AutoRecoverに起因しない
1: AutoRecoverに起因する

HV_FORCED_REQUEST

オペレータ操作による強制フェイルオーバであるか否かを示す値が設定されます。

0: 強制フェイルオーバではない
1: 強制フェイルオーバである

HV_NODENAME

リソース名 が設定されます。

例) ManageProgram000_Cmd_APP1、RunScriptsAlways000_Cmd_APP1

HV_OFFLINE_REASON

リソースが Offline状態になる理由が設定されます。

SWITCH:userApplicationの切替え要求(hvswitch)でOfflineになった
STOP:userApplicationの停止要求(hvutil -f、hvutil -c)でOfflineになった
FAULT:リソース故障でOfflineになった
DEACT:userApplicationの非活性要求(hvutil -d)でOfflineになった
SHUT:RMSの停止要求(hvshut)でOfflineになった

HV_SCRIPT_TYPE

実行されたスクリプトの種類が設定されます。

Online: Onlineスクリプト
Offline: Offlineスクリプト

HV_LAST_DET_REPORT

現在のリソースの状態が設定されます。

Online : Online状態
Offline : Offline状態
Standby : Standby状態
Faulted : Faulted状態
Warning : Warning状態

HV_INTENDED_STATE

状態遷移完了後に予期されるリソースの状態が設定されます。

Online : Online状態
Offline : Offline状態
Standby : Standby状態
Faulted : Faulted状態
Warning : Warning状態

NODE_SCRIPTS_TIME_OUT

スクリプトのタイムアウト時間(秒)が設定されます。

例) 300

RMSにはその他にも環境変数が存在します。

参照

  • hvenv.local の詳細については、“PRIMECLUSTER RMS 導入運用手引書”の“1.9 環境変数”を参照してください。

  • RMSの環境変数の詳細については、“PRIMECLUSTER RMS 導入運用手引書”の“付録E 環境変数”を参照してください。