PRIMECLUSTER 活用ガイド <クラスタ構築・運用時の留意点> (Solaris(TM)オペレーティングシステム/Linux版)
目次 索引 前ページ次ページ

第1部 設計・構築編> 第3章 Cmdline リソース設定時の注意点> 3.2 スクリプト作成時の注意事項

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: No が設定されている
1: Yes が設定されている

AUTORECOVER については、"表3.1 Cmdlineリソースの属性" を参照してください。

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

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

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

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

hvenv.local

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

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


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

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

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

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

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

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

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

NULLDETECTOR フラグを設定した Cmdline リソースを含む userApplication を Online にしようとすると、すでに userApplication が Online であっても NULLDETECTOR フラグを設定した Cmdline リソースのみ、Online スクリプトが必ず実行される仕様になっています。
二重起動による Online 処理の失敗を避けるには、Online スクリプトを改造することで対応できます。

具体的には、以下の処理を追加します。

対象プログラムを起動する前に、すでに対象プログラムが動作中でないかを Online スクリプト内でチェックする。

すでに対象プログラムが動作中の場合は、直ちに Online スクリプトを正常終了させる。

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

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

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

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

目次 索引 前ページ次ページ

All Rights Reserved, Copyright(C) 富士通株式会社 2009