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

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

スクリプト作成時の注意事項について説明します。

6.11.2.1 start/stop スクリプト

6.11.2.1.1 start/stopスクリプトの例

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

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

表6.3 CmdLine リソースがホットスタンバイ運用以外の場合にしたがい、待機系/運用系での動作を共通とした場合の例です。Start スクリプトと記載してある箇所は待機系と運用系で同じ処理が実行されます。同様に、Stop スクリプトと記載してある場所も同じ処理が実行されます。

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

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

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

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

表6.4 CmdLine リソースがホットスタンバイ運用の場合にしたがい、Start スクリプトは、Offline 状態から Stanby 状態への遷移と Offline 状態から Online 状態への遷移を区別する場合の例です。
また、Stop スクリプトは、Standby 状態から Offline 状態への遷移と、Online 状態から Offline 状態への遷移を区別する例です。

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

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

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

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


表6.5 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 にはその他にも環境変数が存在します。

参照

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

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

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

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

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

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

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

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

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

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

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

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

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

RMS Wizard のメインメニューから "Application-Edit" を選択し、Cmdline リソースの Flag の内容を変更してください。
詳しい説明については、"8.1 クラスタアプリケーションの変更"を参照してください。

注意

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

6.11.2.2 Check スクリプト

6.11.2.2.1 Check スクリプトの例

以下にホットスタンバイ運用以外の Check スクリプトの例を示します。
なお、下記の例は“6.11.2.1.1 start/stopスクリプトの例”で記載している設定であることを前提にしています。


図6.7 ホットスタンバイ運用以外の Check スクリプト

また、Cmdline リソースでホットスタンバイ運用を行う場合には、start/stop スクリプトと同様に Check スクリプトをホットスタンバイ運用に対応した記述にします。

以下にホットスタンバイ運用に対応した Check スクリプトの例を示します。
なお、下記の例は“6.11.2.1.1 start/stopスクリプトの例”で記載している設定であることを前提にしています。


図6.8 ホットスタンバイ運用の Check スクリプト

6.11.2.2.2 Check スクリプト内で参照できる環境変数

Check スクリプト実行時には、次の環境変数が設定されます。スクリプト内でこれらの環境変数を参照することができます。

参照

これらの環境変数の概要については、“表6.5 Start/Stop スクリプト内で参照できる環境変数”を参照してください。

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

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

Check スクリプトの終了コードは、ホットスタンバイ運用の場合とホットスタンバイ運用を行わない場合により異なります。

ホットスタンバイ運用を行わない場合

以下のいずれかの終了コードを使用してください。

表6.6 ホットスタンバイ運用以外の終了コード

終了コード

意味

0

Online 状態を示します。監視対象が起動している場合に本終了コードを使用します。

0 以外

Offline 状態を示します。監視対象が停止している場合に本終了コードを使用します。Online 状態となった以降、Offline で終了した場合、切替えが発生します。

ホットスタンバイ運用を行う場合

以下のいずれかの終了コードを使用してください。

表6.7 ホットスタンバイ運用の終了コード

終了コード

意味

0

Online 状態を示します。監視対象が起動している場合に本終了コードを使用します。

1

Offline 状態を示します。監視対象が停止している場合に本終了コードを使用します。Online 状態となった以降、Offline で終了した場合、切替えが発生します。

2

Faulted 状態を示します。監視対象が故障している場合に本終了コードを使用します。Online 状態となった以降、Faulted で終了した場合、切替えが発生します。

3

Unknown 状態を示します。監視対象の状態が不明な場合に本終了コードを使用します。

4

Standby 状態を示します。監視対象が待機として起動している場合に本終了コードを使用します。

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

指定した時間内に Check スクリプトの処理が完了しないときに、リソース異常によるクラスタアプリケーションの切替えを発生させたい場合は、Cmdline リソースの CheckCommandTimeouts 属性を設定します。Check スクリプトの処理が完了しない場合にリソース異常と判断する時間を秒で指定します。デフォルトでは none(リソース異常は発生しない)に設定されています。