データサービスリソースを含むリソースグループがオンラインになったとき、あるいは、リソースが有効になったとき、RGM はそのクラスタノード上で Start メソッドを呼び出します。 サンプルのアプリケーションでは、Start メソッドはそのノード上で in.named (DNS) デーモンを起動します。
#!/bin/ksh # # HA-DNS の Start メソッド # # このメソッドはPMF の制御下でデータサービスを起動する。DNS の # in.named プロセスを起動する前に、いくつかの妥当性検査を実行する。 # データサービスのPMF タグは$RESOURCE_NAME.named である。 # PMF は、指定された回数(Retry_count) だけ、サービスを起動しようとす # る。そして、指定された期間(Retry_interval) 内で試行回数がこの値を超えた # 場合、PMF はサービスの起動に失敗したことを報告する。 # Retry_count とRetry_interval は両方ともRTR ファイルに設定されて # いるリソースプロパティである。 #pragma ident ”@(#)dns_svc_start 1.1 00/05/24 SMI” ############################################################################### # プログラム引数を構文解析する。 # function parse_args # [args ...] { typeset opt while getopts `R:G:T:' opt do case ”$opt” in R) # DNS リソース名。 RESOURCE_NAME=$OPTARG ;; G) # リソースが構成されているリソース # グループの名前。 RESOURCEGROUP_NAME=$OPTARG ;; T) # リソースタイプ名。 RESOURCETYPE_NAME=$OPTARG ;; *) logger -p ${SYSLOG_FACILITY}.err \ -t [$RESOURCETYPE_NAME,$RESOURCEGROUP_NAME,$RESOURCE_NAME] \ ”ERROR: Option $OPTARG unknown” exit 1 ;; esac done } ############################################################################### # MAIN # ############################################################################## export PATH=/bin:/usr/bin:/usr/cluster/bin:/usr/sbin:/usr/proc/bin:$PATH # メッセージの記録に使用する syslog 機能番号を取得する。 SYSLOG_FACILITY=`scha_cluster_get -O SYSLOG_FACILITY` # このメソッドに渡された引数を構文解析する。 parse_args ”$@” PMF_TAG=$RESOURCE_NAME.named SYSLOG_TAG=$RESOURCETYPE_NAME,$RESOURCEGROUP_NAME,$RESOURCE_NAME # DNS を起動するため、リソースの Confdir プロパティの値を取得する。 # 入力されたリソース名とリソースグループを使用して、リソースを # 追加するときにクラスタ管理者が設定したConfdir の値を見つける。 # config_info=`scha_resource_get -O Extension -R $RESOURCE_NAME \ -G $RESOURCEGROUP_NAME Confdir` # scha_resource_get は拡張プロパティの「タイプ」と「値」を戻す。 # 拡張プロパティの値だけを取得する。 CONFIG_DIR=`echo $config_info | awk `{print $2}'` # Check if $CONFIG_DIR がアクセス可能であるかどうかを検査する。 if [ ! -d $CONFIG_DIR ]; then logger -p ${SYSLOG_FACILITY}.err -t [$SYSLOG_TAG] \ ”${ARGV0} Directory $CONFIG_DIR missing or not mounted” exit 1 fi # データファイルへの相対パスが存在する場合、$CONFIG_DIR # ディレクトリに移動する。 cd $CONFIG_DIR # named.conf ファイルが $CONFIG_DIR ディレクトリ内に存在するか # を検査する。 if [ ! -s named.conf ]; then logger -p ${SYSLOG_FACILITY}.err -t [$SYSLOG_TAG] \ ”${ARGV0} File $CONFIG_DIR/named.conf is missing or empty” exit 1 fi # RTR ファイルから Retry_count の値を取得する。 RETRY_CNT=`scha_resource_get -O Retry_Count -R $RESOURCE_NAME \ -G $RESOURCEGROUP_NAME` # RTR ファイルからRetry_interval の値を取得する。この値の単位は秒 # であり、pmfadm に渡すときは分に変換する必要がある。変換時、端数は # 切り上げられるので注意すること。たとえば、50 秒は1 分に切り上げられる。 ((RETRY_INTRVAL = `scha_resource_get -O Retry_Interval -R $RESOURCE_NAME \ -G $RESOURCEGROUP_NAME 60`)) # PMF の制御下で in.named デーモンを起動する。$RETRY_INTERVAL の期 # 間、$RETRY_COUNT の回数だけ、クラッシュおよび再起動できる。どちら # かの値以上クラッシュした場合、PMF は再起動を中止する。 # <$PMF_TAG> というタグですでにプロセスが登録されて # いる場合、PMF はすでにプロセスが動作していることを示す警告メッセ # ージを送信する。 echo ”Retry interval is ”$RETRY_INTRVAL pmfadm -c $PMF_TAG.named -n $RETRY_CNT -t $RETRY_INTRVAL \ /usr/sbin/in.named -c named.conf # HA-DNS が起動していることを示すメッセージを記録する。 if [ $? -eq 0 ]; then logger -p ${SYSLOG_FACILITY}.info -t [$SYSLOG_TAG] \ ”${ARGV0} HA-DNS successfully started” fi exit 0 |