ヘッダーをスキップ
Oracle Clusterware管理およびデプロイメント・ガイド
11gリリース1(11.1)
E05739-03
  目次
目次
索引
索引

戻る
戻る
 
次へ
次へ
 

5 Oracle Clusterwareを使用したアプリケーションの高可用性の実現

この章では、Oracle Clusterwareフレームワークの高可用性をアプリケーションに拡張する方法について説明します。 これを行うには、Oracle Clusterwareコマンドを使用して、アプリケーションをラップします。 つまり、Oracle DatabaseおよびOracle Real Application Clusters(Oracle RAC)と同じ高可用性メカニズムを使用することによって、カスタム・アプリケーションの高可用性を実現できます。 この章で説明するとおり、Oracle Clusterwareを使用して、アプリケーションの監視、再配置および再起動を実行できます。この章の内容は次のとおりです。


注意:

Oracle Clusterware APIデモは、Windowsではサポートされていません。

Oracle Clusterwareコマンドを使用した高可用性の実現の概要

Oracle Clusterwareには、すべてのアプリケーションを保護するためのインフラストラクチャを提供する高可用性フレームワークが含まれます。 Oracle Clusterwareで管理されるアプリケーションは、システムの起動時に起動されます。 また、Oracle Clusterwareは、アプリケーションを監視して、アプリケーションを常に使用可能な状態にします。 たとえば、あるプロセスが失敗した場合、Oracle Clusterwareはカスタマイズされたスクリプトに基づいて、そのプロセスの再起動を試行します。 クラスタ内のノードに障害が発生した場合、通常は障害が発生したノード上で実行されるプロセスを、別のノード上で再起動するようにプログラムできます。 監視の頻度、アプリケーションの起動と停止およびアプリケーションの依存性を構成できます。

アプリケーションの高可用性を実現するには、まずアプリケーションを識別するアプリケーション・プロファイルを作成します。 アプリケーション・プロファイルでは、2つ目のコンポーネントであるアクション・プログラムが使用されます。アクション・プログラムには、Oracle Clusterwareがアプリケーションを監視する方法およびアプリケーションのステータスの変化に対してOracle Clusterwareが対処する方法が記述されます。 アプリケーション・プロファイル属性はOCRに格納されます。 アプリケーション・プロファイル、アクション・プログラムおよびその他の主なOracle Clusterware高可用性コンポーネントの定義は、次のとおりです。

Oracle Clusterwareコマンドを使用したカスタム・アプリケーションの管理の概要

Oracle Clusterwareコマンドを使用して、カスタム・アプリケーションの起動、停止、再配置およびステータスのチェックを行うことができます。 これを行うには、アプリケーション・プロファイルでアプリケーションを定義します。 プロファイルでは、Oracle Clusterwareがアプリケーションを管理する方法に影響を及ぼす属性を定義します。 その後、crs_registerコマンドを使用して、アプリケーション情報をOCRに登録します。 アプリケーション・プロファイルを作成するには、次の手順を実行します。

  1. crs_profileコマンドを実行して、アプリケーション・プロファイルを作成します。 Oracle Clusterwareプロファイルの必須およびオプションのエントリのリストは、表5-1を参照してください。

  2. crs_registerコマンドを使用して、アプリケーション・プロファイルを登録します。

  3. crs_startコマンドを実行して、アプリケーション・プロファイルを開始します。Oracle Clusterwareによって、アプリケーションを起動するためにプロファイルに含めたstartコマンドが実行されます。

  4. Oracle Clusterwareは、定期的にアクション・プログラム・コマンドを実行して、アプリケーションのステータスをチェックします。

  5. チェック時またはノード障害が発生した場合、Oracle Clusterwareは、アプリケーションを現行のノード上で再起動するか、または他のノードに再配置してリカバリします。

  6. crs_stopコマンドを実行してアプリケーションを停止した場合、Oracle Clusterwareはstop action programコマンドを実行して、アプリケーションを停止します。

アプリケーションの可用性は、次のように管理できます。

Oracle Clusterwareを使用する場合、完全な管理権限は必要ありません。 すべてのユーザーが、リソースまたはアプリケーションを作成できます。 ただし、他のユーザーがアプリケーション上でOracle Clusterwareを使用できるようにするには、作成者または所有者が、他のユーザーまたはユーザー・グループに対して権限を付与する必要があります。 また、権限が定義されているプロファイルを変更できるのは、権限を持つユーザーのみです。 次の項では、アプリケーション・プロファイルの詳細を示します。


注意:

Oracleサポート・サービスで要求された場合を除き、接頭辞oraで始まる名前のリソースに対して、接頭辞にcrs_を持つOracle Clusterwareコマンド(crs_statを除く)は使用しないでください。 かわりに、Oracleリソースに対して、サーバー制御(SRVCTL)ユーティリティを使用します。 オラクル社が定義したリソースに基づくリソースを作成できます。 リソースを作成する際、リソース名に接頭辞oraを使用しないでください。 この接頭辞は、Oracleでのみ使用するために予約されています。

アプリケーション・プロファイルの作成

アプリケーション・プロファイルには、Oracle Clusterwareがアプリケーションを起動、管理および監視する方法を定義する属性が含まれます。 1つの属性は、Oracle Clusterwareがアプリケーションを操作するために使用するアクション・プログラムの位置を示します。 Oracle Clusterwareは、アクション・プログラムを使用して、アプリケーションのステータスを監視またはチェックして、アプリケーションを起動および停止します。 Oracle Databaseは、指定された場所に格納されたファイルからアプリケーション・プロファイルを読み取り、その情報をOCRに格納します。 プロファイル内のOracle Clusterwareコマンドは、リソースの依存性を指定したり、アプリケーションまたはサービスが、依存するリソースに対するアクセス権を失った場合に、アプリケーションまたはサービスで発生した問題を判別するために使用します。

