Sun Cluster 3.0 12/01 Data Services Developer's Guide

Checking the Reliability of the Service

The probe itself is an infinite while loop of nslookup(1M) commands. Before the while loop, a temporary file is set up to hold the nslookup replies. The probefail and retries variables are initialized to 0.


# Set up a temporary file for the nslookup replies.
DNSPROBEFILE=/tmp/.$RESOURCE_NAME.probe
probefail=0
retries=0

The while loop itself:

Here is the while loop code.


while :
do
	# The interval at which the probe needs to run is specified in the
	# property THOROUGH_PROBE_INTERVAL. Therefore, set the probe to sleep for a 
	# duration of THOROUGH_PROBE_INTERVAL.
	sleep $PROBE_INTERVAL

	# Run an nslookup command of the IP address on which DNS is serving.
	hatimerun -t $PROBE_TIMEOUT /usr/sbin/nslookup $DNS_HOST $DNS_HOST \
			 > $DNSPROBEFILE 2>&1

		retcode=$?
		if [ $retcode -ne 0 ]; then
				probefail=1
		fi


	# Make sure that the reply to nslookup comes from the HA-DNS
	# server and not from another nameserver mentioned in the 
	# /etc/resolv.conf file.
	if [ $probefail -eq 0 ]; then
						# Get the name of the server that replied to the nslookup query.
						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