Veritas Cluster Server configuration

Veritas Cluster Server software is not provided by HCL. Customers who want 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 Linux.

To configure HA for HCL VersionVault, create a VCS failover service group with the following resources:

  • NIC resource - to monitor the public network interface
  • IP resource - to create the virtual IP address for the server.
    Note: Before creating the virtual IP address, assign a static IP address and hostname for the service group and add it to the local DNS server
  • Mount resource - for file system mount points for shared storage. (Not needed if the shared storage is on a NAS device.)
  • Application resource - to start, stop and monitor HCL VersionVault

A VCS application resource includes the StartProgram, StopProgram, CleanProgram and MonitorProcesses attributes. The HCL VersionVault 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 HCL VersionVault processes have stopped on the master node before starting HCL VersionVault on the standby node. The MonitorProcesses attribute should be set to /opt/hcl/ccm/versionvault/etc/albd_server, in order to monitor whether HCL VersionVault is still running.

The following scripts are not installed with HCL VersionVault, but are provided here as an example.

StartProgram (cconline)

#! /bin/ksh 
# cconline - Start VersionVault 
# 
if [  ! -f /opt/hcl/ccm/versionvault/bin/cleartool ] ; then
   echo "this is not a VersionVault host"
   exit 
fi  

# Start VersionVault 
/opt/hcl/ccm/versionvault/etc/VersionVault start  

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

StopProgram (ccoffline)

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

if [  ! -f /opt/hcl/ccm/versionvault/bin/cleartool ] ; then
   echo "this is not a VersionVault host"
   exit 
fi  

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

# Stop VersionVault 
/opt/hcl/ccm/versionvault/etc/versionvault stop  
# Wait for all VersionVault 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 "VersionVault servers have exited."
         ccend="1"
     else
         sleep 1
     fi 
done

CleanProgram (ccclean)

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

if [  ! -f /opt/hcl/ccm/versionvault/bin/cleartool ] ; then
   echo this is not a VersionVault host
   exit 
fi  

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

# Make sure all VersionVault 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 VersionVault 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 "VersionVault 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 HCL VersionVault 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 VersionVault (
 	SystemList = { hanode1 = 0, hanode2 = 1 }
 	AutoStartList = { hanode1 }
 	)  	

Application CC (
 		StartProgram = "/etc/VRTSvcs/cconline"
 		StopProgram = "/etc/VRTSvcs/ccoffline"
 		CleanProgram = "/etc/VRTSvcs/ccclean"
 		MonitorProcesses = { "/opt/hcl/ccm/versionvault/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 VersionVault
 	//	{
 	//	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
 	//	    }
 	//	}