ページの先頭行へ戻る
PRIMECLUSTER 活用ガイド<クラスタ構築・運用時の留意点>

3.2.1 start/stop スクリプト

3.2.1.1 start/stopスクリプトの例

ホットスタンバイ運用以外の Start スクリプト、Stop スクリプトの例を以下に示します。
下記のスクリプト $FULL_PATH/script.sample は、以下の動作と設定を想定した例です。

[設定]
[属性]
[動作]

表3.2. にしたがい、待機系/運用系での動作を共通とした場合の例です。Start スクリプトと記載してある箇所は待機系と運用系で同じ処理が実行されます。同様に、Stop スクリプトと記載してある場所も同じ処理が実行されます。

上記以外の動作を想定する場合は、環境変数/属性を参照の上、適宜変更してください。

図3.5 ホットスタンバイ運用以外の Start スクリプト /Stop スクリプト

設定方法については、OS ごとに異なります。それぞれの "PRIMECLUSTER 導入運用手引書" を参照してください。

また、以下のサンプル $FULL_PATH/Script は、ホットスタンバイ運用に対応した下記の動作と設定を想定した例です。

[設定]
[属性]
[動作]

表 3.3. にしたがい、Start スクリプトは、Offline 状態から Stanby 状態への遷移と Offline 状態から Online 状態への遷移を区別する場合の例です。
また、Stop スクリプトは、Standby 状態から Offline 状態への遷移と、Online 状態から Offline 状態への遷移を区別する例です。

上記以外の動作を想定する場合は、環境変数/属性を参照の上、適宜変更してください。

図3.6 ホットスタンバイ運用の Start スクリプト /Stop スクリプト

3.2.1.2 Start/Stop スクリプト内で参照できる環境変数

Start スクリプトおよび Stop スクリプト実行時には、次の環境変数が設定されます。スクリプト内でこれらの環境変数を参照することができます。
設定される環境変数を表 3.4 に示します。


表3.4 Start/Stop スクリプト内で参照できる環境変数

環境変数

概要

HV_APPLICATION

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

例) app1

HV_AUTORECOVER

スクリプトが AutoRecover 機能によって呼び出されたかどうかを示す値が設定されます。

0: AutoRecover 機能によらない Online 処理でスクリプトが実行された場合
1: AutoRecover 機能によりスクリプトが実行された場合

HV_FORCED_REQUEST

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

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

HV_NODENAME

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

例) Cmdline0

HV_OFFLINE_REASON

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

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

HV_SCRIPT_TYPE

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

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

HV_LAST_DET_REPORT

Start/Stop スクリプト実行直前のリソースの状態が設定されます。

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

HV_INTENDED_STATE

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

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

NODE_SCRIPTS_TIME_OUT

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

例) 300

RMS にはその他にも環境変数が存在します。その他の環境変数については以下のファイルで参照できます。

ファイル名

内容

hvenv

クラスタ全体で定義する環境変数ファイル

hvenv.local

そのノード上でのみ定義する環境変数ファイル

注意

hvenv.local ファイルはデフォルトでは存在しません。ノード上でのみ環境変数を定義する場合は、hvenv.local ファイルを作成してください。

参照

  • RMS の環境変数ファイル(hvenv, hvenv.local)の詳細については、"PRIMECLUSTER RMS 導入運用手引書"を参照してください。

  • RMS の環境変数の詳細については、"付録B RMS 環境変数一覧"を参照してください。

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

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

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

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

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

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

3.2.1.4 NULLDETECTOR フラグを設定した場合の注意事項

RMS は NULLDETECTOR フラグを設定した Cmdline リソースの状態を監視しないため、リソースが起動していても Online スクリプトを実行したり、リソースが停止していても Offline スクリプトを実行する場合があります。

このような場合でも Online/Offline 処理がエラー終了しないよう、NULLDETECTOR フラグを設定した Cmdline リソースの OnlineスクリプトおよびOffline スクリプトには、必ず以下の処理を組み込んでください。

3.2.1.5 スクリプトのタイムアウトについて

指定された時間内に Start スクリプトまたは Stop スクリプトの処理が完了しない場合はタイムアウトとなり、スクリプトの処理はシグナル SIGTERM により中断され、状態遷移がエラーとなります。
タイムアウト値は Cmdline リソースの TIMEOUT 属性で指定可能です。デフォルトでは 300 秒に設定されています。

Cmdline リソース作成時に、各スクリプトの処理にかかる最大時間を見積もり、その時間に余裕を持たせた値を設定してください。また、Cmdline リソース使用時にタイムアウトが発生した場合(タイムアウトが発生すると (DET, 5)、(DET, 6) 、(DET, 24)のいずれかのメッセージが出力されます)には、使用する OS ごとに以下のような手順でタイムアウト値を適切な値に変更してください。

Solaris:

userApplication Configuration Wizard の [userApplication や Resource の変更]を選択し、Cmdline リソースの Flag 設定画面で変更します。
詳しい操作については、"PRIMECLUSTER 導入運用手引書(Oracle Solaris 版)" を参照してください。

Linux:

RMS Wizard のメインメニューから "Application-Edit" を選択し、Cmdline リソースの Flag の内容を変更してください。
詳しい説明については、"PRIMECLUSTER 導入運用手引書(Linux 版)" または "PRIMECLUSTER 導入運用手引書(Linux( Itanium) 版)" を参照してください。

注意

各スクリプトの処理時間は利用者設定属性の ScriptTimeout 値より短くなければなりません。
スクリプトの処理時間が ScriptTimeout 値を超えると、PRIMECLUSTER はリソース異常と判断し、起動処理・停止処理を中断します。