この付録は、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