プロファイルの詳細は、次の項を参照してください。 プロファイルを作成する場合は、crs_profileコマンドの使用をお薦めします。詳細は、付録D「高可用性Oracle Clusterwareのコマンドライン・リファレンスおよびC API」を参照してください。

アプリケーションのリソース・プロファイル

属性は、プロファイル・ファイル内の名前=値エントリで定義されるため、ファイル内のエントリは任意の順序で指定できます。 アプリケーション・プロファイルの主な属性の一部を次に示します。

  • REQUIRED_RESOURCESパラメータの設定で定義される、アプリケーションに必須のリソース。 必須リソースが使用不可になると、Oracle Clusterwareは、アプリケーションを再配置または停止します。 必須リソースは、各ノードに定義されます。

  • PLACEMENTパラメータの設定で定義される、アプリケーションを起動または再起動するノードの選択規則。 アプリケーションは、配置場所の候補に指定したノードからアクセス可能である必要があります。

  • Oracle ClusterwareがHOSTING_MEMBERSパラメータの設定で定義されるアプリケーションを起動またはフェイルオーバーする場合に、優先順位に従って使用されるノードのリスト。 PLACEMENTパラメータで定義される配置ポリシーがfavoredまたはrestrictedである場合に、このリストが使用されます。

  • アプリケーション・プロファイルのファイル名は、resource_name.capの書式で指定する必要があります。ここで、resource_nameは、自分またはシステムがアプリケーションに割り当てた名前です。capは、ファイルの接尾辞です。 プロファイル内のOracle Clusterwareコマンドでは、完全なファイル名ではなく、resource_nameなどの名前によってアプリケーションが参照されます。

必須およびオプションのプロファイル属性

アプリケーション・プロファイルには、オプションおよび必須のプロファイル属性があります。 オプションのプロファイル属性は、プロファイルに指定しなくてもかまいません。 デフォルト値が指定されたオプションのプロファイル属性は、登録時にそのリソース・タイプのテンプレートおよび汎用テンプレートに格納されている値とマージされます。 デフォルト値は、テンプレートから導出されます。

各リソース・タイプには、TYPE_resource_type.capという名前のテンプレート・ファイルがあります。このファイルは、Oracle Clusterwareホームのcrsディレクトリ下のtemplateサブディレクトリに格納されています。 すべてのタイプのリソースで使用される値の汎用テンプレート・ファイルは、TYPE_generic.capというファイル名の同じ場所に格納されています。

アプリケーション・プロファイルの属性

表5-1に、Oracle Clusterwareのアプリケーション・プロファイル属性をアルファベット順で示します。 この表には、属性が必須かどうか、デフォルト値および説明を属性ごとに示します。

表5-1 アプリケーション・プロファイルの属性

属性 必須かどうか デフォルト値 範囲 説明

ACTION_SCRIPT

必須

なし

該当なし

リソースを起動、停止およびチェックするためのリソース固有のスクリプト。 アクション・プログラム・ファイルのフルパスを指定できます。 指定しない場合、デフォルトのパス(権限を持つプロファイルの場合はCRS_home/crs/script、パブリック・プロファイルの場合はCRS_home/crs/public)が使用されます。 また、このデフォルト・パスを起点として、相対パスを指定することもできます。

ACTIVE_PLACEMENT

オプション

0

0, 1

1に設定すると、Oracle Clusterwareは、クラスタ・ノードの追加または再起動中にリソースの配置を再評価します。

AUTO_START

オプション

restore

該当なし

クラスタを再起動した後に、Oracle Clusterwareによってリソースを自動的に起動する必要があるかどうかを示します。 AUTO_STARTの有効な値は次のとおりです。

  • always: ノードが停止したときのリソースのステータスに関係なく、ノードの再起動時にリソースを再起動します。

  • restore: ノードが停止したときと同じステータスにリソースをリストアします。 ノードが停止したときにリソースのステータスがOFFLINE(STATE=OFFLINE、TARGET=OFFLINE)だった場合は、ノードが復旧してもリソースはOFFLINEのままです。 リソースは、停止時にONLINEであった場合にのみ起動されます。

  • never: ノードが停止したときのリソースのステータスに関係なく、Oracle Clusterwareはリソースを再起動しません。

注意: alwaysrestoreおよびneverの値は、小文字のみがサポートされています。

CHECK_INTERVAL

オプション

60

0または任意の正の整数

リソースのアクション・プログラムのチェック・エントリ・ポイントが繰返し実行される時間間隔(秒単位)。 チェックの間隔を短い値に設定して、頻繁にチェックされるようにした場合、なんらかのオーバーヘッドを伴う可能性があります。 属性を無効にするには、0を設定します。

DESCRIPTION

オプション

リソースの名前

該当なし

リソースの説明。

FAILOVER_DELAY

オプション

0

0または任意の正の整数

Oracle Clusterwareがリソースの再起動またはフェイルオーバーを試行する前に待機する時間(秒単位)。 即時フェイルオーバーを有効にするには、0を設定します。

FAILURE_INTERVAL

オプション

0

0または任意の正の整数

Oracle Clusterwareが障害しきい値を適用する間隔(秒単位)。 値が0(ゼロ)の場合、障害の追跡は無効になります。

FAILURE_THRESHOLD

オプション

0

0または任意の正の整数

指定されたFAILURE_INTERVAL内で検出される障害の数。この値を超えると、Oracle Clusterwareがリソースを使用不可としてマーク付けし、そのリソースの監視を停止します。 リソースのチェック・スクリプトがこの回数失敗すると、リソースは停止され、OFFLINEになります。 値が0(ゼロ)の場合、障害の追跡は無効になります。

HOSTING_MEMBERS

場合による

なし

該当なし

