Veritas Cluster Server configuration

Veritas Cluster Server software is not provided by IBM. Customers wishing to use VCS must purchase it from Symantec and install it on their own. See the Veritas Cluster Server documentation for details on installing, configuring and operating VCS, and hardware requirements for Solaris.

To configure HA for Rational® ClearCase®, create a VCS failover service group with the following resources:

A VCS application resource includes the StartProgram, StopProgram, CleanProgram and MonitorProcesses attributes. The Rational ClearCase application resource should use these attributes. The StartProgram, StopProgram and CleanProgram attributes must be local executables on each cluster node. They must ensure that all Rational ClearCase processes have stopped on the master node before starting Rational ClearCase on the standby node. The MonitorProcesses attribute should be set to /opt/rational/clearcase/etc/albd_server, in order to monitor whether Rational ClearCase is still running.

The following scripts are not installed with Rational ClearCase, but are provided here as an example.

StartProgram (cconline)

#! /bin/ksh 
# cconline - Start ClearCase 
# 
if [  ! -f /opt/rational/clearcase/bin/cleartool ] ; then
   echo "this is not a ClearCase host"
   exit 
fi  

# Start ClearCase 
/opt/rational/clearcase/etc/clearcase start  

# Make a registry master server 
# (Only needed if the registry server is part of the VCS service group.)
/opt/rational/clearcase/bin/cleartool setrgysvrtype –master

StopProgram (ccoffline)

#! /bin/ksh 
# ccoffline - Stop ClearCase cleanly, wait for all ClearCase processes to exit 
# 
PSOPTS="-ef"  

if [  ! -f /opt/rational/clearcase/bin/cleartool ] ; then
   echo "this is not a ClearCase host"
   exit 
fi  

# Demote the registry master to standby 
# (Only needed if the registry server is part of the VCS service group.)
/opt/rational/clearcase/bin/cleartool setrgysvrtype –standby  

# Stop ClearCase 
/opt/rational/clearcase/etc/clearcase stop  
# Wait for all ClearCase processes to exit 
ccend="0" 
while [ "$ccend" == 0 ] 
do
     PID=`ps $PSOPTS | egrep 
'(albd_server|admin_server|ccfs_server|credmap_server|db_server|mntrpc_server
|msadm_server|promote_server|shipping_server|view_server|vob_server
|vobrpc_server)' | grep -v grep`
     if [ "${PID}" == "" ] ; then
         echo "ClearCase servers have exited."
         ccend="1"
     else
         sleep 1
     fi 
done

CleanProgram (ccclean)

#! /bin/ksh 
# cclean - Clean up all ClearCase processes after a fault. 
# 
PSOPTS="-ef"  

if [  ! -f /opt/rational/clearcase/bin/cleartool ] ; then
   echo this is not a ClearCase host
   exit 
fi  

# Attempt to stop ClearCase cleanly 
PID=`ps $PSOPTS | grep albd_server | grep -v grep` 
if [ "${PID}" != "" ] ; then
    /opt/rational/clearcase/etc/clearcase stop 
fi  

# Make sure all ClearCase processes have stopped 
ccend="0" 
while [ "$ccend" == 0 ] 
do
     PID=`ps $PSOPTS | egrep '(albd_server|admin_server|ccfs_server|credmap_server
|db_server|mntrpc_server|msadm_server|promote_server|shipping_server|view_server|vob_server|vobrpc_server)' | grep -v grep`
     if [ "${PID}" != "" ] ; then
         echo "Attempting to kill ClearCase servers."
         pkill albd_server
         pkill admin_server
         pkill ccfs_server
         pkill credmap_server
         pkill db_server
         pkill mntrpc_server
         pkill msadm_server
         pkill promote_server
         pkill shipping_server
         pkill view_server
         pkill vob_server
         pkill vobrpc_server
         sleep 1
     else
         echo "ClearCase servers have exited."
         ccend="1"
     fi 
done

Sample VCS configuration

The following is a sample VCS configuration file (/etc/VRTSvcs/conf/config/main.cf), which includes a Rational ClearCase service group and resources. In this example, the sample scripts in previous sections were created in the /etc/VRTSvcs directory, but could be placed in any directory that is accessible by root.

include "types.cf"  

cluster vcs1 (
 	UserNames = { admin = annOniNhoInwMr }
 	ClusterAddress = "19.34.112.245"
 	Administrators = { admin }
 	CredRenewFrequency = 0
 	CounterInterval = 5
 	)  

system hanode1 (
 	)  

system hanode2 (
 	)  

group ClearCase (
 	SystemList = { hanode1 = 0, hanode2 = 1 }
 	AutoStartList = { hanode1 }
 	)  	

Application CC (
 		StartProgram = "/etc/VRTSvcs/cconline"
 		StopProgram = "/etc/VRTSvcs/ccoffline"
 		CleanProgram = "/etc/VRTSvcs/ccclean"
 		MonitorProcesses = { "/opt/rational/clearcase/etc/albd_server" }
 		)
  	IP CC-IP (
 		Device @hanode1 = hme0
 		Device @hanode2 = hme0
 		Address = "19.34.112.235"
 		)

  	NIC CC-NIC (
 		Device @hanode1 = hme0
 		Device @hanode2 = hme0
 		)
  	CC requires CC-IP
 	CC-IP requires CC-NIC

  // resource dependency tree
 	//
 	//	group ClearCase
 	//	{
 	//	Application CC
 	//	    {
 	//	    IP CC-IP
 	//	        {
 	//	        NIC CC-NIC
 	//	        }
 	//	    }
 	//	}   

group ClusterService (
 	SystemList = { hanode2 = 0, hanode1 = 1 }
 	UserStrGlobal = "vcs1_14141@https://19.34.112.28:8443;vcs1_14141@https://19.34.112.30:8443;"
 	AutoStartList = { hanode2, hanode1 }
 	OnlineRetryLimit = 3
 	OnlineRetryInterval = 120
 	)

  	IP webip (
 		Device = hme0
 		Address = "19.34.112.245"
 		NetMask = "255.255.252.0"
 		)

  	NIC csgnic (
 		Device = hme0
 		)
  	NotifierMngr ntfr (
 		SmtpServer = "smtp.server.com"
 		SmtpRecipients = { "user@address.com" = Information }
 		)
  	VRTSWebApp VCSweb (
 		Critical = 0
 		AppName = vcs
 		InstallDir = "/opt/VRTSweb/VERITAS"
 		TimeForOnline = 5
 		RestartLimit = 3
 		)
  	VCSweb requires webip
 	ntfr requires csgnic
 	webip requires csgnic

  // resource dependency tree
 	//
 	//	group ClusterService
 	//	{
 	//	VRTSWebApp VCSweb
 	//	    {
 	//	    IP webip
 	//	        {
 	//	        NIC csgnic
 	//	        }
 	//	    }
 	//	NotifierMngr ntfr
 	//	    {
 	//	    NIC csgnic
 	//	    }
 	//	}

Feedback