スクリプト作成時の注意事項について説明します。
ホットスタンバイ運用以外の Start スクリプト、Stop スクリプトの例を以下に示します。
下記のスクリプト $FULL_PATH/script.sample は、以下の動作と設定を想定した例です。
Start スクリプト $FULL_PATH/Script.sample -c
Stop スクリプト $FULL_PATH/Script.sample -u
STANDBYCAPABLE: No
AUTORECOVER: No
CLUSTEREXCLUSIVE: Yes
NULLDETECTOR: No
MONITORONLY: No
表6.3 Cmdline リソースがホットスタンバイ運用以外の場合にしたがい、待機系/運用系での動作を共通とした場合の例です。Start スクリプトと記載してある箇所は待機系と運用系で同じ処理が実行されます。同様に、Stop スクリプトと記載してある場所も同じ処理が実行されます。
上記以外の動作を想定する場合は、環境変数/属性を参照の上、適宜変更してください。
図6.5 ホットスタンバイ運用以外の Start スクリプト /Stop スクリプト
また、以下のサンプル $FULL_PATH/Script は、ホットスタンバイ運用に対応した下記の動作と設定を想定した例です。
Start スクリプト $FULL_PATH/Script.sample -c
Stop スクリプト $FULL_PATH/Script.sample -u
STANDBYCAPABLE: Yes
AUTORECOVER: No
CLUSTEREXCLUSIVE: Yes
ALLEXITCODES: Yes
NULLDETECTOR: No
MONITORONLY: No
表6.4 Cmdline リソースがホットスタンバイ運用の場合にしたがい、Start スクリプトは、Offline 状態から Standby 状態への遷移と Offline 状態から Online 状態への遷移を区別する場合の例です。
また、Stop スクリプトは、Standby 状態から Offline 状態への遷移と、Online 状態から Offline 状態への遷移を区別する例です。
上記以外の動作を想定する場合は、環境変数/属性を参照の上、適宜変更してください。
図6.6 ホットスタンバイ運用の Start スクリプト /Stop スクリプト
Start スクリプトおよび Stop スクリプト実行時には、次の環境変数が設定されます。スクリプト内でこれらの環境変数を参照することができます。
設定される環境変数を以下に示します。
環境変数 | 概要 |
---|---|
リソースが属している userApplication 名が設定されます。 例) app1 | |
スクリプトが AutoRecover 機能によって呼び出されたかどうかを示す値が設定されます。 0: AutoRecover 機能によらない Online 処理でスクリプトが実行された場合 | |
オペレータ操作による強制フェイルオーバであるか否かを示す値が設定されます。 0: 強制フェイルオーバではない | |
リソース名 が設定されます。 例) ManageProgram000_Cmd_APP1、RunScriptsAlways000_Cmd_APP1 | |
HV_OFFLINE_REASON | リソースが Offline 状態になる理由が設定されます。 SWITCH:userApplication の切替え要求(hvswitch)で Offline になった |
実行されたスクリプトの種類が設定されます。 Online: Start スクリプト | |
Start/Stop スクリプト実行直前のリソースの状態が設定されます。 Online : Online 状態 | |
状態遷移完了後に予期されるリソースの状態が設定されます。 Online : Online 状態 | |
スクリプトのタイムアウト時間(秒)が設定されます。 例) 300 |
RMS にはその他にも環境変数が存在します。
参照
RMS の環境変数の詳細については、“PRIMECLUSTER RMS 導入運用手引書”の“付録E 環境変数”を参照してください。
Start/Stop スクリプトの終了コードにより、userApplication の状態遷移の動作が変わります。以下に終了コードと状態遷移の動作を示します。
設定された Cmdline リソースの状態遷移が正常に処理されたとみなされて、userApplication の状態遷移処理が継続されます。userApplication に設定されたすべてのリソースが正常に処理されると userApplication の状態遷移が正常動作したことになります。
設定された Cmdline リソースの状態遷移に異常が発生したとみなされて、userApplication の状態遷移処理が中断します。
RMS は NULLDETECTOR フラグを設定した Cmdline リソースの状態を監視しないため、リソースが起動していても Online スクリプトを実行したり、リソースが停止していても Offline スクリプトを実行する場合があります。
このような場合でも Online/Offline 処理がエラー終了しないよう、NULLDETECTOR フラグを設定した Cmdline リソースの Online スクリプトおよび Offline スクリプトには、必ず以下の処理を組み込んでください。
Online スクリプト
対象プログラムを起動する前に、すでに対象プログラムが動作中でないかを Onlineスクリプト内でチェックします。すでに対象プログラムが動作中の場合は、直ちにOnline スクリプトを正常終了させます。
Offline スクリプト
対象プログラムを停止する前に、すでに対象プログラムが停止済でないかを Offlineスクリプト内でチェックします。すでに対象プログラムが停止済の場合は、直ちにOffline スクリプトを正常終了させます。
注意
保守モードを開始する前の userApplication の状態が Online 状態の場合、NULLDETECTOR フラグを設定した Cmdline リソースの Online スクリプトが実行されます。
指定された時間内に Start スクリプトまたは Stop スクリプトの処理が完了しない場合はタイムアウトとなり、スクリプトの処理はシグナル SIGTERM により中断され、状態遷移がエラーとなります。
タイムアウト値は Cmdline リソースの TIMEOUT 属性で指定可能です。デフォルトでは 300 秒に設定されています。
Cmdline リソース作成時に、各スクリプトの処理にかかる最大時間を見積もり、その時間に余裕を持たせた値を設定してください。また、Cmdline リソース使用時にタイムアウトが発生した場合(タイムアウトが発生すると (DET, 5)、(DET, 6) 、(DET, 24)のいずれかのメッセージが出力されます)には、使用する OS ごとに以下のような手順でタイムアウト値を適切な値に変更してください。
RMS Wizard のメインメニューから "Application-Edit" を選択し、Cmdline リソースの Flag の内容を変更してください。
詳しい説明については、“10.3 クラスタアプリケーションの変更”を参照してください。
注意
各スクリプトの処理時間は利用者設定属性の TIMEOUT 属性値より短くなければなりません。
スクリプトの処理時間が TIMEOUT 属性値を超えると、PRIMECLUSTER はリソース異常と判断し、起動処理・停止処理を中断します。
以下にホットスタンバイ運用以外の 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 スクリプト
Check スクリプト実行時には、次の環境変数が設定されます。スクリプト内でこれらの環境変数を参照することができます。
● HV_APPLICATION
● HV_NODENAME
参照
これらの環境変数の概要については、“表6.5 Start/Stop スクリプト内で参照できる環境変数”を参照してください。
また、RMS の環境変数の詳細については、“PRIMECLUSTER RMS 導入運用手引書”の“付録E 環境変数”を参照してください。
Check スクリプトの終了コードは、ホットスタンバイ運用の場合とホットスタンバイ運用を行わない場合により異なります。
以下のいずれかの終了コードを使用してください。
終了コード | 意味 |
---|---|
0 | Online 状態を示します。監視対象が起動している場合に本終了コードを使用します。 |
0 以外 | Offline 状態を示します。監視対象が停止している場合に本終了コードを使用します。Online 状態となった以降、Offline で終了した場合、切替えが発生します。 |
以下のいずれかの終了コードを使用してください。
終了コード | 意味 |
---|---|
0 | Online 状態を示します。監視対象が起動している場合に本終了コードを使用します。 |
1 | Offline 状態を示します。監視対象が停止している場合に本終了コードを使用します。Online 状態となった以降、Offline で終了した場合、切替えが発生します。 |
2 | Faulted 状態を示します。監視対象が故障している場合に本終了コードを使用します。Online 状態となった以降、Faulted で終了した場合、切替えが発生します。 |
4 | Standby 状態を示します。監視対象が待機として起動している場合に本終了コードを使用します。 |
注意
上記以外の終了コードは、特殊な状態を示す値であるためPRIMECLUSTER 対応製品の指示がある場合のみ使用できます。
指定した時間内にCheckスクリプトの処理が完了しないときに、リソース異常によるクラスタアプリケーションの切替えを発生させたい場合は、CmdlineリソースのCheckCommandTimeouts属性を設定します。Checkスクリプトの処理が完了しない場合にリソース異常と判断する時間を秒で指定します。デフォルトではnone(リソース異常は発生しない)に設定されています。
設定可能な値の範囲は、noneまたは45~3600秒です。