リソースのホスティングが可能なクラスタ・ノードのリスト。リストは、空白で区切って順序付けします。 PLACEMENTfavoredまたはrestrictedである場合にのみ、この属性は必須です。 PLACEMENTbalancedに指定された場合、この属性は空にする必要があります。

HOSTING_MEMBERS属性の値には、仮想ホスト名または物理ホスト名ではなく、ノード名を入力します。 Oracle Clusterwareのインストール時に使用したノード名を使用します。 リソースには、リソースが実行されるノードのノード名を含める必要があります。 ノード名を確認するには、olsnodesコマンドを実行します。 これらのOracle Clusterwareリソースを作成すると、Oracle ClusterwareのHOSTING_MEMBERS属性が自動的に設定されます。この属性が設定されていることを確認するために、他の操作を行う必要はありません。

ノード名は、通常、物理ホスト名と同じです。 ただし、ノード名を変更することもできます。 たとえば、ベンダーのクラスタウェアが存在する場合、Oracle Clusterwareのノード名はベンダーのクラスタウェアのノード名と同じです。 ベンダーのクラスタウェアの実装に、物理ノード名がノード名として使用されるとはかぎりません。 ベンダーのクラスタウェアのノード名を表示するには、lsnodesコマンドを使用します。 ベンダーのクラスタウェアが存在しない場合、Oracle Clusterwareのノード名は物理ホスト名と同じである必要があります。

NAME

必須

なし

該当なし

アプリケーションの名前。 アプリケーション名は、aからzまたはAからZの文字と0から9の数値を組み合せた文字列です。 ネーミング規則は、名前の先頭を英数字の接頭辞(sky1など)にし、末尾をアプリケーションの識別子にすることです。 名前には、プラットフォームでサポートされるすべての文字(感嘆符(!)を除く)を使用できます。 ただし、アプリケーション名をピリオドで始めることはできません。

OPTIONAL_RESOURCES

オプション

なし

該当なし

配置を決定する際にこのリソースで使用されるリソース名のリスト。リストは、空白で区切って順序付けします。 最大58個のユーザー定義のリソースを指定できます。

PLACEMENT

オプション

balanced

該当なし

配置ポリシー(balancedfavoredまたはrestricted)には、Oracle Clusterwareがリソースを起動するクラスタ・ノードを選択する方法が指定されます。 「アプリケーションの配置ポリシー」も参照してください。

REQUIRED_RESOURCES

オプション

なし

該当なし

このリソースが依存するリソース名のリスト。リストは、空白で区切って順序付けします。 このプロファイルで必須リソースとして使用される各リソースは、Oracle Clusterwareに登録する必要があります。登録しない場合、リソースのプロファイル登録が失敗します。

RESTART_ATTEMPTS

オプション

1

0または任意の正の整数

Oracle Clusterwareがリソースの再配置を試行する前に、単一のクラスタ・ノード上でリソースの再起動を試行する回数。 1の値を指定した場合、Oracle Clusterwareは、1つのノード上でリソースの再起動を1回のみ試行します。 2回失敗すると、リソースの再配置が試行されます。 0を設定すると、再起動は試行されず、フェイルオーバーが常に試行されます。

RESTART_COUNT

 


 


該当なし

Oracle Clusterwareデーモンによって保持される、リソースが再起動された回数を示すカウンタ。 0(ゼロ)からRESTART_ATTEMPTSまでカウントされます。 これは、OCRにも書き込まれます。

SCRIPT_TIMEOUT

オプション

60

任意の正の整数

アクション・スクリプトを実行する最大時間(秒単位)。 スクリプトが指定された時間内に完了しなかった場合、エラー・メッセージが戻されます。 このタイムアウトは、すべてのアクション・スクリプトのエントリ・ポイント(起動、停止およびチェック)に適用されます。 値が指定されていない場合、Oracle Clusterwareではデフォルト値の60秒が使用されます。

START_TIMEOUT

 


 


該当なし

起動アクション・スクリプトを実行できる最大時間(秒単位)。 スクリプトが指定された時間内に完了しなかった場合、エラー・メッセージが戻されます。 この属性が指定されていなかったり、0秒が指定されている場合、Oracle ClusterwareではSCRIPT_TIMEOUT値が使用されます。

STOP_TIMEOUT

 


 


該当なし

停止アクション・スクリプトを実行できる最大時間(秒単位)。 スクリプトが指定された時間内に完了しなかった場合、エラー・メッセージが戻されます。 この属性が指定されていなかったり、0秒が指定されている場合、Oracle ClusterwareではSCRIPT_TIMEOUT値が使用されます。

TYPE

必須

なし

該当なし

applicationを設定する必要があります。

UPTIME_THRESHOLD

 


 


任意の正の整数

Oracle Clusterwareがリソースを安定しているとみなすまでに、リソースが稼働中である必要がある時間。 UPTIME_THESHOLD属性の値を設定すると、リソースの安定性を示すことができます。 この属性の書式は、xdです。xは正の整数、dは次の単位名のいずれかです。


s: 秒(デフォルト)
m: 分
h: 時間
d: 日
w: 週

例: デフォルトはsであるため、30は30秒です。10mは10分です。


プロファイルのデフォルトの位置

プロファイルは任意の場所に格納できます。また、クラスタが認識可能なファイル・システム上に格納する必要はありません。 次の項で説明するとおり、Oracle RACではプロファイルのデフォルトの位置が提供されています。 LinuxおよびUNIXシステムではroot権限、Windowsシステムでは管理者権限を持つプロファイルのデフォルトの位置は、Oracle Clusterwareホームのcrsディレクトリ下のprofileサブディレクトリです。 root権限または管理者権限を持たないプロファイルのデフォルトの位置は、Oracle Clusterwareホームのcrsディレクトリ下のpublicサブディレクトリです。 アクション・スクリプトはすべてのノードで同じディレクトリに格納され、同じファイルである必要があります。

