IPL: Production or Disaster Recovery
At Slippery Rock University
SRU has two identical FLEX-ES machines:
- A production machine in Maltby named zFrame, referred to as PROD
- A disaster recovery machine in Spotts named zBack, referred to as
DR
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:
- At IPL the OPERATOR is prompted for PROD | DR and does
- SMSG AUTOLOG1 with response that it writes to PROD-DR IPL file
- AUTOLOG1 does XAUTOLOG TCPMAINT
- TCPMAINT reads PROD_DR file to determine if it is PROD or DR
- PROFILE TCPIP A has statements with IPL=PROD or IPL=DR in the
comments area.
- TCPMAINT copies PROFILE TCPIP A to PROFILE TCPIP B and drops
statement with IPL=PROD or IPL=DR as appropriate for this IPL.
- AUTOLOG1 does XAUTOLOG TCPIP with correct PROFILE TCPIP
- VSE is logged on and IPLs CMS and run PROFILE EXEC
- VSE PROFILE EXEC spools job to VSE RDR with // SETPARM
SYSTEM IPL=PROD | DR
- 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
/&