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

サービスの信頼性の検査

検証プログラム自身は、nslookup(1M) コマンドの while による無限ループです。while ループの前に、nslookup の応答を保管する一時ファイルを設定します。probefail 変数と retries 変数は 0 に初期化されます。


# nslookup 応答用の一時ファイルを設定する。
DNSPROBEFILE=/tmp/.$RESOURCE_NAME.probe
probefail=0
retries=0

while ループ自身は、次の作業を行います。

次に、while ループコードを示します。


while :
do
	# 検証が動作すべき期間は THOROUGH_PROBE_INTERVAL プロパティに指
	# 定されている。したがって、THOROUGH_PROBE_INTERVAL の間、検証
	# プログラムが休眠するように設定する。
	sleep $PROBE_INTERVAL
	# DNS がサービスを提供している IP アドレス上で nslookup コマンド
	# を実行する。
	hatimerun -t $PROBE_TIMEOUT /usr/sbin/nslookup $DNS_HOST $DNS_HOST ¥
			> $DNSPROBEFILE 2>&1
		retcode=$?
		if [ $retcode -ne 0 ]; then
				probefail=1
		fi

	# nslookup への応答が HA-DNS サーバーから来ており、
	# /etc/resolv.conf ファイル内に指定されている他のネームサーバー
	# から来ていないことを確認する。
	if [ $probefail -eq 0 ]; then
						# nslookup 照会に応答したサーバーの名前を取得する。
						SERVER=` awk ' $1=="Server:" { print $2 }' ¥
									$DNSPROBEFILE | awk -F. ' { print $1 } ' `
						if [ -z "$SERVER" ]; then
									probefail=1
						else
									if [ $SERVER != $DNS_HOST ]; then
											probefail=1
									fi
						fi
			fi