Two scripts active-mn and deactive-mn for HAMN configuration, based on scripts from John Williams
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/branches/2.8@16583 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
This commit is contained in:
		
							
								
								
									
										285
									
								
								xCAT-server/share/xcat/hamn/activate-mn
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										285
									
								
								xCAT-server/share/xcat/hamn/activate-mn
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,285 @@ | ||||
| #!/bin/sh | ||||
| # Make this the active xCAT EMS. | ||||
| # | ||||
| # CHANGE HISTORY: | ||||
| # | ||||
| # NAME:        active-mn  | ||||
| # | ||||
| # SYNTAX:       active-mn -i <nic> -v <virtual ip> [-m <netmask>] | ||||
| # | ||||
| # DESCRIPTION:  Make this node be the active xCAT MN. | ||||
| # | ||||
| # FLAGS: | ||||
| #               -i      the nic that the virtual ip address attaches to, | ||||
| #                       for AIX, it could be en0 or en1 or ..., | ||||
| #                       for Linux, it could be eth0:1 or eth1:2 or ... | ||||
| #               -v      virtual ip address | ||||
| #               -m      netmask for the virtual ip address, | ||||
| #                       default to 255.255.255.0 | ||||
| # | ||||
| # DEPENDENCIES: | ||||
| # | ||||
| # CHANGE HISTORY: | ||||
| # | ||||
| # Date          Author  Vers.   Description | ||||
| # ----------------------------------------------------------------------------- | ||||
| # 2011-12-08   JDW     1.0     Original | ||||
| # 2013-06-06   xCAT    1.1     Updated version to ship with xCAT | ||||
|  | ||||
| SHAREDVG=sharedvg # For AIX, shared volumn group name | ||||
| SHAREDFS="/install /etc/xcat ~/.xcat" # Shared file systems | ||||
| DB2DIR=/db2database # DB2 only, the db2 database directory | ||||
| USEDFM=no # if DFM is being used | ||||
| USENTP=no # if NTP is being used | ||||
| POWER775=no # Power 775 cluster | ||||
| USETEAL=no # if TEAL is being used | ||||
| CHANGEHOSTNAME=no # set the hostname to the virtual ip address hostname | ||||
|  | ||||
|  | ||||
| xcatdb=`XCATBYPASS=1 /opt/xcat/bin/lsxcatd -d | cut -f 2 -d "=" 2>/dev/null` | ||||
|  | ||||
| usage() | ||||
| { | ||||
| 	cat << EOF | ||||
| Usage: $PROGNAME -i <nic> -v <virtual ip> [-m <netmask>]  | ||||
|  | ||||
| EOF | ||||
| } | ||||
|  | ||||
| runcmd() | ||||
| { | ||||
|     echo "Running command: $@" | ||||
|     $@ | ||||
| } | ||||
|  | ||||
| ################################################################################ | ||||
|  | ||||
| PROGNAME=$(basename $0) | ||||
|  | ||||
| while getopts ':fi:v:m:' opt | ||||
| do | ||||
| 	case "$opt" in | ||||
| 		f)      FAILOVER="true" | ||||
| 			;; | ||||
|                 i)      NIC=$OPTARG | ||||
|                         ;; | ||||
|                 v)      VIP=$OPTARG | ||||
|                         ;; | ||||
|                 m)      MASK=$OPTARG | ||||
|                         ;; | ||||
| 		*)      usage | ||||
| 			exit 1 | ||||
| 			;; | ||||
| 	esac | ||||
| done | ||||
|  | ||||
| # NIC is a required option | ||||
| if [ -z $NIC ] | ||||
| then | ||||
|     echo "Error: -i is a required option" | ||||
|     usage | ||||
|     exit 1 | ||||
| fi | ||||
| # Virtual IP is a required option | ||||
| if [ -z $VIP ] | ||||
| then | ||||
|     echo "Error: -v is a required option" | ||||
|     usage | ||||
|     exit 1 | ||||
| fi | ||||
|  | ||||
| if [ -z $MASK ] | ||||
| then | ||||
|     MASK="255.255.255.0" | ||||
| fi | ||||
|  | ||||
| ############################################################################## | ||||
|  | ||||
| # Changing IP addresses/aliases for the active mn | ||||
|  | ||||
| # Use ping to check if Virtual IP is already up and running on another mn  | ||||
| # Important to avoid configuring virtual ip on both Primary and Standby concurrently | ||||
|  | ||||
| ping -c 1 -w 10 $VIP 2>&1 1>/dev/null | ||||
| VIP_UP=$? | ||||
| if [ $VIP_UP -eq 0 ] | ||||
| then | ||||
| 	echo "$PROGNAME: Aborted startup as virtual ip appears to be already active" | ||||
| 	exit 2 | ||||
| fi | ||||
| echo "Changing IP addreses/aliases...." | ||||
| if [ `uname` = "AIX" ] | ||||
| then | ||||
|     runcmd "ifconfig $NIC firstalias $VIP netmask $MASK up" | ||||
| else # Linux | ||||
|     runcmd "ifconfig $NIC $VIP netmask $MASK" | ||||
| fi | ||||
|  | ||||
| # Optional, Set hostname to virtual ip hostname  | ||||
| if [ $CHANGEHOSTNAME = "yes" ] | ||||
| then | ||||
|     if [ `uname` = "AIX" ] | ||||
|     then | ||||
|         HOST_VIP=`host $VIP | awk -F ' ' '{print $1}'` | ||||
|     else # Linux | ||||
|         HOSTVIP=`getent hosts $VIP | awk -F ' ' '{print $2}'` | ||||
|     fi | ||||
|     runcmd "hostname ${HOST_VIP}" | ||||
| fi | ||||
|  | ||||
| # Acquire shared storage and mount fiesystems | ||||
| if [ `uname` = "AIX" ] | ||||
| then | ||||
|     runcmd "varyonvg $SHAREDVG" | ||||
| fi | ||||
|  | ||||
| for fs in $SHAREDFS | ||||
| do | ||||
|     runcmd "mount $fs" | ||||
| done | ||||
|  | ||||
| #DB2 only | ||||
| if [ $xcatdb = "DB2" ] | ||||
| then | ||||
|     runcmd "mount $DB2DIR" | ||||
| fi | ||||
|  | ||||
| # Start NFS | ||||
| echo "Export NFS filesystems and start NFS...." | ||||
| if [ `uname` = "AIX" ] | ||||
| then | ||||
|     runcmd "exportfs  -a" | ||||
|     runcmd "startsrc -g nfs" | ||||
| else | ||||
|     runcmd "exportfs -a" | ||||
|     runcmd "service nfs restart" | ||||
| fi | ||||
|  | ||||
| if [ $USENTP = "yes" ] | ||||
| then | ||||
|     if [ `uname` = "AIX" ] | ||||
|     then | ||||
|         echo "Reconfiguring NTP...." | ||||
|         runcmd "stopsrc -s xntpd" | ||||
|         #cp /usr/local/cfg/ntp.conf.primary /etc/ntp.conf | ||||
|         runcmd "startsrc -s xntpd" | ||||
|     fi | ||||
| fi | ||||
|  | ||||
| ############################################################################## | ||||
|  | ||||
| echo "Starting $xcatdb...." | ||||
| if [ `uname` = "AIX" ] | ||||
| then | ||||
|     if [ $xcatdb = "DB2" ] | ||||
|     then | ||||
|         runcmd "su - xcatdb -c \"db2start\"" | ||||
|     elif [ $xcatdb = "mysql" ] | ||||
|     then | ||||
|         runcmd "startsrc -g mysql" | ||||
|     fi | ||||
| else # Linux | ||||
|     if [ $xcatdb != "SQLite" ] | ||||
|     then | ||||
|         runcmd "service $xcatdb start 2>&1 1>/dev/null" | ||||
|     fi | ||||
| fi | ||||
|      | ||||
|  | ||||
| echo "Starting xCAT...." | ||||
| if [ `uname` = "AIX" ] | ||||
| then | ||||
|     runcmd "/opt/xcat/sbin/restartxcatd" | ||||
| else # Linux | ||||
|     runcmd "service xcatd restart" | ||||
| fi | ||||
|  | ||||
| #echo "Start xCAT on the Service Nodes...." | ||||
| #xdsh service -t 30 "/opt/xcat/sbin/restartxcatd" | ||||
|  | ||||
| if [ $USEDFM = "yes" ] | ||||
| then | ||||
|     echo "Starting Hardware Server...." | ||||
|     if [ `uname` = "AIX" ] | ||||
|     then | ||||
|         runcmd "startsrc -s hdwr_svr" | ||||
|     else # Linux | ||||
|         runcmd "service hdwr_svr start" | ||||
|     fi | ||||
|     # Create hardware connections definitions | ||||
|     runcmd "mkhwconn frame -t 2>&1 1>/dev/null" | ||||
|     runcmd "mkhwconn frame -t -T fnm 2>&1 1>/dev/null" | ||||
|     runcmd "mkhwconn cec -t" | ||||
| fi | ||||
|  | ||||
| if [ POWER775 = "yes" ] | ||||
| then | ||||
|     echo "Starting CNM daemon...." | ||||
|     runcmd "chnwm -a" | ||||
| fi | ||||
|  | ||||
| if [ USETEAL = "yes" ] | ||||
| then | ||||
|     echo "Starting Teal...." | ||||
|     if [ `uname` = "AIX" ] | ||||
|     then | ||||
|         runcmd "startsrc -s teal" | ||||
|     else # Linux | ||||
|         runcmd "service teal start" | ||||
|     fi | ||||
| fi | ||||
|  | ||||
| ############################################################################## | ||||
|  | ||||
| # Re-make DHCP definitions | ||||
| echo "Making upto date DHCP configuration file...." | ||||
| runcmd "makedhcp -n" | ||||
| runcmd "makedhcp -a" | ||||
|  | ||||
| #echo "Starting DHCP...." | ||||
| #Not necessary, makedhcp will take care of this | ||||
| #startsrc -s dhcpcd | ||||
|  | ||||
| # Define Remote console definitions.... | ||||
| # Make Console Server definitions | ||||
| runcmd "makeconservercf" | ||||
|  | ||||
| #echo "Starting Console Server...." | ||||
| #not necessary, makeconservercf will start conserver | ||||
| #startsrc -s conserver | ||||
|  | ||||
| # Restore latest version of NIM database | ||||
| # Required only if failing over from other EMS | ||||
| if [ `uname` = "AIX" ] | ||||
| then | ||||
| 	DATE=$(date '+%Y-%m-%y-%T') | ||||
| 	NIM_BACKUP="/tmp/nim-backup.${DATE}" | ||||
|  | ||||
| 	echo "Backing up NIM, just in case to ${NIM_BACKUP}...." | ||||
| 	runcmd "/usr/lpp/bos.sysmgt/nim/methods/m_backup_db ${NIM_BACKUP}" | ||||
| 	runcmd "nim -o unconfig master" | ||||
|  | ||||
| 	echo "Restoring NIM database from shared backup...." | ||||
| 	# Find latest backup | ||||
| 	NIM_BACKUP=$(find /install/nim-backup | sort | tail -1) | ||||
|  | ||||
| 	if [ -f "${NIM_BACKUP}" ] | ||||
| 	then | ||||
| 		runcmd "/usr/lpp/bos.sysmgt/nim/methods/m_restore_db ${NIM_BACKUP}" | ||||
| 	else | ||||
| 		echo "WARNING: No NIM backup file found!!" | ||||
| 	fi | ||||
| 	echo "Starting NIM...." | ||||
| 	runcmd "startsrc -s nimesis" | ||||
| fi | ||||
|  | ||||
| ############################################################################## | ||||
|  | ||||
| # Add CRON job entries for backup | ||||
| #echo "Adding Cron entries for backup...." | ||||
| #./cronEdit -a ./cron-root | ||||
|  | ||||
| echo "" | ||||
| echo "" | ||||
| echo "This machine is set to active management node successfully, enjoy..." | ||||
| exit 0 | ||||
							
								
								
									
										274
									
								
								xCAT-server/share/xcat/hamn/deactivate-mn
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										274
									
								
								xCAT-server/share/xcat/hamn/deactivate-mn
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,274 @@ | ||||
| #!/bin/sh | ||||
| # Make this the non-active xCAT management node,  | ||||
| # i.e. standby management node. | ||||
| # | ||||
| # CHANGE HISTORY: | ||||
| # | ||||
| # NAME:        deactive-mn | ||||
| # | ||||
| # SYNTAX:       deactive-mn -i <nic> -v <virtual ip>  | ||||
| # | ||||
| # DESCRIPTION:  Make this node be the standby xCAT MN. | ||||
| # | ||||
| # FLAGS: | ||||
| #               -i      the nic that the virtual ip address attaches to, | ||||
| #                       for AIX, it could be en0 or en1 or ..., | ||||
| #                       for Linux, it could be eth0:1 or eth1:2 or ... | ||||
| #               -v      virtual ip address | ||||
| # | ||||
| # DEPENDENCIES: | ||||
| # | ||||
| # CHANGE HISTORY: | ||||
| # | ||||
| # Date          Author  Vers.   Description | ||||
| # ----------------------------------------------------------------------------- | ||||
| # 2011-12-08   JDW     1.0     Original | ||||
| # 2013-06-06   xCAT    1.1     Updated version to ship with xCAT | ||||
| SHAREDVG=sharedvg # For AIX, shared volumn group name | ||||
| SHAREDFS="/install /etc/xcat ~/.xcat" # Shared file systems | ||||
| DB2DIR=/db2database # DB2 only, the db2 database directory | ||||
| USETEAL=no # if TEAL is being used | ||||
| USEDFM=no # if DFM is being used | ||||
| POWER775=no # Power 775 cluster | ||||
| CHANGEHOSTNAME=no # change the hostname from virtual ip hostname to the original hostname | ||||
|  | ||||
| xcatdb=`XCATBYPASS=1 /opt/xcat/bin/lsxcatd -d | cut -f 2 -d "=" 2>/dev/null` | ||||
|  | ||||
| usage() | ||||
| { | ||||
|         cat << EOF | ||||
| Usage: $PROGNAME -i <nic> -v <virtual ip> | ||||
|  | ||||
| EOF | ||||
| } | ||||
|  | ||||
| runcmd() | ||||
| { | ||||
|     echo "Running command: $@" | ||||
|     $@ | ||||
| } | ||||
|  | ||||
| ################################################################################ | ||||
|  | ||||
| PROGNAME=$(basename $0) | ||||
|  | ||||
| while getopts ':i:v:m:' opt | ||||
| do | ||||
|         case "$opt" in | ||||
|                 i)      NIC=$OPTARG | ||||
|                         ;; | ||||
|                 v)      VIP=$OPTARG | ||||
|                         ;; | ||||
|                 *)      usage | ||||
|                         exit 1 | ||||
|                         ;; | ||||
|         esac | ||||
| done | ||||
|  | ||||
| # NIC is a required option | ||||
| if [ -z $NIC ] | ||||
| then | ||||
|     echo "Error: -i is a required option" | ||||
|     usage | ||||
|     exit 1 | ||||
| fi | ||||
| # Virtual IP is a required option | ||||
| if [ -z $VIP ] | ||||
| then | ||||
|     echo "Error: -v is a required option" | ||||
|     usage | ||||
|     exit 1 | ||||
| fi | ||||
|  | ||||
| ############################################################################## | ||||
|  | ||||
| #echo "Removing CRON job entries for backup...." | ||||
| #cronEdit -d /usr/local/cfg/cron.ems-root | ||||
|  | ||||
| ############################################################################## | ||||
|  | ||||
| # Backup NIM if failing over to backup EMS | ||||
| if [ `uname` = "AIX" ] | ||||
| then | ||||
| 	echo "Backing up NIM...." | ||||
| 	backupFile=/install/nim-backup/nim.backup.$(date +%Y-%m-%d) | ||||
| 	date | ||||
| 	runcmd "/usr/lpp/bos.sysmgt/nim/methods/m_backup_db $backupFile" | ||||
|  | ||||
| 	echo "Stopping NIM...." | ||||
| 	runcmd "stopsrc -s nimesis"  | ||||
| fi | ||||
|  | ||||
| echo "Stopping Console Server...." | ||||
| if [ `uname` = "AIX" ] | ||||
| then | ||||
|     runcmd "stopsrc -s conserver" | ||||
| else # Linux | ||||
|     runcmd "service conserver stop" | ||||
| fi | ||||
|  | ||||
| echo  "Stopping DHCP...." | ||||
| if [ `uname` = "AIX" ] | ||||
| then | ||||
|     runcmd "stopsrc -s dhcpcd" | ||||
| else # Linux | ||||
|     runcmd "service dhcpd stop" | ||||
| fi | ||||
|  | ||||
| ############################################################################## | ||||
| if [ USETEAL = "yes" ] | ||||
| then | ||||
|     if [ `uname` = "AIX" ] | ||||
|     then | ||||
|         echo "Stopping Teal...." | ||||
|         stopsrc -s teal | ||||
|         stopsrc -s teal_ll | ||||
|     else # Linux | ||||
|         service teal stop | ||||
|         service teal_ll stop | ||||
|     fi | ||||
| fi | ||||
|  | ||||
| if [ POWER775 = "yes" ] | ||||
| then | ||||
|     echo "Stopping CNM daemon...." | ||||
|     chnwm -d | ||||
| fi | ||||
|  | ||||
| if [ $USEDFM = "yes" ] | ||||
| then | ||||
|     echo "Stopping Hardware Server...." | ||||
|     if [ `uname` = "AIX" ] | ||||
|     then | ||||
|         stopsrc -s hdwr_svr | ||||
|     else # Linux | ||||
|         service hdwr_svr stop | ||||
|     fi | ||||
| fi | ||||
|  | ||||
| #echo "Stop xCAT on the Service Nodes...." | ||||
| #xdsh service -t 30 "stopsrc -s xcatd" | ||||
|  | ||||
| echo "Stopping xCAT...." | ||||
| if [ `uname` = "AIX" ] | ||||
| then | ||||
|     stopsrc -s xcatd | ||||
| else # Linux | ||||
|     service xcatd stop | ||||
| fi | ||||
|  | ||||
| echo "Stopping database $xcatdb...." | ||||
| if [ `uname` = "AIX" ] | ||||
| then | ||||
|     if [ $xcatdb = "DB2" ] | ||||
|     then | ||||
|         runcmd "su - xcatdb -c \"db2 connect reset ; db2 force applications all ; db2 terminate ; db2stop force\"" | ||||
|     elif [ $xcatdb = "mysql" ] | ||||
|     then | ||||
|         runcmd "stopsrc -g mysql" | ||||
|     fi | ||||
| else # Linux | ||||
|     if [ $xcatdb != "SQLite" ] | ||||
|     then | ||||
|         runcmd "service $xcatdb stop 2>&1 1>/dev/null" | ||||
|     fi | ||||
| fi | ||||
|  | ||||
| ############################################################################## | ||||
|  | ||||
| # Kill nicely, wait a little time for processes to clean-up.... | ||||
| for fs in $SHAREDFS $DB2DIR | ||||
| do | ||||
| 	echo "Killing processes (nicely) accessing filesystem ${fs}...." | ||||
|         if [ `uname` = "AIX" ] | ||||
|         then | ||||
| 	        runcmd "fuser -uxc -k ${fs}" | ||||
|         else # Linux | ||||
|             runcmd "fuser -u -k ${fs}" | ||||
|         fi | ||||
| done | ||||
|  | ||||
| # AIX only, Linux has the -l flag could hanldle everything | ||||
| if [ `uname` = "AIX" ] | ||||
| then | ||||
|     sleep 20  | ||||
|     #  ....then kill nastily i.e. kill -9 | ||||
|     for fs in $SHAREDFS | ||||
|     do | ||||
|     	    echo "Killing processes (kill -9) accessing filesystem ${fs}...." | ||||
| 	    fuser -uxc -K 9 ${fs} | ||||
|     done | ||||
| fi | ||||
|  | ||||
|  | ||||
| ############################################################################## | ||||
|  | ||||
| echo "Re-configuring NTP...." | ||||
| if [ `uname` = "AIX" ] | ||||
| then | ||||
|     runcmd "stopsrc -s xntpd" | ||||
|     #cp /usr/local/cfg/ntp.conf.secondary /etc/ntp.conf | ||||
|     runcmd "startsrc -s xntpd" | ||||
| else # Linux | ||||
|     runcmd "service ntpd restart" | ||||
| fi | ||||
|  | ||||
| echo "Un-exporting NFS filesystems and stop NFS...." | ||||
| if [ `uname` = "AIX" ] | ||||
| then | ||||
|     runcmd "exportfs  -ua" | ||||
|     runcmd "stopsrc -g nfs" | ||||
| else # Linux | ||||
|     runcmd "exportfs -ua" | ||||
|     runcmd "service nfs stop" | ||||
| fi | ||||
|  | ||||
| echo "Unmounting shared filesystems ...." | ||||
| if [ `uname` = "AIX" ] | ||||
| then | ||||
|     for fs in $SHAREDFS | ||||
|     do | ||||
|         runcmd "umount $fs" | ||||
|     done | ||||
| else | ||||
|     for fs in $SHAREDFS | ||||
|     do | ||||
|         runcmd "umount -l $fs" | ||||
|     done | ||||
| fi | ||||
|  | ||||
|  | ||||
|  | ||||
| if [ `uname` = "AIX" ] | ||||
| then | ||||
|     varyoffvg sharedvg | ||||
| fi | ||||
|  | ||||
| if [ $CHANGEHOSTNAME = "yes" ] | ||||
| then | ||||
|     echo "Setting hostname...." | ||||
|     if [ `uname` = "AIX" ] | ||||
|     then | ||||
|         BOOT_HOSTNAME=$(lsattr -El inet0 -a hostname | awk '{print $2}') | ||||
|     else # Linux | ||||
|         BOOT_HOSTNAME=`grep HOSTNAME /etc/sysconfig/network | cut -f 2 -d "="` | ||||
|     fi | ||||
|     hostname ${BOOT_HOSTNAME} | ||||
| fi | ||||
|  | ||||
| # Remove virtual ip addresses | ||||
|  | ||||
| # Firstly determine the correct IP addresses for each interface | ||||
| echo "Removing IP Aliases...." | ||||
| if [ `uname` = "AIX" ] | ||||
| then | ||||
|     runcmd "ifconfig $NIC delete $VIP" | ||||
| else # Linux | ||||
|     runcmd "ifconfig $NIC 0.0.0.0 0.0.0.0" | ||||
| fi | ||||
|  | ||||
| echo "" | ||||
| echo "" | ||||
| echo "This machine is set to standby management node successfully..." | ||||
|  | ||||
| exit 0 | ||||
		Reference in New Issue
	
	Block a user