この付録は、Oracle Clusterwareのリソースに対するリファレンスです。ここには、すべてのリソース属性の説明と使用例、およびアクション・スクリプトの詳細な説明および例が示されています。
内容は次のとおりです。
この項では、アプリケーションをOracle Clusterwareのリソースとして登録する際に使用する属性について説明します。この属性は、次に示すように、crsctl add resourceコマンドで使用します。
$ crsctl add resource resource_name -type resource_type {[-attr "attribute_name='attribute_value', attribute_name='attribute_value' , ..."] | [-file file_name]}
属性/値ペアは、-attrフラグの後にカンマ区切りのリストとして指定し、各属性の値は一重引用符('')で囲みます。一部のリソース属性は、構成できない読取り専用の属性です。
または、属性/値ペアを含むテキスト・ファイルを作成できます。次に例を示します。
PLACEMENT=favored HOSTING_MEMBERS=node1 node2 node3 RESTART_ATTEMPTS@CARDINALITYID(1)=0 RESTART_ATTEMPTS@CARDINALITYID(2)=0 FAILURE_THRESHOLD@CARDINALITYID(1)=2 FAILURE_THRESHOLD@CARDINALITYID(2)=4 FAILURE_INTERVAL@CARDINALITYID(1)=300 FAILURE_INTERVAL@CARDINALITYID(2)=500 CHECK_INTERVAL=2 CARDINALITY=2
この項には次のトピックが含まれます:
この項では、アプリケーションをOracle Clusterwareのリソースとして登録する際に構成可能な次のリソース属性について説明します。
|
注意: すべての属性の値は小文字で指定する必要があります。属性名はすべて大文字で指定する必要があります。 |
リソースの所有者、および様々なオペレーティング・システムのユーザーとグループに付与するアクセス権限を定義します。リソースの所有者には、所有者になるオペレーティング・システム・ユーザーとその権限を定義します。これは、リソースの作成時に構成するオプションの属性です。この属性を構成しない場合、リソースを作成するプロセスのIDに基づいて値が決定されます。リソースの既存の権限に基づいて変更が許可される場合には、属性の値を変更できます。
|
注意: owner、pgrp、userおよびgroupを含むすべてのオペレーティング・システムのユーザー名およびユーザー・グループは、クラスタ内のすべてのサーバー上に登録される必要があります。 |
文字列は次のように指定します。
owner: リソースを所有するオペレーティング・システム・ユーザーで、このユーザーの下でアクション・スクリプトまたはアプリケーション固有のエージェントが実行され、続いて所有者の権限を指定します。
pgrp: リソース所有者のプライマリ・グループであるオペレーティング・システム・グループです。続いてプライマリ・グループのメンバーの権限を指定します。
other: 所有者でもプライマリ・グループのメンバーでもないオペレーティング・システム・ユーザー
r: リソース、その状態および構成を表示する権限のみを付与する読取りオプション
w: リソースの属性を変更する権限およびリソースを削除する権限を付与する書込みオプション
x: リソースを開始、停止および再配置する権限を付与する実行オプション
デフォルトでは、リソースを作成するクライアントのIDはownerです。また、デフォルトでは、root、およびownerに指定されたユーザーは完全な権限を持ちます。ACL属性に次の行を追加することで、必要なオペレーティング・システム・ユーザーおよびオペレーティング・システム・グループに権限を付与できます。
user:user_name:rwx group:group_name:rwx
使用例
ACL=owner:user_1:rwx,pgrp:osdba:rwx,other::r-
前述の例では、リソースの所有者はuser_1で、プライマリ・グループはosdbaです。他のユーザーはリソースを表示することしかできませんが、ユーザーuser_1は、osdbaグループと同様すべての権限を持ちます。
アクション・スクリプトのパスおよびファイル名を含む絶対ファイル名。AGENT_FILENAME属性に指定されたエージェントが、ACTION_SCRIPT属性に指定されたスクリプトをコールします。
使用例
ACTION_SCRIPT=fully_qualified_path_to_action_script
1に設定すると、Oracle Clusterwareは、この属性を使用してクラスタ・サーバーの追加または再起動時にリソースの配置を再評価します。PLACEMENT=favoredのリソースの場合、Oracle Clusterwareは、favoredのサーバーがクラスタに追加されているときにリソースがfavored以外のサーバーで実行されていると、実行中のリソースを再配置することがあります。
使用例
ACTIVE_PLACEMENT=1
リソース・タイプがそのリソースを管理するために使用するエージェント・プログラムの完全修飾されたファイル名。すべてのリソース・タイプに、そのリソースを管理するためのエージェント・プログラムが必要です。この属性に値を指定するか、またはベースになるリソース・タイプから値を継承することで、リソース・タイプはエージェント・プログラムを使用できます。Oracle Clusterware 11gリリース2(11.2)には、applicationおよびscriptagentの2つのスクリプト・エージェントが含まれています。Oracle Clusterwareは、非推奨のapplicationリソース・タイプのリソースに対してapplicationスクリプト・エージェントを使用します。この属性のデフォルト値はscriptagentです。
使用例
AGENT_FILENAME=%Grid_home%/bin/application
クラスタ・サーバーの再起動後、Oracle Clusterwareによってリソースを自動的に起動するかどうかを示します。AUTO_STARTの有効な値は次のとおりです。
always: サーバーが停止したときのリソースの状態に関係なく、サーバーの再起動時にリソースを再起動します。
restore: サーバーが停止したときと同じ状態にリソースをリストアします。サーバーが停止する前にTARGETの値がONLINEだった場合、Oracle Clusterwareはリソースの再起動を試行します。
never: サーバーが停止したときのリソースの状態に関係なく、Oracle Clusterwareはリソースを再起動しません。
checkアクションの実行を繰り返す時間間隔(秒単位)。間隔を短くするとより頻繁にチェックできますが、スクリプト・エージェントを使用するとリソースの消費も増大します。リソースの消費を低減するには、アプリケーション固有のエージェントを使用します。
使用例
CHECK_INTERVAL=60
Oracle Clusterwareは、この属性を使用してリソースの状態を管理します。Oracle Clusterwareは、直接的にも、別のリソースへの依存性による場合にも無効(ENABLED=0)になっているリソースの管理は試行しません。無効になっているリソースを起動することはできませんが、停止することはできます。
Oracle Clusterwareは、無効なリソースをアクティブに監視せず、つまり、Oracle Clusterwareは無効なリソースの状態をチェックしません。ただし、Oracle Clusterwareは起動時に、無効なリソースの状態について問合せを行います。
使用例
ENABLED=1
リソースがFAILURE_THRESHOLD属性で指定した障害の回数を超えた場合にOracle Clusterwareがリソースを停止するまでの間隔(秒単位)。値が0(ゼロ)の場合、障害の追跡は無効になります。
使用例
FAILURE_INTERVAL=30
リソースに指定されたFAILURE_INTERVAL内で検出される障害の数で、この値を超えると、Oracle Clusterwareがリソースを使用不可としてマーク付けし、そのリソースの監視を停止します。指定した回数の障害がリソースで発生すると、Oracle Clusterwareはそのリソースを停止します。値が0(ゼロ)の場合、障害の追跡は無効になります。最大値は20です。
使用例
FAILURE_THRESHOLD=3
リソースのホスティングが可能なクラスタ・サーバーの名前のリストで、空白で区切って順序付けします。この属性は、管理者管理型を使用し、PLACEMENT属性の値がfavoredまたはrestrictedに設定されている場合にのみ指定する必要があります。アプリケーションをOracle Clusterwareリソースとして登録する際は、かわりにSERVER_POOLS属性を使用します。
|
注意: applicationタイプのリソースの場合、Oracle Clusterwareは、汎用サーバー・プールのHOSTING_MEMBERS属性に示されたサーバーを配置の対象とします。 |
|
関連項目:
|
候補ノード名のリストを取得するには、olsnodesコマンドを実行して、使用しているサーバー名のリストを表示します。
使用例
HOSTING_MEMBERS=server1 server2 server3
Oracle Clusterwareは、PLACEMENT属性の値とともにこの属性の値を解析します。PLACEMENTの値がbalancedの場合は、LOADの値によってリソースの最適な配置場所が決定されます。これは、リソースの1つのインスタンスが消費するサーバー容量を、他のリソースとの相対値として数量的に示す負以外の数値です。Oracle Clusterwareは、実行中のリソースによる負荷の合計が最小のサーバーにリソースの配置を試行します。
使用例
LOAD=1
リソースの名前を示す英数字の文字列で、大/小文字が区別されます。ネーミング規則として、名前の先頭を英数字の接頭辞(myApacheなど)にし、末尾をリソースについて説明する識別子にすることをお薦めします。リソース名には、プラットフォームでサポートされているすべての文字(感嘆符(!)およびチルダ(~)を除く)を使用できます。リソース名の先頭をピリオド(.)またはoraという文字列にすることはできません。
使用例
NAME=myApache
リソースのオフライン監視を制御します。値は、リソースの状態がOFFLINEの場合に、Oracle Clusterwareがそのリソースを監視する時間間隔(秒単位)を表します。値が0の場合、監視は無効になります。
使用例
OFFLINE_CHECK_INTERVAL=30
Oracle Clusterwareがリソースを起動するクラスタ・サーバーを選択する方法を指定します。有効な値は、balanced、favoredまたはrestrictedです。
PLACEMENT属性をfavoredまたはrestrictedに設定した場合は、SERVER_POOLSおよびHOSTING_MEMBERS属性にも値を割り当てる必要があります。PLACEMENT属性の値をbalancedに設定した場合は、HOSTING_MEMBERS属性を指定する必要はありません。
|
関連項目:
|
使用例
PLACEMENT=favored
Oracle Clusterwareが、リソースの再配置を試行する前に、リソースの現行のサーバー上でリソースの再起動を試行する回数。1の値を指定した場合、Oracle Clusterwareはサーバー上でリソースの再起動を1回のみ試行します。2回失敗すると、Oracle Clusterwareの再配置が試行されます。0の値を指定した場合、再起動は試行されませんが、Oracle Clusterwareは常時、別のサーバーへのリソースのフェイルオーバーを試行します。
使用例
RESTART_ATTEMPTS=2
アクションを実行する最大時間(秒単位)。アクション・スクリプトが指定された時間内に完了しなかった場合、Oracle Clusterwareはエラー・メッセージを戻します。このタイムアウトは、すべてのアクション(start、stop、checkおよびclean)に適用されます。
使用例
SCRIPT_TIMEOUT=45
特定のリソースが属すことのできるサーバー・プールのリストで、空白で区切って指定します。リソースがクラスタ内の任意のサーバー上で動作できる場合は、デフォルト値の*を使用し、リソースがcluster_resourceタイプ以外の場合は、SERVER_POOLS属性のデフォルト値は空白です。この属性の値に*を指定できるのはクラスタ管理者のみです。
次に示すように、SERVER_POOLS属性とともにPLACEMENT属性を使用します。PLACEMENT属性の値をrestrictedまたはfavoredに設定した場合は、リソースのポリシー管理を使用する際にSERVER_POOLS属性にも値を指定する必要があります。
PLACEMENTの値をbalancedに設定した場合、SERVER_POOLS=*でないかぎり、リソースは汎用プールおよび空きプールのみで実行されます。
この属性は、配置に関してリソースと1つ以上のサーバー・プールとの間でアフィニティを作成します。また、PLACEMENT属性の値に依存します。
|
関連項目:
|
使用例
SERVER_POOLS=pool1 pool2 pool3
リソースを起動する際にOracle Clusterwareで考慮する一連の関係を指定します。特定のリソースが依存する可能性がある、いくつかのリソースおよびリソース・タイプに対して依存性リストを指定でき、リストは空白で区切って指定します。
構文
START_DEPENDENCIES=dependency(resource_set) [dependency(resource_set)] [...]
前述の構文例で、変数は次のように定義されます。
dependency: 指定可能な値は、hard、weak、attraction、pullupおよびdispersionです。これらの依存性は、それぞれ1回のみ指定できますが、pullupは、複数回指定できます。
resource_set: 構成するリソースが依存しているリソース・エンティティ(個々のリソースまたはリソース・タイプのいずれか)をカッコ()で囲み、res1[, res2[, ...]]の形式で指定したカンマ区切りリスト。
各リソース・エンティティは次のように定義されます。
[modifier1:[modifier2:]] {resource_name | type:resource_type}
前述の構文例で、resource_nameは特定のリソースの名前、type:resource_typeは特定のリソース・タイプの名前です。リソース・タイプの前にtypeに指定する必要があり、このtype修飾子はリストで最後のリソース・エンティティである必要があります。
必要に応じて、修飾子を指定してリソース・エンティティの依存性をさらに詳細に構成できます。リソース・エンティティに接頭辞として次の修飾子を指定することで、各依存性を変更することができます。
hard([intermediate:][global:]{resource_name | type:resource_type}): 特定のリソースまたは特定のタイプのリソースが起動するときにのみあるリソースを起動させる場合、そのリソースにhard起動依存性を指定します。
intermediateを使用すると、依存先リソースの状態がONLINEまたはINTERMEDIATEのいずれかの場合にOracle Clusterwareでこのリソースを起動できるように指定できます。指定しない場合、Oracle Clusterwareでこのリソースを起動するには、リソースの状態がONLINEである必要があります。
globalを使用すると、Oracle Clusterwareでこのリソースを起動する条件としてリソースが同じサーバー上に存在する必要がないように指定できます。指定しない場合、Oracle Clusterwareでこのリソースを起動するには、同じサーバー上にリソースが存在する必要があります。
リソースのリソース・タイプにhard依存性を指定した場合は、指定したタイプの任意のリソースが実行されていると、このリソースを起動できます。
|
注意: hard起動依存性を持つリソースにはpullup起動依存性も定義することをお薦めします。 |
weak([concurrent:][global:][uniform:]{resource_name | type:resource_type}): 指定したリソースが実行されているかどうかにかかわらず、このリソースを起動する場合、リソースにweak起動依存性を指定します。このリソースの起動を試行すると、このリソースが依存する任意のリソースが実行されていない場合は、それらのリソースの起動も試行されます。
concurrentを使用すると、依存先リソースの起動時にOracle Clusterwareで依存リソースを起動できるように指定できます。concurrentを指定しない場合、Oracle Clusterwareで依存リソースを起動するには、リソースの起動が完了している必要があります。
globalを使用すると、Oracle Clusterwareで依存リソースを起動する条件としてリソースが同じサーバー上に存在する必要がないように指定できます。
uniformを使用すると、リソースが実行可能なすべての場所でリソースのすべてのインスタンスを起動できます。修飾子を指定しない場合(デフォルトの場合)、リソースは、依存先リソースと同じサーバー上で起動します。
リソースのリソース・タイプにweak起動依存性を指定した場合は、指定したタイプの任意のリソースが実行されていると、このリソースを起動できます。
attraction([intermediate:]{resource_name | type:resource_type}): 指定した特定のリソースまたは特定のタイプの任意のリソースと同じサーバーでこのリソースを実行する場合、attraction起動依存性を使用します。
intermediateを使用すると、INTERMEDIATE状態になっている、このリソースが依存するリソース・エンティティにこのリソースが誘引されることを指定できます。指定しない場合、依存リソースを誘引するには、リソースの状態がONLINEである必要があります。
リソースのリソース・タイプにattraction依存性を指定した場合、依存リソースは、指定したタイプの任意のリソースに誘引されます。
pullup[:always]([intermediate:][global:]{resource_name | type:resource_type}): リソースにpullup起動依存性を指定すると、このリソースは、指定したリソースの起動結果として起動します。
pullupにalways修飾子を使用すると、TARGET属性の値がONLINEまたはOFFLINEのいずれでも、その値に関係なくOracle Clusterwareはこのリソースを起動します。そうでない場合は、always修飾子を指定しないと、このリソース用のTARGET属性の値がONLINEのときにのみ、Oracle Clusterwareはこのリソースを起動します。
intermediateを使用すると、依存先リソースの状態がONLINEまたはINTERMEDIATEのいずれかの場合にOracle Clusterwareでこのリソースを起動できるように指定できます。指定しない場合、Oracle Clusterwareでこのリソースを起動するには、リソースの状態がONLINEである必要があります。
globalを使用すると、Oracle Clusterwareでこのリソースを起動する条件として、このリソースの依存先リソースが同じサーバー上に存在する必要がないように指定できます。指定しない場合、Oracle Clusterwareでこのリソースを起動するには、このリソースの依存先リソースが同じサーバー上に存在する必要があります。
リソースのリソース・タイプにpullup依存性を指定した場合、指定したタイプの任意のリソースが起動すると、Oracle Clusterwareはこのリソースを起動できます。
|
注意: hard起動依存性を持つリソースにはpullup起動依存性も定義することをお薦めします。 |
dispersion[:active]([intermediate:]{resource_name | type:resource_type}): 指定したリソースまたは特定のタイプのリソースとは異なるサーバーで実行するリソースにdispersion起動依存性を指定します。リソースは、サーバーの可用性に応じて、同じサーバーで実行されることがあります。
active修飾子を使用して依存性dispersionを構成すると、依存リソースが別のリソースと同じ場所に配置されていて、別のサーバーがオンラインになった場合、Oracle Clusterwareは別サーバーへの依存リソースの再配置を試行します。Oracle Clusterwareは、active修飾子が指定されないかぎり、新しく利用可能になったサーバーへのリソースの再配置を行いません。
intermediateを使用すると、リソースの状態がONLINEまたはINTERMEDIATEのいずれかである場合にOracle Clusterwareで依存リソースを再配置できるように指定できます。指定しない場合、依存リソースを分散するには、リソースの状態がONLINEである必要があります。
startアクションを実行できる最大時間(秒単位)。アクションが指定された時間内に完了しなかった場合、Oracle Clusterwareはエラー・メッセージを戻します。この属性に値が指定されていなかったり、0秒が指定されている場合、Oracle ClusterwareはSCRIPT_TIMEOUT属性の値を使用します。
使用例
START_TIMEOUT=30
リソースを停止する際にOracle Clusterwareで考慮する一連の関係を指定します。
構文
STOP_DEPENDENCIES=dependency(resource_set) [dependency(resource_set)] ...
前述の構文例で、変数は次のように定義されます。
dependency: 指定可能な値はhardのみです。
resource_set: 構成するリソースが依存しているリソース・エンティティ(個々のリソースまたはリソース・タイプのいずれか)をres1[, res2[, ...]]の形式で指定したカンマ区切りリスト。
各リソース・エンティティは次のように定義されます。
[modifier1:[modifier2:][modifier3:]] resource_name | type:resource_type
前述の構文例で、resource_nameは特定のリソースの名前、type:resource_typeは特定のリソース・タイプの名前です。リソース・タイプの前にはtype:と記述する必要があります。
必要に応じて、修飾子を指定してリソース・エンティティの依存性をさらに詳細に構成できます。リソース・エンティティに接頭辞として次の修飾子を指定することで、各依存性を変更することができます。
hard([intermediate:][global:][shutdown:]{resource_name | type:resource_type}): 指定したリソースまたは特定のリソース・タイプのリソースが停止した場合に停止させるリソースにhard停止依存性を指定します。
intermediateを使用すると、リソースの状態がONLINEまたはINTERMEDIATEのいずれかである場合に依存リソースの状態をONLINEのままにできるように指定できます。指定しない場合、リソースの状態がONLINEでないかぎり、Oracle Clusterwareは依存リソースを停止します。
globalを使用すると、クラスタ内の任意のノード上にあるリソースの状態がONLINEの場合に、依存リソースの状態がONLINEのままになるように指定できます。指定しない場合、同じサーバー上にあるリソースがオフラインになると、Oracle Clusterwareは依存リソースを停止します。
shutdownを使用すると、Oracle Clusterwareスタックが停止する場合にこの依存性を適用します。これは、個々のリソースの計画済または計画外イベントには影響を及ぼすことなく、スタックを停止するときにリソースの停止順序に影響を与える便利な方法です。この依存性は、shutdown修飾子とともに使用されると、リソースが直接停止されてもスタックが停止している場合にのみ有効になりません。
stopまたはcleanアクションを実行できる最大時間(秒単位)。アクションが指定された時間内に完了しなかった場合、Oracle Clusterwareはエラー・メッセージを戻します。この属性が指定されていない場合または0秒が指定されている場合、Oracle ClusterwareはSCRIPT_TIMEOUT属性の値を使用します。
使用例
STOP_TIMEOUT=30
UPTIME_THRESHOLDの値は、Oracle Clusterwareがリソースが安定しているとみなすまでに、リソースが稼働中である必要がある時間の長さを表します。UPTIME_THRESHOLD属性の値を設定すると、リソースの安定性を示すことができます。
この属性の値は、数値の後に秒(s)、分(m)、時間(h)、日(d)または週(w)を示す文字を付けて入力します。たとえば、7hという値は、稼働時間のしきい値が7時間であることを示します。
Oracle Clusterwareは、UPTIME_THRESHOLDに指定した時間が経過すると、停止、起動、再配置または障害のようなリソース状態が変更されるイベントが次に発生したときに、RESTART_COUNTの値を0にリセットします。RESTART_COUNTの値がRESTART_ATTEMPTSに設定した値に達すると、Oracle Clusterwareはアラートを生成します。カウンタは、次回リソースの障害発生時や再起動時に、効果的にリセットされます。しきい値は、再起動がカウントされて破棄される時間の長さを示しています。しきい値に達してリソースが失敗すると、再起動されます。
|
注意: RESTART_COUNTの値がRESTART_ATTEMPTSに設定した値に達すると、Oracle Clusterwareはクラスタウェア・アラート・ログ・ファイルにアラートを記録します。 |
次の属性は、特定のリソースに対してcrsctl status resourceコマンドを実行すると参照できます。Oracle Clusterwareは、ユーザーがリソースを登録した際にこれらの属性を設定します。
現在ポリシー・エンジンがリソースで実行しているアクション(ある場合)について説明する、内部的に管理される読取り専用の属性です。指定可能な値とその説明は、次のとおりです。
STARTING: ポリシー・エンジンは、現在リソースを起動しています。
STOPPING: ポリシー・エンジンは、現在リソースを停止しています。
CLEANING: ポリシー・エンジンは、現在リソースをクリーンアップしています。
STABLE: ポリシー・エンジンは、現在リソースでアクションを実行していません。
ただし、その他のいくつかのコマンドの一環として、そのリソースがまだロックされている可能性があります。
cluster_resourceタイプのリソースの場合、内部的に管理される読取り専用の属性の1つで、ソースのstartアクションが最後に成功したサーバーの名前が設定されています。
local_resourceタイプのリソースの場合、リソース・インスタンスが固定されるサーバーの名前です。
ポリシー・エンジンがリソースの現在の状態を登録した時点について説明する、内部的に管理される読取り専用の属性です。crsdの再起動時に発生する、リソースの状態が変更された時点、またはポリシー・エンジンがその状態を検出した時点のタイムスタンプである場合があります。
Oracle Clusterwareデーモンが使用する内部的に管理される属性で、リソース再起動の試行回数を0(ゼロ)からRESTART_ATTEMPTS属性に指定した値までカウントします。この属性を編集することはできません。
Oracle Clusterwareからレポートされるとリソースの現在の状態が反映される、内部的に管理される属性です。リソースの状態は次のいずれかです。
ONLINE: リソースはオンラインで、リソースの監視が有効です(「CHECK_INTERVAL」を参照)。
OFFLINE: リソースはオフラインで、オフラインのリソースの監視が構成されている場合は、それのみが有効です(「OFFLINE_CHECK_INTERVAL」を参照)。
INTERMEDIATE: リソースは部分的にオンラインであるか、前にオンラインであることが認識されているものの、それ以降の状態確認の試行が失敗しています。リソースの監視は有効です(「CHECK_INTERVAL」を参照)。
UNKNOWN: リソースは管理不可能で、現在の状態は不明であるため、手動操作を行ってその操作を再開する必要があります。この状態のリソースは監視されません。
内部的に管理される読取り専用の属性の1つです。リソースの状態の詳細が設定されています。
リソースの4つの状態(ONLINE、OFFLINE、UNKNOWNおよびINTERMEDIATE)は、マウント、アンマウント、オープンなどの異なるリソース固有の値にマッピングされることがあります。リソース・エージェントの開発者は、STATE_DETAILS属性を使用して、リソースとリソースの状態とのマッピングに関する詳細な説明を提供できます。
詳細の提供は任意です。詳細が提供されない場合、Oracle Clusterwareは、予想される4つのリソースの状態のみを使用します。また、エージェントがこれらの詳細を提供できない場合(リソースの状態の値に対しても発生する可能性がある)、Oracle Clusterwareはこの属性の値を設定して、リソースが現在の状態になった理由を示す最小限の詳細情報を提供します。
この項では、スクリプト・エージェントを使用するサード・パーティ製アプリケーションの例を示します。
例B-1に、Apache Webサーバーをフェイルオーバーするアクション・スクリプトを示します。
例B-1 Apacheアクション・スクリプト
#!/bin/sh
HTTPDCONFLOCATION=/etc/httpd/conf/httpd.conf
WEBPAGECHECK=http://<MyVIP>:80/icons/apache_pb.gif
case $1 in
'start')
/usr/sbin/apachectl -k start -f $HTTPDCONFLOCATION
RET=$?
;;
sleep(10)
;;
'stop')
/usr/sbin/apachectl -k stop
RET=$?
;;
'clean')
/usr/sbin/apachectl -k stop
RET=$?
;;
'check')
/usr/bin/wget -q --delete-after $WEBPAGECHECK
RET=$?
;;
*)
RET=0
;;
esac
# 0: success; 1 : error
if [ $RET -eq 0 ]; then
exit 0
else
exit 1
fi
例B-2に、xclockスクリプトを示します。このスクリプトは、すべてのLinuxおよびUNIXプラットフォームでデフォルト・バイナリとして利用できるxclockを使用した簡単なアクション・スクリプトです。
例B-2 xclockアクション・スクリプト
#!/bin/bash
# start/stop/check script for xclock example
# To test this change BIN_DIR to the directory where xclock is based
# and set the DISPLAY variable to a server within your network.
BIN_DIR=/usr/X11R6/bin
LOG_DIR=/tmp
BIN_NAME=xclock
DISPLAY=yourhost.domain.com:0.0
export DISPLAY
exit_code=0
if [ ! -d $BIN_DIR ]
then
echo "start failed"
exit 2
fi
PID1=`ps -ef | grep $BIN_NAME | grep -v grep | grep -v xclock_app | awk '{ print $2 }'`
case $1 in
'start')
if [ "$PID1" != "" ]
then
status_p1="running"
else
if [ -x $BIN_DIR/$BIN_NAME ]
then
umask 002
${BIN_DIR}/${BIN_NAME} & 2>${LOG_DIR}/${BIN_NAME}.log
status_p1="started"
else
echo `basename $0`": $BIN_NAME: Executable not found"
exit_code=1
fi
fi
echo "$BIN_NAME: $status_p1"
exit $exit_code
;;
'stop')
if [ "${PID1}" != "" ]
then
kill -9 ${PID1} && echo "$BIN_NAME daemon killed"
else
echo "$BIN_NAME: no running Process!"
fi
exit $exit_code
;;
'check')
if [ "$PID1" != "" ]
then
echo "running"
exit 0
else
echo "not running"
exit 1
fi
;;*)
echo "Usage: "`basename $0`" {start|stop|check}"
;;
esac
例B-3に、ファイルを監視するエージェントのシェル・スクリプトの例を示します。エージェントは、起動するとファイル(属性を使用して指定されるファイル)を作成し、停止するとファイルを削除します。CHECKアクションは、ファイルが存在するかどうかを単にチェックするものです。接頭辞_CRS_を持つ変数は、環境のスクリプトに指定する属性値です。
例B-3 アクション・スクリプトの例
#!/bin/sh
TOUCH=/bin/touch
RM=/bin/rm
PATH_NAME=/tmp/$_CRS_NAME
#
# These messages go into the CRSD agent log file.
echo " ******* `date` ********** "
echo "Action script '$_CRS_ACTION_SCRIPT' for resource[$_CRS_NAME] called for action $1"
#
case "$1" in
'start')
echo "START entry point has been called.."
echo "Creating the file: $PATH_NAME"
$TOUCH $PATH_NAME
exit 0
;;
'stop')
echo "STOP entry point has been called.."
echo "Deleting the file: $PATH_NAME"
$RM $PATH_NAME
exit 0
;;
'check')
echo "CHECK entry point has been called.."
if [ -e $PATH_NAME ]; then
echo "Check -- SUCCESS"
exit 0
else
echo "Check -- FAILED"
exit 1
fi
;;
'clean')
echo "CLEAN entry point has been called.."
echo "Deleting the file: $PATH_NAME"
$RM -f $PATH_NAME
exit 0
;;
esac