Oracle Clusterwareを使用してリソースを管理するためのエントリ・ポイントの使用方法

エントリ・ポイントを使用すると、リソースの起動、停止およびチェックを行う方法を指定できます。 シェルまたはPerlスクリプト、C++関数、Java関数を使用するなど、様々な方法でエントリ・ポイントを実装できます。 Oracle Clusterwareには、次のエントリ・ポイントがあります。

  • START: 開始(オンライン)エントリ・ポイントでは、リソースをオンラインにします。

  • STOP: 停止(オフライン)エントリ・ポイントでは、リソースをオフラインにします。

  • CHECK: チェック(監視)・エントリ・ポイントでは、リソースの状態を監視します。

Oracle Clusterwareコマンドを使用したアプリケーション・プロファイルの作成の例

この項の例では、postmanという名前のアプリケーションを作成します。 Oracle Clusterwareは、/opt/email/bin/crs_postmanスクリプトを使用して、アプリケーションの起動、停止、およびアプリケーションが実行中かどうかの監視を行います(action_script)。 Oracle Clusterwareは、check_interval属性の設定に従って、5秒ごとにpostmanをチェックします。 障害が発生した場合、Oracle Clusterwareはpostmanを1回のみ再起動します。 Oracle Clusterwareは、postmanアプリケーションを配置するノードを決定する際、optional_resourcesパラメータの値を考慮します。 可能な場合、Oracle Clusterwareは同じノード上にpostmanを配置します。 最終的に、postmanを実行するには、リソースnetwork1が、required_resourcesパラメータに設定されたノードと同じノードで実行されている必要があります。 リソースnetwork1に障害が発生するか、または別のノードに再配置された場合、Oracle Clusterwareはpostmanアプリケーションを停止または移動します。


注意:

Oracleサポート・サービスで要求された場合またはhttp://metalink.oracle.comに示された方法でオラクル社から認定された場合を除き、接頭辞oraで始まる名前のリソースに対して、接頭辞にcrs_を持つOracle Clusterwareコマンド(crs_statを除く)は使用しないでください。

かわりに、Oracleリソースに対して、サーバー制御(SRVCTL)ユーティリティを使用します。 オラクル社が定義したリソースに基づくリソースを作成できます。 リソースを作成する際、リソース名に接頭辞oraを使用しないでください。 この接頭辞は、Oracleでのみ使用するために予約されています。

また、Oracle Clusterwareコマンドを使用して、構成およびステータスを確認できます。


crs_profileコマンドを使用したアプリケーション・リソース・プロファイルの作成

アクション・プロファイルを作成するには、crs_profileコマンドを使用します。 例5-1では、crs_profileコマンドを使用して、電子メールの監視に使用されるpostmanアクション・スクリプトのアプリケーション・プロファイルを作成します。

例5-1 crs_profileコマンドを使用したアクション・プロファイルの作成

$ crs_profile -create postman -t application -B /opt/email/bin/crs_postman \
-d "Email Application" -r network1 -l application2 \
-a postman.scr -o ci=5,ft=2,fi=12,ra=2

この例で作成するアプリケーション・プロファイル・ファイルの内容は、次のとおりです。

NAME=postman
TYPE=application
ACTION_SCRIPT=/oracle/crs/script/postman.scr
ACTIVE_PLACEMENT=0
AUTO_START=always
CHECK_INTERVAL=5
DESCRIPTION=email app
FAILOVER_DELAY=0
FAILURE_INTERVAL=12
FAILURE_THRESHOLD=2
HOSTING_MEMBERS=
OPTIONAL_RESOURCES=application2
PLACEMENT=balanced
REQUIRED_RESOURCES=network1
RESTART_ATTEMPTS=2
SCRIPT_TIMEOUT=60

アクション・スクリプトの最適な例はxclockスクリプトです。これは、すべてのLinuxおよびUNIXプラットフォームにおけるデフォルト・バイナリである簡単なアクション・スクリプトです。 例5-2では、xclockアクション・スクリプトの内容を示しています。

例5-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

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"
           fi
        fi

         echo "$BIN_NAME: $status_p1"
        ;;

'stop')
        if [ "${PID1}" != "" ]
        then
           kill -9 ${PID1} && echo "$BIN_NAME daemon killed"
        else
           echo "$BIN_NAME: no running Process!"
        fi
        ;;
'check')
        if [ "$PID1" != "" ]
        then
           echo "running"
           exit 0
        else
           echo "not running"
           exit 1
        fi
        ;;
*)
        echo "Usage: "`basename $0`" {start|stop|check}"
        ;;
esac

関連項目:

コマンドのオプションの詳細は、付録D「高可用性Oracle Clusterwareのコマンドライン・リファレンスおよびC API」を参照してください。

Oracle Clusterwareの必須リソースのリスト

Oracle Clusterwareは、配置ポリシーおよびホスティング・ノードのリストとともに必須リソースのリストを使用して、アプリケーションのホスティングに適切なクラスタ・ノードを判別します。 必須リソースは、アプリケーションが稼働または起動しているノード上でONLINEステータスである必要があります。

ホスティング・ノード上の必須リソースに障害が発生すると、Oracle Clusterwareは現行のノードでアプリケーションの再起動を試行します。 RESTART_ATTEMPTS0に設定されていない場合、およびアプリケーションが現行のノードで起動できない場合、Oracle Clusterwareは、必須リソースが提供されている別のノードにアプリケーションのフェイルオーバーを試行します。 適切なノードが存在しない場合は、Oracle Clusterwareはアプリケーションを停止します。 この場合、Oracle Clusterwareは、not restartingイベント通知を行います。

