ホットスタンバイ運用以外の 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(Solaris では指定できず)
表3.2. にしたがい、待機系/運用系での動作を共通とした場合の例です。Start スクリプトと記載してある箇所は待機系と運用系で同じ処理が実行されます。同様に、Stop スクリプトと記載してある場所も同じ処理が実行されます。
上記以外の動作を想定する場合は、環境変数/属性を参照の上、適宜変更してください。
図3.5 ホットスタンバイ運用以外の Start スクリプト /Stop スクリプト
設定方法については、OS ごとに異なります。それぞれの "PRIMECLUSTER 導入運用手引書" を参照してください。
また、以下のサンプル $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(Solaris では指定できず)
表 3.3. にしたがい、Start スクリプトは、Offline 状態から Stanby 状態への遷移と Offline 状態から Online 状態への遷移を区別する場合の例です。
また、Stop スクリプトは、Standby 状態から Offline 状態への遷移と、Online 状態から Offline 状態への遷移を区別する例です。
上記以外の動作を想定する場合は、環境変数/属性を参照の上、適宜変更してください。
図3.6 ホットスタンバイ運用の Start スクリプト /Stop スクリプト
Start スクリプトおよび Stop スクリプト実行時には、次の環境変数が設定されます。スクリプト内でこれらの環境変数を参照することができます。
設定される環境変数を表 3.4 に示します。
環境変数 | 概要 |
---|---|
リソースが属している userApplication 名が設定されます。 例) app1 | |
スクリプトが AutoRecover 機能によって呼び出されたかどうかを示す値が設定されます。 0: AutoRecover 機能によらない Online 処理でスクリプトが実行された場合 | |
オペレータ操作による強制フェイルオーバであるか否かを示す値が設定されます。 0: 強制フェイルオーバではない | |
リソース名 が設定されます。 例) Cmdline0 | |
HV_OFFLINE_REASON | リソースが Offline 状態になる理由が設定されます。 SWITCH:userApplication の切替え要求(hvswitch)で Offline になった |
実行されたスクリプトの種類が設定されます。 Online: Start スクリプト | |
Start/Stop スクリプト実行直前のリソースの状態が設定されます。 Online : Online 状態 | |
状態遷移完了後に予期されるリソースの状態が設定されます。 Online : Online 状態 | |
スクリプトのタイムアウト時間(秒)が設定されます。 例) 300 |
RMS にはその他にも環境変数が存在します。その他の環境変数については以下のファイルで参照できます。
ファイル名 | 内容 |
---|---|
hvenv | クラスタ全体で定義する環境変数ファイル |
hvenv.local | そのノード上でのみ定義する環境変数ファイル |
注意
hvenv.local ファイルはデフォルトでは存在しません。ノード上でのみ環境変数を定義する場合は、hvenv.local ファイルを作成してください。
参照
RMS の環境変数ファイル(hvenv, hvenv.local)の詳細については、"PRIMECLUSTER RMS 導入運用手引書"を参照してください。
RMS の環境変数の詳細については、"付録B RMS 環境変数一覧"を参照してください。
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 スクリプトを正常終了させます。
指定された時間内に Start スクリプトまたは Stop スクリプトの処理が完了しない場合はタイムアウトとなり、スクリプトの処理はシグナル SIGTERM により中断され、状態遷移がエラーとなります。
タイムアウト値は Cmdline リソースの TIMEOUT 属性で指定可能です。デフォルトでは 300 秒に設定されています。
Cmdline リソース作成時に、各スクリプトの処理にかかる最大時間を見積もり、その時間に余裕を持たせた値を設定してください。また、Cmdline リソース使用時にタイムアウトが発生した場合(タイムアウトが発生すると (DET, 5)、(DET, 6) 、(DET, 24)のいずれかのメッセージが出力されます)には、使用する OS ごとに以下のような手順でタイムアウト値を適切な値に変更してください。
userApplication Configuration Wizard の [userApplication や Resource の変更]を選択し、Cmdline リソースの Flag 設定画面で変更します。
詳しい操作については、"PRIMECLUSTER 導入運用手引書(Oracle Solaris 版)" を参照してください。
RMS Wizard のメインメニューから "Application-Edit" を選択し、Cmdline リソースの Flag の内容を変更してください。
詳しい説明については、"PRIMECLUSTER 導入運用手引書(Linux 版)" または "PRIMECLUSTER 導入運用手引書(Linux( Itanium) 版)" を参照してください。
注意
各スクリプトの処理時間は利用者設定属性の ScriptTimeout 値より短くなければなりません。
スクリプトの処理時間が ScriptTimeout 値を超えると、PRIMECLUSTER はリソース異常と判断し、起動処理・停止処理を中断します。