Sun Cluster 3.0 データサービス開発ガイド

アプリケーションの停止

STOP メソッドは、データサービスを停止するために二段階の方法を提供します。pmfadm 経由で SIGTERM シグナルを使用する規則正しい方法と、SIGKILL シグナルを使用する強制的な方法です。STOP メソッドは、STOP メソッドが戻るまでの時間を示す Stop_timeout 値を取得します。次に、STOP メソッドはこの時間の 80% を規則正しい方法に割り当て、15% を強制的な方法に割り当てます (5% は予約されています)。次の例を参照してください。

STOP_TIMEOUT=`scha_resource_get -O STOP_TIMEOUT -R $RESOURCE_NAME 
-G $RESOURCEGROUP_NAM�
((SMOOTH_TIMEOUT=$STOP_TIMEOUT * 80/100))
((HARD_TIMEOUT=$STOP_TIMEOUT * 15/100))

STOP メソッドは pmfadm -q を使用し、DNS デーモンが動作しているかどうかを確認します。動作している場合、STOP メソッドはまず pmfadm -s を使用して TERM シグナルを送信し、DNS プロセスを終了します。このシグナルを送信してからタイムアウト値の 80% が経過してもプロセスが終了しない場合、STOP メソッドは SIGKILL シグナルを送信します。このシグナルを送信してからタイムアウト値の 15% が経過してもプロセスが終了しない場合、STOP メソッドはエラーメッセージを記録し、エラー状態で終了します。

pmfadm がプロセスを終了した場合、STOP メソッドはプロセスが停止したことを示すメッセージを記録し、成功で終了します。

DNS プロセスが動作していない場合、STOP メソッドは DNS プロセスが動作していないことを示すメッセージを記録しますが、成功で終了します。次のコード例に、STOP メソッドがどのように pmfadm を使用して DNS プロセスを停止するかを示します。

# in.named が動作しているかどうかを調べて、動作していれば停止する。
if pmfadm -q $RESOURCE_NAME.named; then 
	# SIGTERM シグナルをデータサービスに送信し、合計タイムアウト値
	# の 80% だけ待つ。
	pmfadm -s $RESOURCE_NAME.named -w $SMOOTH_TIMEOUT TERM
	if [ $? -ne 0 ]; then 
		logger -p ${SYSLOG_FACILITY}.err ¥
		    -t [$RESOURCETYPE_NAME,$RESOURCEGROUP_NAME,$RESOURCE_NAME]
¥
		    "${ARGV0}: Failed to stop HA-DNS with SIGTERM; Retry
with ¥
		     SIGKILL"
		
		# SIGTERM シグナルでデータサービスが停止しないので、今度は
		# SIGKILL を使用し、合計タイムアウト値の 15% だけ待つ。
		pmfadm -s $RESOURCE_NAME.named -w $HARD_TIMEOUT KILL
		if [ $? -ne 0 ]; then
		    logger -p ${SYSLOG_FACILITY}.err ¥
		    -t [$RESOURCETYPE_NAME,$RESOURCEGROUP_NAME,$RESOURCE_NAME]
		    "${ARGV0}: Failed to stop HA-DNS; Exiting UNSUCCESFUL"
		    
		    exit 1
		fi	
	fi
else 
	# この時点でデータサービスは動作していない。メッセージを記録し、
	# 成功で終了する。
	logger -p ${SYSLOG_FACILITY}.err ¥
    	    -t [$RESOURCETYPE_NAME,$RESOURCEGROUP_NAME,$RESOURCE_NAME]
¥
    	    "HA-DNS is not started"
	# HA-DNS が動作していない場合でも、成功で終了し、データサービス
	# リソースが STOP_FAILED 状態にならないようにする。
	exit 0
fi
# DNS の停止に成功。メッセージを記録し、成功で終了する。
logger -p ${SYSLOG_FACILITY}.err ¥
    -t [$RESOURCETYPE_NAME,$RESOURCEGROUP_NAME,$RESOURCE_NAME]
¥
    "HA-DNS successfully stopped"
exit 0