強制(-f)オプションを指定してcrs_startcrs_stopまたはcrs_relocateコマンドを使用した場合、必須リソースのリストを使用して、相互依存関係にあるアプリケーション・グループを起動、停止および再配置することもできます。 つまり、他の必須リソースを使用するように一連のリソースを構成できます。 たとえば、リソースAおよびBがリソースCに依存するABおよびCを構成できます。 -forceオプションを使用してリソースCを停止する場合、このアクションは3つのすべてのリソースを停止します。 crs_relocateコマンドでも同様です。

また、-forceオプションを使用することによって、オンライン依存性を再配置し、必要に応じて、リソースを起動できます。 たとえば、ノードAがプライマリ・ノードとして割り当てられているリソースVIP_Aが、かわりにノードBで実行されていると想定します。 ノードAのインスタンス・リソースでcrs_startを実行すると、この操作は失敗します。 これは、VIP_AリソースがノードAのインスタンスに必須であり、VIP_Aリソースがオンラインであるためです。 ただし、リソースは、リソースが実行できないノード上にあります。 ただし、インスタンス Bでcrs_start -fを実行すると、強制的にVIP_Aリソースが再配置され、インスタンスが起動されます。

アプリケーションのVIPの作成

ネットワーク経由でアプリケーションにアクセスしている場合、依存リソースとして、アプリケーションの仮想インターネット・プロトコル(VIP)・アドレスを作成することをお薦めします。 前述の例では、アプリケーションのVIPアドレスはnetwork1です。 次のコマンドを実行して、アプリケーションのVIPアドレスを作成します。

crs_profile –create network1 -t application \
-a CRS_home/bin/usrvip \
-o oi=eth0,ov=138.3.83.78,on=255.255.240.0

注意:

VIPユーザーの場合、Oracle DatabaseのCRS home/binディレクトリに提供されているusrvipアクション・スクリプトを使用する必要があります。

この例では、CRS_HOMEはOracle Clusterwareのインストール環境のホーム・ディレクトリです。 また、eth0はパブリック・ネットワーク・アダプタの名前です。138.3.83.78は、アプリケーションが実行されているノードに関係なく、DNSによって、アプリケーションを検索する新しいホスト名に解決されます。 255.255.240.0は、パブリックIPアドレスのネットマスクです。 oracleユーザーとして、次のようにVIPアドレスをOracle Clusterwareに登録します。

crs_register network1

LinuxおよびUNIXオペレーティング・システムの場合、アプリケーションのVIPアドレス・スクリプトはrootユーザーとして実行する必要があります。 rootユーザーとして、リソースの所有者を次のように変更します。

crs_setperm network1 –o root

rootユーザーとして、oracleユーザーによるこのスクリプトの実行を許可します。

crs_setperm network1 –u user:oracle:r-x

oracleユーザーとして、VIPアドレスを次のように起動します。

crs_start network1

アプリケーションの配置ポリシー

配置ポリシーには、Oracle Clusterwareがアプリケーションを起動するノード、およびノードに障害が発生した後にアプリケーションを再配置するノードを選択する方法が指定されます。 アプリケーション・プロファイルにリストされたすべての必須リソースが使用可能なクラスタ・ノードのみが、アプリケーションの適切なホスティング・ノードとみなされます。 Oracle Clusterwareでは、次の配置ポリシーがサポートされています。

  • balanced: Oracle Clusterwareは、現在実行中のリソースが最も少ないノードで、アプリケーションを優先的に起動または再起動します。 オプション・リソースに基づいた配置が、最初に検討されます。 次に、実行中のリソースが最も少ないホストが選択されます。 これらの条件に従って優先されるノードが存在しない場合、使用可能なノードが選択されます。

  • favored: Oracle Clusterwareは、アプリケーション・プロファイルのHOSTING_MEMBERS属性内のノードのリストを参照します。 このノード・リストに存在し、リソースの要件を満たすクラスタ・ノードのみが、配置の対象として検討されます。 オプション・リソースに基づいた配置が、最初に検討されます。 オプション・リソースに基づいた適切なノードが存在しない場合は、ホスティング・ノードの順序によって、アプリケーションを実行するノードが決定されます。 ホスティング・ノードのリストに使用可能なノードが存在しない場合、Oracle Clusterwareはアプリケーションを任意の使用可能なノードに配置します。 このノードはHOSTING_MEMBERSリストに含まれている場合と含まれていない場合があります。

  • restricted: favoredに類似していますが、ホスティング・リストのノードのいずれも使用可能でない場合、Oracle Clusterwareはアプリケーションを起動または再起動しません。 restrictedの配置ポリシーを使用すると、リストに存在しないノードに手動でアプリケーションを再配置した場合でも、アプリケーションがそのノード上で実行されることはありません。

favoredまたはrestrictedの配置ポリシーを使用するには、HOSTING_MEMBERS属性にホスティング・ノードを指定する必要があります。 balancedの配置ポリシーを使用する場合は、HOSTING_MEMBERS属性にホスティング・ノードを指定しないでください。 アプリケーションが検証されず、登録できなくなります。 ACTIVE_PLACEMENT1に設定した場合、ノードをクラスタに追加するか、またはクラスタ・ノードを再起動するたびに、アプリケーションの配置が再評価されます。 これによって、Oracle Clusterwareは、ノードが障害からリカバリした後、アプリケーションを優先ノードに再配置できます。

配置の決定におけるオプション・リソース

Oracle Clusterwareは、オプション・リソースを使用し、ホスティング・ノードでONLINEステータスであるオプション・リソースの数に基づいて、ホスティング・ノードを選択します。 各ノードのONLINEステータスであるオプション・リソースの数が同じである場合、次のようにオプション・リソースの順序が考慮されます。

  • Oracle Clusterwareは、各ノード上のオプション・リソースのステータスを、アプリケーション・プロファイルにリストされた先頭のリソースから順番に比較します。

  • リスト内の連続した各リソースに対して、あるノード上でリソースがONLINEステータスである場合、そのリソースがONLINEステータスでないノードは除外されます。

  • Oracle Clusterwareは、リソースのホスティングに使用可能なノードが1つになるまで、この方法でリスト内の各リソースを評価します。

  • オプション・リソースの最大数は58です。

