IPL: Production or Disaster Recovery
At Slippery Rock University


SRU has two identical FLEX-ES machines:

Both machines have the same CPU serial number (virtual in FLEX-ES config).  All VM and VSE DASD is copied from PROD to DR every night. Since the machines are in two different buildings they have different IP numbers.  Until now it was necessary for the DR machine operator to edit the TCPIP configuration files on VM and VSE to change the host IP number.  This is no longer necessary.

There is a file on MAINT 325 called PROD_DR.IPL that contains two lines:                    
IPL at 05/23/08 04:40:44 EDT
IPL=PROD | DR


This is the abbreviated explanation of how it works:

  1. At IPL the OPERATOR is prompted for PROD | DR  and does
  2. SMSG AUTOLOG1 with response that it writes to PROD-DR IPL file
  3. AUTOLOG1 does XAUTOLOG TCPMAINT
  4. TCPMAINT reads PROD_DR file to determine if it is PROD or DR
  5. PROFILE TCPIP A has statements with IPL=PROD or IPL=DR in the comments area.
  6. TCPMAINT copies PROFILE TCPIP A to PROFILE TCPIP B and drops statement with IPL=PROD or IPL=DR as appropriate for this IPL.
  7. AUTOLOG1 does XAUTOLOG TCPIP with correct PROFILE TCPIP
  8. VSE is logged on and IPLs CMS and run PROFILE EXEC
  9. VSE PROFILE EXEC spools job to VSE RDR with // SETPARM SYSTEM IPL=PROD | DR
  10. JOB TCPIP selects IP address based on the SETPARM IPL


Detailed explanation:

When VM/OPERATOR is logged on its PROFILE EXEC runs PROD_DR EXEC.  This EXEC compares the IPL information from the CP QUERY CPLEVEL command with the data in line 1 of the PROD_DR.IPL file and if it is identical the EXEC simply exits.  Otherwise the EXEC prompts the operator to enter PROD or DR depending on what machine has just been IPL'd. This reply is sent to VM/AUTOLOG1 via CP SMSG which is waiting for the reply via WAKEUP  VM/AUTOLOG1 updates the PROD_DR.IPL file with the current IPL information in line 1 and either IPL=PROD or IPL=DR in line 2

Write access is required for MAINT 325 to write the PROD-DR.IPL file.  We do not want to give this privilege to VM/OPERATOR so we give it to VM/AUTOLOG1.

VM/AUTOLOG1 is autologed at IPL time and the first thing it does is invoke its own PROD_DR EXEC which immediately exits if the CP Q CPLEVEL date matches that in the PROD_DR.IPL file.  Otherwise it writes a new PROD_DR.IPL file.

The first machine to be autologed by VM/AUTOLOG1 is VM/TCPMAINT.  The PROFILE.TCPIP file is maintained on VM/TCPMAINT's A disk.  Imbedded in this file are statements for both the PROD and the DR machines such as the host IP address.  These lines have a comment with IPL=PROD or IPL=DR as appropriate.  VM/TCPMAINT has its own PROD_DR.EXEC that runs a PIPE that copies the PROFILE.TCPIP.A to PROFILE.TCPIP.B and drops the lines that are not specific to to the machine just IPL'd.  The B disk is the normal residence for this file and it is here that VM/TCPIP will access it.  VM/TCPMAINT then logs off.

VM/AUTOLOG1 has a CP SLEEP 10 SEC after it autologs VM/TCPMAINT which is plenty of time for VM/TCPMAINT to complete the PROD_DR.EXEC before it autologs VM/TCPIP.

 
VSE TCPIP Selection

When VM/VSE is logged on it is linked to VM/VSEMAINT and a CMS PROFILE.EXEC runs its own PROD-DR.EXEC that examines the PROD-DR.IPL file and creates a VSE job that is spooled to the VSE RDR.  Example:

// JOB PROD-DR
* This job submitted at IPL by VSE PROFILE EXEC.
LOG
// SETPARM SYSTEM IPL=PROD | DR
NOLOG
/&


 The JOB that initiates the VSE TCPIP stack has:

// JOB TCPIP                            START UP TCP/IP
// IF IPL = 'DR' THEN
// GOTO ZBACK         Bypass zFrame initialization
*  Running on zFrame Production
// EXEC PROC=TCPIPLIB
// SETPFIX LIMIT=128K
// EXEC BSTTINET,SIZE=BSTTINET,OS390
.
.  Statements for PROD machine here
.
/*
// GOTO EOJ

/. ZBACK              Running on zBack machine
*  Running on zBack Disaster Recovery
// EXEC PROC=TCPIPLIB
// SETPFIX LIMIT=128K
// EXEC BSTTINET,SIZE=BSTTINET,OS390
.
.  Statements for DR machine here
.
/*
/. EOJ
/&