このアルゴリズムによって優先ノードが複数になった場合、リソースは配置ポリシーに従って選択されたノードのいずれかに配置されます。

Oracle Clusterwareのアクション・プログラムのガイドライン

この項では、Oracle Clusterwareコマンド(startstopおよびcheck)を解釈するOracle Clusterwareのアクション・プログラムの作成のガイドラインを示します。

Oracle Clusterwareがアクション・プログラムを実行する方法

この項では、Oracle Clusterwareがアクション・プログラムを実行する方法について説明します。 アクション・プログラムに対する最初の引数は、Oracle Clusterwareが実行中のアクションに応じて、startstopまたはcheckコマンドのいずれかになります。 2番目の引数は、アプリケーションのOracle Clusterwareのリソース名です。 これによって、スクリプトが、Oracle Clusterwareが起動、停止またはチェックを実行するインスタンスを判別できます。アクション・プログラムは、$_CAA_attribute_nameを使用して、環境からOracle Clusterwareのすべてのリソース属性を取得できます。 たとえば、$_CAA_NAMEにはアプリケーション名(スクリプトに対する2番目の引数)が含まれ、$_CAA_HOSTING_MEMBERSにはそのHOSTING_MEMBERS属性が含まれています。

ユーザー定義の属性

Oracle Clusterwareでは、Oracle Clusterwareアプリケーションでのユーザー定義の属性がサポートされています。ユーザー定義の属性には、USRを含む名前が付きます。 ユーザー定義の属性は、アプリケーションに対するOracle Clusterwareのアプリケーション・プロファイルの一部として格納されます。 これらの属性は、$_USR_attributenameを使用してアクション・プログラム内で参照できます。 ユーザー定義の属性を追加するには、次の構文を使用して、CRS_home/crs/template/application.tdfファイルに追加します。

#
# an example user-defined attribute
#
#!===========================
attribute: USR_EXAMPLE
type: string
switch: -o example
default:
required: no

attributeパラメータには、新しい属性の名前が含まれます。 typeパラメータには、ユーザー定義の属性のタイプが定義されます。属性のタイプは次のいずれかになります。

  • string

  • boolean

  • integer: 数値属性

  • positive_integer: 数値属性(正の整数)

  • name string

  • name_list: カンマで区切られた名前のリスト

switchパラメータには、crs_profileコマンドに属性を指定する方法を指定します。 ユーザー定義の属性のrequiredフィールドをnoに設定します。


注意:

USR_ORAで始まるユーザー定義の属性名は、Oracleで使用するために予約されています。

Windowsのcrsuserプログラム

この項では、Windowsのcrsuserプログラムについて説明します。 crsuserコマンドの構文は、次のとおりです。

crsuser add [domain\]username

たとえば、Windowsシステムでは、ORA_DBAグループおよびローカル管理者グループに含まれているオペレーティング・システム・ユーザーとして、次のコマンドを発行することができます。

C:\> crsuser add oracledomain\oracluster

ユーザーのWindowsパスワードを指定します。 これによって、OracleCRSToken_userサービスが作成されます。このサービスは、Oracle Clusterwareが、指定されたユーザーID(LocalSystemアカウントで実行されていない場合)でOracle Clusterwareリソースを起動するために必要です。 また、crsuserコマンドremove [domain\]usernameを使用して、トークン・サービスおよび登録済ユーザーがリストされるcrsuserリストを削除することもできます。

Oracle Clusterwareコマンドの使用

この項では、Oracle Clusterwareコマンドを使用する方法について説明します。内容は次のとおりです。

アプリケーション・リソースの登録

Oracle Clusterwareで管理するアプリケーションごとにアプリケーション・プロファイルを作成し、そのプロファイルをOCRに追加する必要があります。crsctl add resourceコマンドを使用して、アプリケーションをOCRに追加します。たとえば、前述の例の電子メール監視アプリケーションを追加するには次のコマンドを入力します。

# crsctl add resource postman

プロファイルを変更した場合、crs_register -uコマンドを再実行して、OCRを更新します。

アプリケーション・リソースの起動

Oracle Clusterwareに登録されているアプリケーション・リソースを起動するには、crs_startコマンドを使用します。 次に例を示します。

# crs_start postman

次のテキストは、コマンドの出力例です。

Attempting to start 'postman' on node 'rac1'
Start of 'postman' on node 'rac1' succeeded.

アプリケーションは現在、rac1という名前のノード上で実行されています。


注意:

アプリケーション・リソースの名前は、アプリケーションの名前と同じ場合と同じでない場合があります。


関連項目:

Oracle Clusterwareコマンドの出力例は、付録D「高可用性Oracle Clusterwareのコマンドライン・リファレンスおよびC API」を参照してください。

アクション・プログラムがコールされるたびに、コマンドがSCRIPT_TIMEOUTパラメータに設定された時間待機して、アクション・プログラムから成功または失敗の通知を受け取ります。 障害しきい値を超えたために停止したアプリケーション・リソースは、起動できます。 起動する前に、リソースをcrs_registerに登録する必要があります。

リソースを起動および停止するには、crs_startおよびcrs_stopコマンドを使用します。 Oracle Clusterwareの外部でリソースを手動で起動または停止すると、リソースのステータスを無効にできます。 また、Oracle Clusterwareによって、手動で停止操作を実行したリソースの再起動が試行される場合もあります。

すべての必須リソースが、リソースを起動したノード上でONLINEである必要があります。 REQUIRED_RESOURCESパラメータで識別される必須リソースがOFFLINEの場合、crs_start resource_nameコマンドを実行すると、リソースが起動される前に、必須リソースが起動されます。

crs_startコマンドをリソースで実行すると、リソースのターゲット値がONLINEに設定されます。 Oracle Clusterwareは、startパラメータを指定してアクション・プログラムを実行し、ターゲットと一致するようにステータスの変更を試行します。 リソースが実行中の場合、ターゲットのステータスと現在のステータスの両方がONLINEになります。

使用不可のノード上でのアプリケーションの起動

使用不可のクラスタ・ノード上でアプリケーションを起動した場合、crs_startを実行すると、不確定な結果が戻されます。 この例では、アクション・プログラムの起動セクションが実行されます。ただし、起動の通知がコマンドラインに表示される前に、クラスタ・ノードに障害が発生します。 crs_startコマンドは失敗し、エラーRemote start for resource_name failed on node node_nameが戻されます。 アプリケーションは、実際にはONLINEですが、別のノードにフェイルオーバーされ、アプリケーションが不適切なノードで起動されたかのように表示されます。

クラスタ・ノードでリソースを起動中にそのノードで障害が発生した場合、crs_statコマンドを使用して、クラスタ上のリソースのステータスをチェックします。

アプリケーションおよびアプリケーション・リソースの再配置

crs_relocateコマンドを使用して、アプリケーションおよびアプリケーション・リソースを再配置します。 たとえば、rac2というノードに電子メール監視アプリケーションを再配置するには、次のコマンドを入力します。

# crs_relocate postman -c rac2

アクション・プログラムがコールされるたびに、crs_relocateコマンドがSCRIPT_TIMEOUTパラメータの値に指定された期間待機して、アクション・プログラムから成功または失敗の通知を受け取ります。 再配置の試行は、次の場合に失敗します。

  • アプリケーションに、初期ノード上でONLINEの必須リソースが存在する

  • 指定されたリソースが必要なアプリケーションが、初期ノード上でONLINEである

アプリケーションおよびその必須リソースを再配置するには、-fオプションを指定してcrs_relocateコマンドを使用します。 Oracle Clusterwareは、ステータスに関係なく、アプリケーションに必要なすべてのリソースを再配置または起動します。

アプリケーションおよびアプリケーション・リソースの停止

アプリケーションおよびアプリケーション・リソースを停止するには、crs_stopコマンドを使用します。 crs_stopコマンドを完了すると、アプリケーションのステータスはただちにOFFLINEに変わります。 Oracle Clusterwareは、常にリソースのステータスをターゲットのステータスに一致させようとするため、Oracle Clusterwareのサブシステムによって、アプリケーションが停止されます。 次の例では、電子メール・アプリケーションを停止します。

# crs_stop postman

次のテキストは、コマンドの出力例です。

Attempting to stop `postman` on node `rac1`
Stop of `postman` on node `rac1` succeeded.

アプリケーションが別のオンライン・アプリケーションの必須リソースである場合、強制(「-f」)オプションを使用しないかぎり、そのアプリケーションを停止できません。 crs_stop -f resource_nameコマンドを他のリソースで必要とされるアプリケーション上で使用する場合、およびこれらのリソースがONLINEである場合、Oracle Clusterwareはアプリケーションを停止します。 また、このアプリケーションを必要とする、すべてのONLINEのリソースも停止されます。


注意:

Oracle Clusterwareが停止できるのは、アプリケーションおよびアプリケーション・リソースのみです。 Oracle Clusterwareは、ネットワーク、テープまたはメディア・チェンジャ・リソースを停止できません。

Oracle Clusterwareによるアクション・スクリプトに対するリソースの自動操作の管理

この項では、Oracle Clusterwareによる再起動の管理を制御する方法について説明します。 アクション・プログラムのいくつかの属性を設定することによって、Oracle Clusterwareが自動的にリソースを再起動しないようにできます。 また、Oracle Clusterwareによるアクション・プログラムの再起動カウンタの管理を制御することもできます。 さらに、Oracle Clusterwareがアクション・スクリプトで実行するstartstopおよびcheckアクションのタイムアウト値をカスタマイズすることもできます。 内容は次のとおりです。

自動再起動の防止

ノードを停止して再起動すると、Oracle Clusterwareは、ノードの起動直後にリソースを起動します。 これは、リソースが依存するシステム・コンポーネント(ボリューム・マネージャ、ファイル・システムなど)が実行されていない場合、リソースの起動が失敗する場合があるため、適切でない場合もあります。 これは特に、リソースが依存するシステム・コンポーネントをOracle Clusterwareが管理しない場合に該当します。 自動再起動を管理するには、AUTO_START属性を使用して、ノードの再起動時に、Oracle Clusterwareによって自動的にリソースが起動されるかどうかを指定します。

AUTO_STARTの有効な値は次のとおりです。

  • always: ノードが停止したときのリソースのステータスに関係なく、ノードの再起動時にリソースを再起動します。

  • restore: ノードが停止したときのリソースのステータスがOFFLINE(STATE=OFFLINETARGET=OFFLINEなど)である場合、再起動時にリソースを起動しません。 リソースは、ノードが停止したときのステータスにリストアされます。 リソースは、停止時にONLINEであった場合にのみ起動されます。

  • never: ノードが停止したときのリソースのステータスに関係なく、Oracle Clusterwareはリソースを再起動しません。


注意:

alwaysrestoreおよびneverの値は、小文字のみがサポートされています。

リソースの再起動試行カウンタの自動管理

リソースに障害が発生すると、Oracle Clusterwareは、リソースに障害が発生した回数に関係なく、プロファイル属性RESTART_ATTEMPTSに指定された実行回数のみ、リソースを再起動します。 CRSDプロセスは、内部カウンタを保持して、リソースが再起動された回数を追跡します。 Oracle Clusterwareによってリソースの安定性に基づいて再起動試行カウンタが自動的に管理されるメカニズムが提供されています。 UPTIME_THESHOLD属性を使用して、リソースの安定性を指定します。

UPTIME_THRESHOLD属性の期間は、様々な単位(秒(s)、分(m)、時間(h)、日(d)、週(w)など)で指定できます。 この属性の有効な値の例は、7日間(7d)、5時間(5h)、180分(180m)などです。 期間を数値で指定し、最後の文字として単位(smhdまたはw)を指定します。

UPTIME_THRESHOLDに設定した期間が経過すると、Oracle ClusterwareはRESTART_COUNTSの値を0(ゼロ)にリセットします。RESTART_COUNTの値がRESTART_ATTEMPTSに設定した値に達すると、Oracle Clusterwareによってアラートが生成されます。


注意:

RESTART_COUNTの値がRESTART_ATTEMPTSに設定した値に達すると、Oracle ClusterwareはCRSDログ・ファイルにアラートを記録します。 Oracle Clusterwareは、アラート・ファイルにはこのメッセージを記録しません。

RESTART_ATTEMPTSおよびRESTART_COUNTの障害発生の例

RESTART_ATTEMPTSおよびRESTART_COUNT属性の障害発生の例を次に示します。

  • リソースが再起動を繰り返している場合: リソースがアップタイムのしきい値条件を満たさず、RESTART_ATTEMPTSの値で設定された回数再起動した後、リソースが停止します。

  • ノードに障害が発生するか、またはノードが再起動した場合: リソースが再配置されるか、または同じノード上で再起動されると、Oracle ClusterwareはRESTART_COUNTERの値を0(ゼロ)にリセットします。

  • crsdプロセスが失敗した場合: RESTART_COUNTRESTART_ATTEMPTSの両方がOCRに格納されるため、動作に影響は及ぼされません。

以前のリリースに対する再起動およびタイムアウト機能の影響

Oracle Database 11gより前のリリースがインストールされている場合、次のいずれかの操作を実行して、リリース1(11.1)の属性をプロファイルに追加します。

  • Oracle Database 11gの属性でリソースを変更して、リソースを再登録します。 これによって、個別のタイムアウトが有効になります。

  • リソースは、変更しないでください。 これによって、すべてのアクション(起動、停止およびチェック)のタイムアウトとして、SCRIPT_TIMEOUTの値が使用されるOracle Database 11gより前のリリースの動作が保持されます。

アプリケーションおよびアプリケーション・リソースの登録解除

アプリケーションおよびアプリケーション・リソースの登録を解除するには、crs_unregisterコマンドを使用します。 アプリケーションまたはリソースがONLINEであるか、または別のリソースの必須リソースである場合、アプリケーションを登録解除することはできません。 次の例では、電子メール・アプリケーションを登録解除します。

# crs_unregister postman

登録解除プロセスによって、OCR上の領域が解放されます。 また、Oracle Clusterwareでリソースが管理されない場合は、クリーンアップ手順としてcrs_unregisterコマンドを実行します。 通常、永続的に停止されているすべてのアプリケーションを登録解除する必要があります。

クラスタウェア・アプリケーションおよびアプリケーション・リソースのステータス情報の表示

クラスタ・ノード上のアプリケーションおよびリソースのステータス情報を表示するには、crs_statコマンドを使用します。 次の例では、postmanアプリケーションのステータス情報を表示します。

# crs_stat postman
NAME=postman
TYPE=application
TARGET=ONLINE
STATE=ONLINE on rac2

次のコマンドを入力して、すべてのアプリケーションおよびリソースの情報を表形式で表示します。

# crs_stat -t

次のテキストは、コマンドの出力例です。

Name         Type        Target      State     Host
----------------------------------------------------------------
cluster_lockd application ONLINE    ONLINE     rac2
dhcp          application OFFLINE   OFFLINE

次のコマンドを入力して、次の情報を確認します。

  • アプリケーション・リソースが再起動された回数

  • 障害間隔内に、アプリケーション・ソースに障害が発生した回数

  • アプリケーションまたはリソースの再起動可能な回数または障害発生の許容回数の最大数

  • アプリケーションまたはリソースのターゲット・ステータスおよび通常のステータスの情報

# crs_stat -v

冗長な内容を表形式で表示するには、次のコマンドを入力します。

# crs_stat -v -t

次のテキストは、コマンドの出力例です。

Name          Type       R/RA  F/FT   Target    State    Host
----------------------------------------------------------------------
cluster_lockd application 0/30  0/0   ONLINE    ONLINE   rac2
dhcp          application 0/1   0/0   OFFLINE   OFFLINE
named         application 0/1   0/0   OFFLINE   OFFLINE
network1      application 0/1   0/0   ONLINE    ONLINE   rac1

次のコマンドを入力して、OCRに格納されたアプリケーション・プロファイルの情報を表示します。

# crs_stat -p

次のテキストは、コマンドの出力例です。

NAME=cluster_lockd
TYPE=application
ACTION_SCRIPT=cluster_lockd.scr
ACTIVE_PLACEMENT=0
AUTO_START=restore
CHECK_INTERVAL=5
DESCRIPTION=Cluster lockd/statd
FAILOVER_DELAY=30
FAILURE_INTERVAL=60
FAILURE_THRESHOLD=1
HOSTING_MEMBERS=
OPTIONAL_RESOURCES=
PLACEMENT=balanced
REQUIRED_RESOURCES=
RESTART_ATTEMPTS=2
SCRIPT_TIMEOUT=60 ...

詳細は、crs_statコマンドの項を参照してください。


関連項目:

Oracle Clusterwareコマンドの詳細は、付録D「高可用性Oracle Clusterwareのコマンドライン・リファレンスおよびC API」を参照してください。