4060 lines
136 KiB
HTML
4060 lines
136 KiB
HTML
|
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||
|
<html>
|
||
|
<head>
|
||
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||
|
<meta name="Copyright" content="Copyright (c) 2006 by IBM Corporation">
|
||
|
<title>Cluster Resource Group Exit Program</title>
|
||
|
<!-- Begin Header Records ========================================== -->
|
||
|
<!-- All rights reserved. Licensed Materials Property of IBM -->
|
||
|
<!-- US Government Users Restricted Rights -->
|
||
|
<!-- Use, duplication or disclosure restricted by -->
|
||
|
<!-- GSA ADP Schedule Contract with IBM Corp. -->
|
||
|
<!-- Change History: -->
|
||
|
<!-- YYMMDD USERID Change description -->
|
||
|
<!-- CLUST4A SCRIPT A converted by B2H R4.1 (346) (CMS) by NLJONES at -->
|
||
|
<!-- RCHVMX on 25 Feb 1999 at 09:42:31 -->
|
||
|
<!-- End Header Records -->
|
||
|
<!-- -->
|
||
|
<!-- -->
|
||
|
<!-- -->
|
||
|
<!-- Begin Developer Note ========================================== -->
|
||
|
<!-- NOTE: If you are adding, changing, or removing ANY requirements -->
|
||
|
<!-- for this API chance are good that the GUI code need to change -->
|
||
|
<!-- also. The Cluster GUI code is built on top of this API and it -->
|
||
|
<!-- does a certain amount of explicit and implicit validation -->
|
||
|
<!-- checking of user data prior to the API call being made. Please -->
|
||
|
<!-- have the Cluster GUI developer check the -->
|
||
|
<!--/as400/v5r4m0.guix/cur/cmvc/java.pgm/ugcl.guix/com/ibm/as400/opnav/ugcl/ClGuiActionsManager.java/ClGuiActionsManager.java -->
|
||
|
<!-- part to determine if any Cluster GUI code changes are needed. -->
|
||
|
<!-- End Developer Note -->
|
||
|
<link rel="stylesheet" type="text/css" href="../rzahg/ic.css">
|
||
|
</head>
|
||
|
<body>
|
||
|
|
||
|
<!--Java sync-link -->
|
||
|
<script type="text/javascript" language="Javascript" src=1"../rzahg/synch.js">
|
||
|
</script>
|
||
|
|
||
|
<a name="Top_Of_Page"></a>
|
||
|
|
||
|
<h2>Cluster Resource Group Exit Program</h2>
|
||
|
|
||
|
<div class="box" style="width: 70%;">
|
||
|
<br>
|
||
|
Required Parameter Group:<br>
|
||
|
<!-- iddvc RMBR -->
|
||
|
<br>
|
||
|
<table width="100%">
|
||
|
<tr>
|
||
|
<td align="center" valign="top" width="10%">1</td>
|
||
|
<td align="left" valign="top" width="50%">Success indicator</td>
|
||
|
<td align="left" valign="top" width="20%">Output</td>
|
||
|
<td align="left" valign="top" width="20%">Binary(4)</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top">2</td>
|
||
|
<td align="left" valign="top">Action code</td>
|
||
|
<td align="left" valign="top">Input</td>
|
||
|
<td align="left" valign="top">Binary(4)</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top">3</td>
|
||
|
<td align="left" valign="top">Exit program data</td>
|
||
|
<td align="left" valign="top">Input</td>
|
||
|
<td align="left" valign="top">Char(256)</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top">4</td>
|
||
|
<td align="left" valign="top">Information given to user</td>
|
||
|
<td align="left" valign="top">Input</td>
|
||
|
<td align="left" valign="top">Char(*)</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top">5</td>
|
||
|
<td align="left" valign="top">Format name</td>
|
||
|
<td align="left" valign="top">Input</td>
|
||
|
<td align="left" valign="top">Char(8)</td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
|
||
|
<br>
|
||
|
Include: QSYSINC/QCSTCRG3<br>
|
||
|
<!-- iddvc RMBR -->
|
||
|
<br>
|
||
|
</div>
|
||
|
|
||
|
<p>For each cluster resource group that has an exit program specified, the exit
|
||
|
program is called when various <a href="clust1.htm">Cluster Resource Services
|
||
|
APIs</a> are used or when various cluster events occur. The exit program is
|
||
|
called on each active node in the cluster resource group's recovery domain and
|
||
|
is passed an <strong>Action Code</strong> that tells the exit program what
|
||
|
function to perform.</p>
|
||
|
|
||
|
<p>An active node in the cluster resource group's recovery domain means that
|
||
|
cluster resource services and the job for the particular cluster resource group
|
||
|
are running on the node.</p>
|
||
|
|
||
|
<p>The exit program is required for data, application <img src="delta.gif" alt="Start of change">and peer <img src="deltaend.gif" alt="End of change">cluster resource groups
|
||
|
and is responsible for providing and managing the environment necessary for the
|
||
|
resource's resilience.</p>
|
||
|
|
||
|
<p>The exit program is optional for device cluster resource groups because the
|
||
|
system manages resilient devices. An exit program may be specified for a device
|
||
|
cluster resource group if a user has additional functions to perform during
|
||
|
various APIs or cluster events.</p>
|
||
|
|
||
|
<p>The exit program is called from a separate job which is started with the
|
||
|
user profile specified on the <a href="clrgcrtcrg.htm">Create Cluster Resource
|
||
|
Group</a> (QcstCreateClusterResourceGroup) API. For most action codes, Cluster
|
||
|
Resource Services waits for the exit program to finish before continuing. A
|
||
|
time out is not used. If the exit program goes into a long wait such as waiting
|
||
|
for a response to a message sent to an operator, no other work will be started
|
||
|
for the affected cluster resource group. In the case of a long wait during
|
||
|
failover processing for a node failure, all Cluster Resource Services jobs are
|
||
|
affected and no other cluster work will be started. Care should be exercised in
|
||
|
the exit program when the possibility of a long wait exists.</p>
|
||
|
|
||
|
<p>In general if the exit program is unsuccessful or ends abnormally, the exit
|
||
|
program will be called a second time with an action code of Undo. This allows
|
||
|
any unfinished activity to be backed out and the original state of the cluster
|
||
|
resource group and the resilient resource to be restored. There are some
|
||
|
exceptions to this general statement about Undo. Some APIs continue even if the
|
||
|
exit program is not successful and do not make a second call with an Undo
|
||
|
action code. Also, an application cluster resource group exit program is not
|
||
|
called with Undo if it fails while processing the Start action code for a
|
||
|
Switchover or Failover.</p>
|
||
|
|
||
|
<p>More information on action codes, functions an exit program should perform,
|
||
|
and what causes an exit program to be called is presented after the exit
|
||
|
program parameters are described.</p>
|
||
|
|
||
|
<p>The exit program is restricted to the Cluster Resource Services APIs or
|
||
|
commands it can use. Only the following are allowed:</p>
|
||
|
|
||
|
<ul>
|
||
|
<li><a href="cldistinfo.htm">Distribute Information</a>
|
||
|
(QcstDistributeInformation) API</li>
|
||
|
|
||
|
<li><a href="clcntlstci.htm">List Cluster Information</a> (QcstListClusterInfo)
|
||
|
API</li>
|
||
|
|
||
|
<li><a href="clrglstcrgi.htm">List Cluster Resource Group Information</a>
|
||
|
(QcstListClusterResourceGroupIn) API</li>
|
||
|
|
||
|
<li><a href="clrglstcrg.htm">List Cluster Resource Groups</a>
|
||
|
(QcstListClusterResourceGroups) API</li>
|
||
|
|
||
|
<li><a href="clcntlstddi.htm">List Device Domain Information</a>
|
||
|
(QcstListDeviceDomainInfo) API</li>
|
||
|
|
||
|
<li><a href="clcntrtvci.htm">Retrieve Cluster Information</a>
|
||
|
(QcstRetrieveClusterInfo) API</li>
|
||
|
|
||
|
<li><a href="clcntrtcrs.htm">Retrieve Cluster Resource Services Information</a>
|
||
|
(QcstRetrieveCRSInfo) API</li>
|
||
|
|
||
|
<li><a href="../cl/dspcluinf.htm">DSPCLUINF</a> Command</li>
|
||
|
|
||
|
<li><a href="../cl/dspcrginf.htm">DSPCRGINF</a> Command</li>
|
||
|
|
||
|
</ul>
|
||
|
|
||
|
<p>Also, the exit program must follow these guidelines to run properly in the
|
||
|
job Cluster Resource Services starts for it and to handle error conditions
|
||
|
correctly.</p>
|
||
|
|
||
|
<ul>
|
||
|
<li>The exit program cannot be in an <strong>independent</strong> auxiliary
|
||
|
storage pool.</li>
|
||
|
|
||
|
<li>It must run in a named activation group or the caller's activation group
|
||
|
(*CALLER), when the cluster resource group exit program is an ILE program.</li>
|
||
|
|
||
|
<li>It must have a cancel handler to deal with situations where the job is
|
||
|
cancelled. In particular, an application cluster resource group exit program
|
||
|
will have its job cancelled as part of the <a href="clrginitso.htm">Initiate
|
||
|
Switchover</a> (QcstInitiateSwitchOver) API.</li>
|
||
|
|
||
|
<li>It should have an exception handler to deal with unexpected exceptions and
|
||
|
perform as much cleanup as possible at that point while it can still
|
||
|
interrogate program state information.</li>
|
||
|
|
||
|
<li>It may use threads but the job description in the user profile for the job
|
||
|
must specify that threads are allowed.</li>
|
||
|
|
||
|
<li> <img src="delta.gif" alt="Start of change">The user profile that the cluster
|
||
|
resource group exit program runs under must not have an IASP associated with the user
|
||
|
profile job description. <img src="deltaend.gif" alt="End of change"></li>
|
||
|
</ul>
|
||
|
|
||
|
<p><strong>Note:</strong> See <a href="clust1a3.htm">Cluster Resource Services
|
||
|
Job Structure</a> for additional information about jobs used to call exit
|
||
|
programs.</p>
|
||
|
|
||
|
<p><img src="delta.gif" alt="Start of change"><a href="../rzaig/rzaigplanmiddlewarebps.htm">
|
||
|
High Availability Business Partners (HABPs)</a>
|
||
|
<img src="deltaend.gif" alt="End of change">
|
||
|
provide software products that
|
||
|
replicate data to other nodes in a cluster by using data cluster resource
|
||
|
groups. Application cluster resource groups may have dependencies on these data
|
||
|
cluster resource groups. An application cluster
|
||
|
resource group exit program can be used to coordinate activities with data cluster
|
||
|
resource group exit programs that are provided by an HABP.</p>
|
||
|
|
||
|
<p>Sample source code that can be used as the basis for writing an exit program
|
||
|
is shipped in the QUSRTOOL library. See the TCSTAPPEXT and TCSTDTAARA members
|
||
|
in the QATTSYSC file for an example written in ILE C.</p>
|
||
|
|
||
|
|
||
|
<br>
|
||
|
<!-- Please NOTE: DO NOT DELETE THIS SECTION if this API has no authorities and locks. -->
|
||
|
<!-- Instead, use the commented out coding below to indicate NONE. -->
|
||
|
<h3>Authorities and Locks</h3>
|
||
|
|
||
|
<!-- Use this if there are no authorities and locks. -->
|
||
|
<p>None.</p>
|
||
|
|
||
|
<br>
|
||
|
<h3>Required Parameter Group</h3>
|
||
|
|
||
|
<dl>
|
||
|
<dt><strong>Success indicator</strong></dt>
|
||
|
|
||
|
<dd>OUTPUT; BINARY(4)
|
||
|
|
||
|
<p>Indicates to Cluster Resource Services the results of the cluster resource
|
||
|
group exit program. The exit program must set this parameter before it ends. If
|
||
|
the job running the exit program is cancelled before the exit program ends, the
|
||
|
exit program cancel handler should set this parameter. Possible values of this
|
||
|
parameter</p>
|
||
|
|
||
|
<table cellpadding="5">
|
||
|
<!-- cols="5 95" -->
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><em>0</em></td>
|
||
|
<td align="left" valign="top">Successful.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><em>1</em></td>
|
||
|
<td align="left" valign="top">Unsuccessful, do not attempt restart.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><em>2</em></td>
|
||
|
<td align="left" valign="top">Unsuccessful, attempt restart (applies only to an
|
||
|
application cluster resource group).</td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
|
||
|
<p>Some APIs ignore this field. In other words, regardless of what value is set
|
||
|
by the exit program these functions continue to completion and do not backout
|
||
|
partial results or call the exit program a second time with an Undo action
|
||
|
code. Likewise, the exit program should make every attempt to complete
|
||
|
successfully for these APIs. This field is ignored by the following:</p>
|
||
|
|
||
|
<ul>
|
||
|
<li><a href="clcntchgcne.htm">Change Cluster Node Entry</a>
|
||
|
(QcstChangeClusterNodeEntry) API</li>
|
||
|
|
||
|
<li><a href="../cl/chgclunode.htm">Change Cluster Node Entry</a> (CHGCLUNODE)
|
||
|
Command</li>
|
||
|
|
||
|
<li><a href="clcntdltc.htm">Delete Cluster</a> (QcstDeleteCluster) API</li>
|
||
|
|
||
|
<li><a href="../cl/dltclu.htm">Delete Cluster</a> (DLTCLU) Command</li>
|
||
|
|
||
|
<li><a href="clrgdltcrg.htm">Delete Cluster Resource Group</a>
|
||
|
(QcstDeleteClusterResourceGroup) API for the Delete action code</li>
|
||
|
|
||
|
<li><a href="clrgdltcrg.htm">Delete Cluster Resource Group From Cluster
|
||
|
command</a> for the Delete action code</li>
|
||
|
|
||
|
<li><a href="../cl/dltcrg.htm">Delete Cluster Resource Group</a> (DLTCRG)
|
||
|
command.</li>
|
||
|
|
||
|
<li><a href="clcntendcn.htm">End Cluster Node</a> (QcstEndClusterNode) API</li>
|
||
|
|
||
|
<li><a href="clcntrmvcne.htm">Remove Cluster Node Entry</a>
|
||
|
(QcstRemoveClusterNodeEntry) API</li>
|
||
|
|
||
|
<li><a href="../cl/endclunod.htm">End Cluster Node</a> (ENDCLUNOD) command</li>
|
||
|
|
||
|
<li><a href="../cl/rmvclunode.htm">Remove Cluster Node Entry</a> (RMVCLUNODE)
|
||
|
command</li>
|
||
|
|
||
|
<li>Failover Cancelled action code</li>
|
||
|
|
||
|
</ul>
|
||
|
|
||
|
<p>An informational, alert message, CPIBB10, will be sent if the exit program
|
||
|
returns anything other than Successful, has an unhandled exception, or the job
|
||
|
running the exit program is cancelled.-</p>
|
||
|
|
||
|
<p>See <a href="#HDRPGMEND">When the Exit Program Ends</a> for additional
|
||
|
information on the Success indicator.</p>
|
||
|
</dd>
|
||
|
|
||
|
<dt><strong>Action code</strong></dt>
|
||
|
|
||
|
<dd>INPUT; BINARY(4)
|
||
|
|
||
|
<p>Identifies the cluster API or event that is being processed and, therefore,
|
||
|
the action the exit program should perform. The action codes listed below apply
|
||
|
to all cluster resource group types unless otherwise specified.
|
||
|
|
||
|
See also action code dependent data field in the <a href="#HDRGGGDDE">Field Descriptions </a> below. This further defines the action code.</p>
|
||
|
|
||
|
<p>Possible action codes:</p>
|
||
|
|
||
|
<table cellpadding="5">
|
||
|
<!-- cols="15 85" -->
|
||
|
<tr>
|
||
|
<td align="left" valign="top" nowrap><em>1 - Initialize</em></td>
|
||
|
<td align="left" valign="top">A cluster resource group object is being
|
||
|
created.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top" nowrap><em>2 - Start</em></td>
|
||
|
<td align="left" valign="top">Establish resilience for a cluster resource
|
||
|
group. In addition, start the application for an application cluster resource
|
||
|
group.
|
||
|
|
||
|
<p>The exit program job for an application cluster resource group remains
|
||
|
active on the primary node. Thus when a <a href="clust3a1TOC.htm">cluster
|
||
|
resource group API</a> is called while an application is running, a second job
|
||
|
will be submitted on the primary node to run the exit program to handle the API
|
||
|
action code.</p>
|
||
|
|
||
|
<p><img src="delta.gif" alt="Start of change">For a peer cluster resource
|
||
|
group all peer nodes will be started and the exit program will be called.<img src="deltaend.gif" alt="End of change">
|
||
|
</p>
|
||
|
</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top" nowrap><em>3 - Restart</em></td>
|
||
|
<td align="left" valign="top">Restarts an application. Applies <strong>
|
||
|
only</strong> to an application cluster resource group which has been
|
||
|
configured to allow restart.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top" nowrap><em>4 - End</em></td>
|
||
|
<td align="left" valign="top">Disable resilience of a cluster resource group on
|
||
|
all nodes in the recovery domain.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top" nowrap><em>5 - Verification phase</em></td>
|
||
|
<td align="left" valign="top">Provides a chance for the cluster resource group
|
||
|
exit program to verify it really wants to perform the requested function before
|
||
|
actual doing the specified function. This is similar to a pre-exit
|
||
|
program.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top" nowrap><em>7 - Delete</em></td>
|
||
|
<td align="left" valign="top">The cluster resource group object is being
|
||
|
deleted.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top" nowrap><em>8 - Rejoin</em></td>
|
||
|
<td align="left" valign="top">An inactive node is being activated or
|
||
|
communication with a partitioned node is re-established. If cluster resource
|
||
|
services is not running on any node in the cluster, the first node which is
|
||
|
started will cause the exit program to be called with an action code of Rejoin.
|
||
|
In this case, there will be no other active nodes in the cluster.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top" nowrap><em>9 - Failover</em></td>
|
||
|
<td align="left" valign="top">A node failure has occurred.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top" nowrap><em>10 - Switchover</em></td>
|
||
|
<td align="left" valign="top">Either the <a href="clrginitso.htm">Initiate
|
||
|
Switchover (QcstInitiateSwitchOver) API</a> or the <a href=
|
||
|
"../cl/chgcrgpri.htm">Change Cluster Resource Group Primary (CHGCRGPRI)
|
||
|
command</a> is being processed. The role of primary is being assigned to the
|
||
|
node that has the current role of first backup. <img src="delta.gif" alt="Start of change">Does not apply to peer cluster resource groups.<img src="deltaend.gif" alt="End of change"></td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top" nowrap><em>11 - Add Node</em></td>
|
||
|
<td align="left" valign="top">A node is being added to the recovery
|
||
|
domain.<img src="delta.gif" alt="Start of change">If the cluster resource group is
|
||
|
active and a peer node is being added to a peer cluster resource group, the node will
|
||
|
be an active access point.<img src="deltaend.gif" alt="End of change"></td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top" nowrap><em>12 - Remove Node</em></td>
|
||
|
<td align="left" valign="top">A node is being removed from the recovery domain.
|
||
|
When an active node is being removed with either the <a href="clcntrmvcne.htm">Remove
|
||
|
Cluster Node Entry (QcstRemoveClusterNodeEntry) API</a> or the <a href=
|
||
|
"../cl/rmvclunode.htm">Remove Cluster Node Entry (RMVCLUNODE) command</a>, only the node being
|
||
|
removed sees this action code. Other nodes in the recovery domain will see the Failover
|
||
|
action code.
|
||
|
|
||
|
When an inactive node is being removed with either the <a href="clcntrmvcne.htm">Remove
|
||
|
Cluster Node Entry (QcstRemoveClusterNodeEntry) API</a> or the <a href=
|
||
|
"../cl/rmvclunode.htm">Remove Cluster Node Entry (RMVCLUNODE) command</a>, all nodes see this action code.
|
||
|
|
||
|
</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top" nowrap><em>13 - Change</em></td>
|
||
|
<td align="left" valign="top">The nodes listed in the recovery domain have
|
||
|
changed their role.<img src="delta.gif" alt="Start of change">For a peer cluster
|
||
|
resource group all the recovery domain nodes are provided even if only some of them
|
||
|
have their role changed.<img src="deltaend.gif" alt="End of change"></td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top" nowrap><em>14 - Delete Command</em></td>
|
||
|
<td align="left" valign="top">The cluster resource group is being deleted on
|
||
|
the local node only.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top" nowrap><em>15 - Undo</em></td>
|
||
|
<td align="left" valign="top">Backout the prior request. The prior request is
|
||
|
in the <strong>Prior Action Code</strong> field.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top" nowrap><em>16 - End Node</em></td>
|
||
|
<td align="left" valign="top">A cluster node is ending. Only the node being
|
||
|
ended will see this action code. Other nodes in the recovery domain will see
|
||
|
the Failover action code.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top" nowrap><em>17 - Add Device Entry</em></td>
|
||
|
<td align="left" valign="top">A device is being added to a device cluster
|
||
|
resource group. Applies <strong>only</strong> to a device cluster resource
|
||
|
group.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top" nowrap><em>18 - Remove Device Entry</em></td>
|
||
|
<td align="left" valign="top">A device is being removed from a device cluster
|
||
|
resource group. Applies <strong>only</strong> to a device cluster resource
|
||
|
group.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top" nowrap><em>19 - Change Device Entry</em></td>
|
||
|
<td align="left" valign="top">Information about a device in a device cluster
|
||
|
resource group is being changed. Applies <strong>only</strong> to a device
|
||
|
cluster resource group.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top" nowrap><em>20 - Change Node Status</em></td>
|
||
|
<td align="left" valign="top">The status of a node is being changed from
|
||
|
partitioned to failed.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top" nowrap><em>21 - Failover Cancelled</em></td>
|
||
|
<td align="left" valign="top">A node failure occurred, but the failover was
|
||
|
cancelled through the use of the failover message queue.</td>
|
||
|
</tr>
|
||
|
|
||
|
</table>
|
||
|
|
||
|
<br>
|
||
|
</dd>
|
||
|
|
||
|
<dt><strong>Exit program data</strong></dt>
|
||
|
|
||
|
<dd>INPUT; CHAR(256)
|
||
|
|
||
|
<p>Because this parameter is passed between nodes in the cluster, it can
|
||
|
contain anything <strong>except</strong> pointers. For example, it can be used
|
||
|
to provide state information. The owner of the cluster resource group knows the
|
||
|
layout of the information contained in this parameter.</p>
|
||
|
|
||
|
<p>This data comes into existence when the cluster resource group object is
|
||
|
created with the <a href="clrgcrtcrg.htm">Create Cluster Resource Group
|
||
|
(QcstCreateClusterResourceGroup) API</a> or the <a href="../cl/crtcrg.htm">
|
||
|
Create Cluster Resource Group (CRTCRG) command</a>. Change this data in the
|
||
|
following ways:</p>
|
||
|
|
||
|
<ul>
|
||
|
<li><a href="clrgchgcrg.htm">Change Cluster Resource Group API</a> or <a href=
|
||
|
"../cl/chgcrg.htm">Change Cluster Resource Group (CHGCRG) command</a></li>
|
||
|
|
||
|
<li><a href="clrgendcrg.htm">End Cluster Resource Group API</a> or <a href=
|
||
|
"../cl/endcrg.htm">End Cluster Resource Group (ENDCRG) command</a></li>
|
||
|
|
||
|
<li><a href="clrgstcrg.htm">Start Cluster Resource Group API</a> or <a href=
|
||
|
"../cl/strcrg.htm">Start Cluster Resource Group (STRCRG) command</a> </li>
|
||
|
|
||
|
<li><a href="clrginitso.htm">Initiate Switchover API</a> or <a href=
|
||
|
"../cl/chgcrgpri.htm">Change Cluster Resource Group Primary (CHGCRGPRI)
|
||
|
command</a></li>
|
||
|
</ul>
|
||
|
|
||
|
<p>See the description of each API in <a href="clust3a1TOC.htm">Cluster
|
||
|
Resource Group APIs</a>.</p>
|
||
|
</dd>
|
||
|
|
||
|
<dt><strong>Information given to user</strong></dt>
|
||
|
|
||
|
<dd>INPUT; CHAR(*)
|
||
|
|
||
|
<p>Detailed information for this exit program call. See the <a href=
|
||
|
"#HDREXTFMT">EXTP0100 Format</a> or <a href="#HDREXTFMT2">EXTP0200 Format</a> for more information.</p>
|
||
|
</dd>
|
||
|
|
||
|
<dt><strong>Format name</strong></dt>
|
||
|
|
||
|
<dd>INPUT; CHAR(8)
|
||
|
|
||
|
<p>The format of the information provided in the Information Given To User
|
||
|
parameter. If the exit program
|
||
|
is called with a second action code such as Undo, the format contains the same
|
||
|
data as was passed the original action code. The format name supported is:</p>
|
||
|
|
||
|
<table cellpadding="5">
|
||
|
<!-- cols="15 85" -->
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><em>EXTP0100</em></td>
|
||
|
<td align="left" valign="top">This format is used for actions. <img src="delta.gif" alt="Start of change">This value is allowed
|
||
|
for primary-backup model cluster resource group and peer model cluster
|
||
|
resource group.<img src="deltaend.gif" alt="End of change"></td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><em>EXTP0200</em></td>
|
||
|
<td align="left" valign="top">Same as EXTP0100, with additional information on
|
||
|
site name and data port IP addresses on each node in the recovery domain.
|
||
|
<img src="delta.gif" alt="Start of change">This value is allowed
|
||
|
for primary-backup model cluster resource group.<img src="deltaend.gif" alt="End of change">
|
||
|
</td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
</dd>
|
||
|
</dl>
|
||
|
|
||
|
<br>
|
||
|
|
||
|
|
||
|
<h3><a name="HDREXTFMT">EXTP0100 Format</a></h3>
|
||
|
|
||
|
<p>This format <img src="delta.gif" alt="Start of change">contains information
|
||
|
for the cluster event<img src="deltaend.gif" alt="End of change">.</p>
|
||
|
|
||
|
<table border width="80%">
|
||
|
<tr>
|
||
|
<th align="center" valign="bottom" colspan="2">Offset</th>
|
||
|
<th align="left" valign="bottom" rowspan="2">Type</th>
|
||
|
<th align="left" valign="bottom" rowspan="2">Field</th>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<th align="center" valign="bottom">Dec</th>
|
||
|
<th align="center" valign="bottom">Hex</th>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top" width="10%">0</td>
|
||
|
<td align="center" valign="top" width="10%">0</td>
|
||
|
<td align="left" valign="top" width="20%">BINARY(4)</td>
|
||
|
<td align="left" valign="top" width="60%">Length of information given to
|
||
|
user</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top">4</td>
|
||
|
<td align="center" valign="top">4</td>
|
||
|
<td align="left" valign="top">CHAR(10)</td>
|
||
|
<td align="left" valign="top">Cluster name</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top">14</td>
|
||
|
<td align="center" valign="top">E</td>
|
||
|
<td align="left" valign="top">CHAR(10)</td>
|
||
|
<td align="left" valign="top">Cluster resource group name</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top">24</td>
|
||
|
<td align="center" valign="top">18</td>
|
||
|
<td align="left" valign="top">BINARY(4)</td>
|
||
|
<td align="left" valign="top">Cluster resource group type</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top">28</td>
|
||
|
<td align="center" valign="top">1C</td>
|
||
|
<td align="left" valign="top">BINARY(4)</td>
|
||
|
<td align="left" valign="top">Cluster resource group status</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top">32</td>
|
||
|
<td align="center" valign="top">20</td>
|
||
|
<td align="left" valign="top">CHAR(16)</td>
|
||
|
<td align="left" valign="top">Request handle</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top">48</td>
|
||
|
<td align="center" valign="top">30</td>
|
||
|
<td align="left" valign="top">BINARY(4)</td>
|
||
|
<td align="left" valign="top">Node role type</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top">52</td>
|
||
|
<td align="center" valign="top">34</td>
|
||
|
<td align="left" valign="top">CHAR(8)</td>
|
||
|
<td align="left" valign="top">Current node id</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top">60</td>
|
||
|
<td align="center" valign="top">3C</td>
|
||
|
<td align="left" valign="top">CHAR(8)</td>
|
||
|
<td align="left" valign="top">Changing node ID</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top">68</td>
|
||
|
<td align="center" valign="top">44</td>
|
||
|
<td align="left" valign="top">BINARY(4)</td>
|
||
|
<td align="left" valign="top">Changing node role</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top">72</td>
|
||
|
<td align="center" valign="top">48</td>
|
||
|
<td align="left" valign="top">CHAR(16)</td>
|
||
|
<td align="left" valign="top">Takeover IP address</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top">88</td>
|
||
|
<td align="center" valign="top">58</td>
|
||
|
<td align="left" valign="top">CHAR(10)</td>
|
||
|
<td align="left" valign="top">Job name</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top">98</td>
|
||
|
<td align="center" valign="top">62</td>
|
||
|
<td align="left" valign="top">CHAR(2)</td>
|
||
|
<td align="left" valign="top">Reserved</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top">100</td>
|
||
|
<td align="center" valign="top">64</td>
|
||
|
<td align="left" valign="top">BINARY(4)</td>
|
||
|
<td align="left" valign="top">Prior action code</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top">104</td>
|
||
|
<td align="center" valign="top">68</td>
|
||
|
<td align="left" valign="top">BINARY(8)</td>
|
||
|
<td align="left" valign="top">Cluster resource group changes</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top">112</td>
|
||
|
<td align="center" valign="top">70</td>
|
||
|
<td align="left" valign="top">BINARY(4)</td>
|
||
|
<td align="left" valign="top">Offset to recovery domain array</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top">116</td>
|
||
|
<td align="center" valign="top">74</td>
|
||
|
<td align="left" valign="top">BINARY(4)</td>
|
||
|
<td align="left" valign="top">Number of nodes in the recovery domain</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top">120</td>
|
||
|
<td align="center" valign="top">78</td>
|
||
|
<td align="left" valign="top">BINARY(4)</td>
|
||
|
<td align="left" valign="top">Original cluster resource group status</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top">124</td>
|
||
|
<td align="center" valign="top">7C</td>
|
||
|
<td align="left" valign="top">BINARY(4)</td>
|
||
|
<td align="left" valign="top">Action code dependent data</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top">128</td>
|
||
|
<td align="center" valign="top">80</td>
|
||
|
<td align="left" valign="top">BINARY(4)</td>
|
||
|
<td align="left" valign="top">Offset to prior recovery domain array</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top">132</td>
|
||
|
<td align="center" valign="top">84</td>
|
||
|
<td align="left" valign="top">BINARY(4)</td>
|
||
|
<td align="left" valign="top">Number of nodes in the prior recovery domain
|
||
|
array</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top">136</td>
|
||
|
<td align="center" valign="top">88</td>
|
||
|
<td align="left" valign="top">BINARY(4)</td>
|
||
|
<td align="left" valign="top">Offset to configuration object array</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top">140</td>
|
||
|
<td align="center" valign="top">8C</td>
|
||
|
<td align="left" valign="top">BINARY(4)</td>
|
||
|
<td align="left" valign="top">Number of entries in configuration object
|
||
|
array</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top">144</td>
|
||
|
<td align="center" valign="top">90</td>
|
||
|
<td align="left" valign="top">BINARY(4)</td>
|
||
|
<td align="left" valign="top">Length of configuration object array entry</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top">148</td>
|
||
|
<td align="center" valign="top">94</td>
|
||
|
<td align="left" valign="top">BINARY(8)</td>
|
||
|
<td align="left" valign="top">Cluster resource group attributes</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top">156</td>
|
||
|
<td align="center" valign="top">9C</td>
|
||
|
<td align="left" valign="top">CHAR(10)</td>
|
||
|
<td align="left" valign="top">Distribute information user queue name</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top">166</td>
|
||
|
<td align="center" valign="top">A6</td>
|
||
|
<td align="left" valign="top">CHAR(10)</td>
|
||
|
<td align="left" valign="top">Distribute information user queue library
|
||
|
name</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top">176</td>
|
||
|
<td align="center" valign="top">B0</td>
|
||
|
<td align="left" valign="top">BINARY(4)</td>
|
||
|
<td align="left" valign="top">Failover wait time</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top">180</td>
|
||
|
<td align="center" valign="top">B4</td>
|
||
|
<td align="left" valign="top">BINARY(4)</td>
|
||
|
<td align="left" valign="top">Failover default action</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top">184</td>
|
||
|
<td align="center" valign="top">B8</td>
|
||
|
<td align="left" valign="top">CHAR(10)</td>
|
||
|
<td align="left" valign="top">Failover message queue name</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top">194</td>
|
||
|
<td align="center" valign="top">C2</td>
|
||
|
<td align="left" valign="top">CHAR(10)</td>
|
||
|
<td align="left" valign="top">Failover message queue library name</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top">204</td>
|
||
|
<td align="center" valign="top">CC</td>
|
||
|
<td align="left" valign="top">BINARY(4)</td>
|
||
|
<td align="left" valign="top">Cluster version</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top">208</td>
|
||
|
<td align="center" valign="top">D0</td>
|
||
|
<td align="left" valign="top">BINARY(4)</td>
|
||
|
<td align="left" valign="top">Cluster version modification level</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top">212</td>
|
||
|
<td align="center" valign="top">D4</td>
|
||
|
<td align="left" valign="top">CHAR(10)</td>
|
||
|
<td align="left" valign="top">Requesting user profile</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top"><img src="delta.gif" alt="Start of change">222</td>
|
||
|
<td align="center" valign="top">DE</td>
|
||
|
<td align="left" valign="top">CHAR(1)</td>
|
||
|
<td align="left" valign="top">Reserved<img src="deltaend.gif" alt="End of change"></td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top"><img src="delta.gif" alt="Start of change"><img src="delta.gif" alt="Start of change"> 222</td>
|
||
|
<td align="center" valign="top">DF</td>
|
||
|
<td align="left" valign="top">CHAR(1)</td>
|
||
|
<td align="left" valign="top">Allow active takeover IP
|
||
|
address<img src="deltaend.gif" alt="End of change"><img src="deltaend.gif" alt="End of change"></td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top"><img src="delta.gif" alt="Start of change">224</td>
|
||
|
<td align="center" valign="top">E0</td>
|
||
|
<td align="left" valign="top">CHAR(20)</td>
|
||
|
<td align="left" valign="top">Application id<img src="deltaend.gif" alt="End of change"></td>
|
||
|
</tr>
|
||
|
<tr>
|
||
|
<td align="center" valign="top"><img src="delta.gif" alt="Start of change">244</td>
|
||
|
<td align="center" valign="top">F4</td>
|
||
|
<td align="left" valign="top">BINARY(4)</td>
|
||
|
<td align="left" valign="top">Length of recovery domain array entry<img src="deltaend.gif" alt="End of change"></td>
|
||
|
</tr>
|
||
|
<tr>
|
||
|
<td align="center" valign="top"><img src="delta.gif" alt="Start of change">248</td>
|
||
|
<td align="center" valign="top">F8</td>
|
||
|
<td align="left" valign="top">BINARY(4)</td>
|
||
|
<td align="left" valign="top">Length of prior recovery domain array entry<img src="deltaend.gif" alt="End of change"></td>
|
||
|
</tr>
|
||
|
<tr>
|
||
|
<td align="center" valign="top"><img src="delta.gif" alt="Start of change">252</td>
|
||
|
<td align="center" valign="top">FC</td>
|
||
|
<td align="left" valign="top">CHAR(8)</td>
|
||
|
<td align="left" valign="top">Leader node id<img src="deltaend.gif" alt="End of change"></td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top">*</td>
|
||
|
<td align="center" valign="top">*</td>
|
||
|
<td align="left" valign="top">Array(*) of CHAR(*)</td>
|
||
|
<td align="left" valign="top">Recovery domain array</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top" rowspan="3" colspan="2">These fields repeat, in
|
||
|
the order listed, for each node in the recovery domain.</td>
|
||
|
<td align="left" valign="top">CHAR(8)</td>
|
||
|
<td align="left" valign="top">Node ID</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top">BINARY(4)</td>
|
||
|
<td align="left" valign="top">Node role</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top">BINARY(4)</td>
|
||
|
<td align="left" valign="top">Membership status</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top">*</td>
|
||
|
<td align="center" valign="top">*</td>
|
||
|
<td align="left" valign="top">Array(*) of CHAR(*)</td>
|
||
|
<td align="left" valign="top">Prior recovery domain array</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top" rowspan="3" colspan="2">These fields repeat, in
|
||
|
the order listed, for each node in the recovery domain.</td>
|
||
|
<td align="left" valign="top">CHAR(8)</td>
|
||
|
<td align="left" valign="top">Node ID</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top">BINARY(4)</td>
|
||
|
<td align="left" valign="top">Node role</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top">BINARY(4)</td>
|
||
|
<td align="left" valign="top">Membership status</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top">*</td>
|
||
|
<td align="center" valign="top">*</td>
|
||
|
<td align="left" valign="top">Array(*) of CHAR(44)</td>
|
||
|
<td align="left" valign="top">Configuration object array</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top" rowspan="7" colspan="2">These fields repeat, in
|
||
|
the order listed, for each entry in the configuration object array.</td>
|
||
|
<td align="left" valign="top">CHAR(10)</td>
|
||
|
<td align="left" valign="top">Configuration object name</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top">CHAR(2)</td>
|
||
|
<td align="left" valign="top">Reserved</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top">BINARY(4)</td>
|
||
|
<td align="left" valign="top">Configuration object type</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top">BINARY(4)</td>
|
||
|
<td align="left" valign="top">Device type</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top">BINARY(4)</td>
|
||
|
<td align="left" valign="top">Configuration object online</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top">BINARY(4)</td>
|
||
|
<td align="left" valign="top">Device subtype</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top">CHAR(16)</td>
|
||
|
<td align="left" valign="top">Server takeover IP address</td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
|
||
|
<p></p>
|
||
|
|
||
|
<h3><a name="HDREXTFMT2">EXTP0200 Format</a></h3>
|
||
|
|
||
|
<p>This format <img src="delta.gif" alt="Start of change">contains information for
|
||
|
the cluster event with additional information on
|
||
|
site name and data port IP addresses on each node in the recovery domain. <img src="deltaend.gif" alt="End of change"></p>
|
||
|
|
||
|
<table border width="80%">
|
||
|
<tr>
|
||
|
<th align="center" valign="bottom" colspan="2">Offset</th>
|
||
|
<th align="left" valign="bottom" rowspan="2">Type</th>
|
||
|
<th align="left" valign="bottom" rowspan="2">Field</th>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<th align="center" valign="bottom">Dec</th>
|
||
|
<th align="center" valign="bottom">Hex</th>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top" width="10%">0</td>
|
||
|
<td align="center" valign="top" width="10%">0</td>
|
||
|
<td align="left" valign="top" width="20%">BINARY(4)</td>
|
||
|
<td align="left" valign="top" width="60%">Length of information given to
|
||
|
user</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top">4</td>
|
||
|
<td align="center" valign="top">4</td>
|
||
|
<td align="left" valign="top">CHAR(10)</td>
|
||
|
<td align="left" valign="top">Cluster name</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top">14</td>
|
||
|
<td align="center" valign="top">E</td>
|
||
|
<td align="left" valign="top">CHAR(10)</td>
|
||
|
<td align="left" valign="top">Cluster resource group name</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top">24</td>
|
||
|
<td align="center" valign="top">18</td>
|
||
|
<td align="left" valign="top">BINARY(4)</td>
|
||
|
<td align="left" valign="top">Cluster resource group type</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top">28</td>
|
||
|
<td align="center" valign="top">1C</td>
|
||
|
<td align="left" valign="top">BINARY(4)</td>
|
||
|
<td align="left" valign="top">Cluster resource group status</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top">32</td>
|
||
|
<td align="center" valign="top">20</td>
|
||
|
<td align="left" valign="top">CHAR(16)</td>
|
||
|
<td align="left" valign="top">Request handle</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top">48</td>
|
||
|
<td align="center" valign="top">30</td>
|
||
|
<td align="left" valign="top">BINARY(4)</td>
|
||
|
<td align="left" valign="top">Node role type</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top">52</td>
|
||
|
<td align="center" valign="top">34</td>
|
||
|
<td align="left" valign="top">CHAR(8)</td>
|
||
|
<td align="left" valign="top">Current node id</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top">60</td>
|
||
|
<td align="center" valign="top">3C</td>
|
||
|
<td align="left" valign="top">CHAR(8)</td>
|
||
|
<td align="left" valign="top">Changing node ID</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top">68</td>
|
||
|
<td align="center" valign="top">44</td>
|
||
|
<td align="left" valign="top">BINARY(4)</td>
|
||
|
<td align="left" valign="top">Changing node role</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top">72</td>
|
||
|
<td align="center" valign="top">48</td>
|
||
|
<td align="left" valign="top">CHAR(16)</td>
|
||
|
<td align="left" valign="top">Takeover IP address</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top">88</td>
|
||
|
<td align="center" valign="top">58</td>
|
||
|
<td align="left" valign="top">CHAR(10)</td>
|
||
|
<td align="left" valign="top">Job name</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top">98</td>
|
||
|
<td align="center" valign="top">62</td>
|
||
|
<td align="left" valign="top">CHAR(2)</td>
|
||
|
<td align="left" valign="top">Reserved</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top">100</td>
|
||
|
<td align="center" valign="top">64</td>
|
||
|
<td align="left" valign="top">BINARY(4)</td>
|
||
|
<td align="left" valign="top">Prior action code</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top">104</td>
|
||
|
<td align="center" valign="top">68</td>
|
||
|
<td align="left" valign="top">BINARY(8)</td>
|
||
|
<td align="left" valign="top">Cluster resource group changes</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top">112</td>
|
||
|
<td align="center" valign="top">70</td>
|
||
|
<td align="left" valign="top">BINARY(4)</td>
|
||
|
<td align="left" valign="top">Offset to recovery domain array</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top">116</td>
|
||
|
<td align="center" valign="top">74</td>
|
||
|
<td align="left" valign="top">BINARY(4)</td>
|
||
|
<td align="left" valign="top">Number of nodes in the recovery domain</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top">120</td>
|
||
|
<td align="center" valign="top">78</td>
|
||
|
<td align="left" valign="top">BINARY(4)</td>
|
||
|
<td align="left" valign="top">Length of recovery domain array entry</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top">124</td>
|
||
|
<td align="center" valign="top">7C</td>
|
||
|
<td align="left" valign="top">BINARY(4)</td>
|
||
|
<td align="left" valign="top">Original cluster resource group status</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top">128</td>
|
||
|
<td align="center" valign="top">80</td>
|
||
|
<td align="left" valign="top">BINARY(4)</td>
|
||
|
<td align="left" valign="top">Action code dependent data</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top">132</td>
|
||
|
<td align="center" valign="top">84</td>
|
||
|
<td align="left" valign="top">BINARY(4)</td>
|
||
|
<td align="left" valign="top">Offset to prior recovery domain array</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top">136</td>
|
||
|
<td align="center" valign="top">88</td>
|
||
|
<td align="left" valign="top">BINARY(4)</td>
|
||
|
<td align="left" valign="top">Number of nodes in the prior recovery domain
|
||
|
array</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top">140</td>
|
||
|
<td align="center" valign="top">8C</td>
|
||
|
<td align="left" valign="top">BINARY(4)</td>
|
||
|
<td align="left" valign="top">Length of prior recovery domain array entry</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top">144</td>
|
||
|
<td align="center" valign="top">90</td>
|
||
|
<td align="left" valign="top">BINARY(4)</td>
|
||
|
<td align="left" valign="top">Offset to configuration object array</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top">148</td>
|
||
|
<td align="center" valign="top">94</td>
|
||
|
<td align="left" valign="top">BINARY(4)</td>
|
||
|
<td align="left" valign="top">Number of entries in configuration object
|
||
|
array</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top">152</td>
|
||
|
<td align="center" valign="top">98</td>
|
||
|
<td align="left" valign="top">BINARY(4)</td>
|
||
|
<td align="left" valign="top">Length of configuration object array entry</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top">156</td>
|
||
|
<td align="center" valign="top">9C</td>
|
||
|
<td align="left" valign="top">BINARY(8)</td>
|
||
|
<td align="left" valign="top">Cluster resource group attributes</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top">164</td>
|
||
|
<td align="center" valign="top">A4</td>
|
||
|
<td align="left" valign="top">CHAR(10)</td>
|
||
|
<td align="left" valign="top">Distribute information user queue name</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top">174</td>
|
||
|
<td align="center" valign="top">AE</td>
|
||
|
<td align="left" valign="top">CHAR(10)</td>
|
||
|
<td align="left" valign="top">Distribute information user queue library
|
||
|
name</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top">184</td>
|
||
|
<td align="center" valign="top">B8</td>
|
||
|
<td align="left" valign="top">BINARY(4)</td>
|
||
|
<td align="left" valign="top">Failover wait time</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top">188</td>
|
||
|
<td align="center" valign="top">BC</td>
|
||
|
<td align="left" valign="top">BINARY(4)</td>
|
||
|
<td align="left" valign="top">Failover default action</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top">192</td>
|
||
|
<td align="center" valign="top">C0</td>
|
||
|
<td align="left" valign="top">CHAR(10)</td>
|
||
|
<td align="left" valign="top">Failover message queue name</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top">202</td>
|
||
|
<td align="center" valign="top">CA</td>
|
||
|
<td align="left" valign="top">CHAR(10)</td>
|
||
|
<td align="left" valign="top">Failover message queue library name</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top">212</td>
|
||
|
<td align="center" valign="top">D4</td>
|
||
|
<td align="left" valign="top">BINARY(4)</td>
|
||
|
<td align="left" valign="top">Cluster version</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top">216</td>
|
||
|
<td align="center" valign="top">D8</td>
|
||
|
<td align="left" valign="top">BINARY(4)</td>
|
||
|
<td align="left" valign="top">Cluster version modification level</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top">220</td>
|
||
|
<td align="center" valign="top">DC</td>
|
||
|
<td align="left" valign="top">CHAR(10)</td>
|
||
|
<td align="left" valign="top">Requesting user profile</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top">230</td>
|
||
|
<td align="center" valign="top">E6</td>
|
||
|
<td align="left" valign="top">CHAR</td>
|
||
|
<td align="left" valign="top">Reserved</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top">231</td>
|
||
|
<td align="center" valign="top">E7</td>
|
||
|
<td align="left" valign="top">CHAR</td>
|
||
|
<td align="left" valign="top">Reserved</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top">*</td>
|
||
|
<td align="center" valign="top">*</td>
|
||
|
<td align="left" valign="top">Array(*) of CHAR(*)</td>
|
||
|
<td align="left" valign="top">Recovery domain array</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top" rowspan="8" colspan="2">These fields repeat, in
|
||
|
the order listed, for each node in the recovery domain.</td>
|
||
|
<td align="left" valign="top">BINARY(4)</td>
|
||
|
<td align="left" valign="top">Length of entry in the recovery domain</td>
|
||
|
</tr>
|
||
|
<td align="left" valign="top">CHAR(8)</td>
|
||
|
<td align="left" valign="top">Node ID</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top">BINARY(4)</td>
|
||
|
<td align="left" valign="top">Node role</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top">BINARY(4)</td>
|
||
|
<td align="left" valign="top">Membership status</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top">CHAR(8)</td>
|
||
|
<td align="left" valign="top">Site name</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top">BINARY(4)</td>
|
||
|
<td align="left" valign="top">Offset to data port IP address array</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top">BINARY(4)</td>
|
||
|
<td align="left" valign="top">Number of data port IP addresses</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top">Array(*) of CHAR(16)</td>
|
||
|
<td align="left" valign="top">Data port IP address</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top">*</td>
|
||
|
<td align="center" valign="top">*</td>
|
||
|
<td align="left" valign="top">Array(*) of CHAR(*)</td>
|
||
|
<td align="left" valign="top">Prior recovery domain array</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top" rowspan="8" colspan="2">These fields repeat, in
|
||
|
the order listed, for each node in the recovery domain.</td>
|
||
|
<td align="left" valign="top">BINARY(4)</td>
|
||
|
<td align="left" valign="top">Length of entry in the recovery domain</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top">CHAR(8)</td>
|
||
|
<td align="left" valign="top">Node ID</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top">BINARY(4)</td>
|
||
|
<td align="left" valign="top">Node role</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top">BINARY(4)</td>
|
||
|
<td align="left" valign="top">Membership status</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top">CHAR(8)</td>
|
||
|
<td align="left" valign="top">Site name</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top">BINARY(4)</td>
|
||
|
<td align="left" valign="top">Offset to data port IP address array</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top">BINARY(4)</td>
|
||
|
<td align="left" valign="top">Number of data port IP addresses</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top">Array(*) of CHAR(16)</td>
|
||
|
<td align="left" valign="top">Data port IP address</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top">*</td>
|
||
|
<td align="center" valign="top">*</td>
|
||
|
<td align="left" valign="top">Array(*) of CHAR(44)</td>
|
||
|
<td align="left" valign="top">Configuration object array</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top" rowspan="7" colspan="2">These fields repeat, in
|
||
|
the order listed, for each entry in the configuration object array.</td>
|
||
|
<td align="left" valign="top">CHAR(10)</td>
|
||
|
<td align="left" valign="top">Configuration object name</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top">CHAR(2)</td>
|
||
|
<td align="left" valign="top">Reserved</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top">BINARY(4)</td>
|
||
|
<td align="left" valign="top">Configuration object type</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top">BINARY(4)</td>
|
||
|
<td align="left" valign="top">Device type</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top">BINARY(4)</td>
|
||
|
<td align="left" valign="top">Configuration object online</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top">BINARY(4)</td>
|
||
|
<td align="left" valign="top">Device subtype</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top">CHAR(16)</td>
|
||
|
<td align="left" valign="top">Server takeover IP address</td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
|
||
|
<br>
|
||
|
<br>
|
||
|
|
||
|
|
||
|
<h3><a name="HDRGGGDDE">Field Descriptions</a></h3>
|
||
|
|
||
|
<p><strong>Action code dependent data.</strong> For some action codes,
|
||
|
additional information is provided to describe the action code. This field is
|
||
|
used during:</p>
|
||
|
|
||
|
<ul compact>
|
||
|
|
||
|
<li>Delete action code</li>
|
||
|
|
||
|
<li>End action code</li>
|
||
|
|
||
|
<li>Failover action code</li>
|
||
|
|
||
|
<li>Failover Cancelled action code</li>
|
||
|
|
||
|
<li>Rejoin action code</li>
|
||
|
|
||
|
<li>Remove Node action code</li>
|
||
|
|
||
|
<li>Start action code</li>
|
||
|
|
||
|
<li>Undo action code</li>
|
||
|
|
||
|
<li>Verification Phase action code</li>
|
||
|
</ul>
|
||
|
|
||
|
<p>The possible values are:</p>
|
||
|
|
||
|
<table cellpadding="5">
|
||
|
<!-- cols="15 85" -->
|
||
|
<tr>
|
||
|
<td align="left" valign="top" nowrap><em>0 - No information</em></td>
|
||
|
<td align="left" valign="top">No additional information.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top" nowrap><em>1 - Merge</em></td>
|
||
|
<td align="left" valign="top">Provided with the Rejoin action code to indicate
|
||
|
cluster partitions are merging.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top" nowrap><em>2 - Join</em></td>
|
||
|
<td align="left" valign="top">Provided with the Rejoin action code to indicate
|
||
|
a node which was Inactive is joining the cluster.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top" nowrap><em>3 - Partition failure</em></td>
|
||
|
<td align="left" valign="top">Provided with the Failover or End action code to
|
||
|
indicate the cluster has become partitioned. When provided with Failover, this
|
||
|
is a primary partition. When provided with End, this is a secondary
|
||
|
partition.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top" nowrap><em>4 - Node failure</em></td>
|
||
|
<td align="left" valign="top">Provided with the Failover or Failover Cancelled
|
||
|
action code to indicate Cluster Resource Services has failed for the entire
|
||
|
node. This may mean the node failed such as with a power failure or that all of
|
||
|
Cluster Resource Services has failed such as when the QSYSWRK subsystem is
|
||
|
cancelled but the node is still running.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top" nowrap><em>5 - Member failure</em></td>
|
||
|
<td align="left" valign="top">Provided with the Failover, Failover Cancelled,
|
||
|
and End Node action codes to indicate a failure affecting only this cluster
|
||
|
resource group has been detected. While other cluster resource groups may be
|
||
|
affected also, Cluster Resource Services is unable to determine that. An
|
||
|
example of a member failure is when a single cluster resource group job is
|
||
|
cancelled.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top" nowrap><em>6 - End node</em></td>
|
||
|
<td align="left" valign="top">Provided with the Failover or Failover Cancelled
|
||
|
action code to indicate an active node in the cluster has been ended by either
|
||
|
the <a href="clcntendcn.htm">End Cluster Node (QcstEndClusterNode) API</a> or
|
||
|
the <a href="../cl/endclunod.htm">End Cluster Node (ENDCLUNOD)
|
||
|
command</a>.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top" nowrap><em>7 - Remove node</em></td>
|
||
|
<td align="left" valign="top">Provided with the Failover action code to
|
||
|
indicate an active node in the cluster has been removed by either the <a href=
|
||
|
"clcntrmvcne.htm">Remove Cluster Node Entry (QcstRemoveClusterNodeEntry)
|
||
|
API</a> or the <a href="../cl/rmvclunode.htm">Remove Cluster Node Entry
|
||
|
(RMVCLUNODE) command</a>.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top" nowrap><em>8 - Application failure</em></td>
|
||
|
<td align="left" valign="top">Provided with the Failover or Failover Cancelled
|
||
|
action code to indicate the application failed on the primary node and could
|
||
|
not be restarted there. The failure may have been due to an exception in the
|
||
|
application program, an Unsuccessful attempt restart success indicator but the
|
||
|
restart count has been reached, or an Unsuccessful do not attempt restart
|
||
|
success indicator.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top" nowrap><em>9 - Resource end</em></td>
|
||
|
<td align="left" valign="top">Provided with the End action code to indicate a
|
||
|
resource has ended. This occurs when an application ends normally for an active
|
||
|
application cluster resource group or when an active device cluster resource
|
||
|
group has a hardware failure of an auxiliary storage pool that prevents
|
||
|
failover. Normal ending of an application occurs when the success indicator is
|
||
|
set to Successful and the job has not been cancelled or had an unhandled
|
||
|
exception.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top" nowrap><em>10 - Delete cluster</em></td>
|
||
|
<td align="left" valign="top">Provided with the Delete action code to indicate
|
||
|
the cluster is being deleted with either the <a href="clcntdltc.htm">Delete
|
||
|
Cluster (QcstDeleteCluster) API</a> or the <a href="../cl/dltclu.htm">Delete
|
||
|
Cluster (DLTCLU) command</a>.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top" nowrap><em>11 - Remove recovery domain
|
||
|
node</em></td>
|
||
|
<td align="left" valign="top">Provided with the Remove Node action code to
|
||
|
indicate the node is being removed with either the <a href="clrgrmvnrd.htm">
|
||
|
Remove Node From Recovery Domain (QcstRemoveNodeFromRcvyDomain) API</a> or the
|
||
|
<a href="../cl/rmvcrgnode.htm">Remove Cluster Resource Group Node Entry
|
||
|
(RMVCRGNODE) command.</a></td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top" nowrap><em>12 - Delete cluster resource
|
||
|
group</em></td>
|
||
|
<td align="left" valign="top">Provided with the Verification phase action code
|
||
|
to indicate the cluster resource group is being deleted with the Delete Cluster
|
||
|
Resource Group API or commands. The Delete Cluster Resource Group API and
|
||
|
Delete Cluster Resource Group from Cluster command can now be rejected if any
|
||
|
recovery domain node fails the verification phase(5) action code and will not
|
||
|
be called with an Undo action code.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top" nowrap><em> 13 - Failover</em></td>
|
||
|
<td align="left" valign="top">Provided with the Verification phase action
|
||
|
code. This indicates the cluster resource group is being failed
|
||
|
over to a backup node.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top" nowrap><em> 14 - Switchover</em></td>
|
||
|
<td align="left" valign="top">Provided with the Verification phase
|
||
|
action code. This indicates the cluster resource group is being failed
|
||
|
over to a backup node. </td>
|
||
|
</tr>
|
||
|
<tr>
|
||
|
<td align="left" valign="top" nowrap><em> 15 - Remove passive node</em></td>
|
||
|
<td align="left" valign="top">Provided with the Remove Node and the Delete
|
||
|
action code. This indicates a node that is not active is being removed from the cluster
|
||
|
and it needs to be removed from the recovery domain.
|
||
|
The delete action code is used if the node being removed is the only node in the recovery
|
||
|
domain or there are no other nodes in the recovery domain available to assume primary role
|
||
|
(i.e. only replicates left), the cluster resource group is being deleted from the cluster.
|
||
|
</td>
|
||
|
</tr>
|
||
|
|
||
|
</table>
|
||
|
|
||
|
<p><img src="delta.gif" alt="Start of change"><strong>Allow active takeover
|
||
|
IP address.</strong>
|
||
|
Allows a takeover IP address to already be active when it
|
||
|
is assigned to an application cluster resource group. This field is only
|
||
|
valid when configure takeover IP address field is 0x01. Possible values
|
||
|
are:</p>
|
||
|
|
||
|
<table cellpadding="5">
|
||
|
<!-- cols="15 85" -->
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><em>0</em></td>
|
||
|
<td align="left" valign="top">The takeover IP address must not already
|
||
|
be active when starting the cluster resource group. </td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><em>1</em></td>
|
||
|
<td align="left" valign="top">The takeover IP address is allowed to be
|
||
|
active prior to starting the cluster resource group but only on the
|
||
|
primary node.</td>
|
||
|
</tr>
|
||
|
</table><img src="deltaend.gif" alt="End of change"></p>
|
||
|
|
||
|
<p><img src="delta.gif" alt="Start of change"><strong>Application id.</strong> This
|
||
|
is an application identifier for the Peer CRG type. It identifies the application
|
||
|
supplying the peer cluster. Recommend format is 'vendor-id.name' where vendor-id is an
|
||
|
identifier for the vendor creating the cluster resource group (i.e.QIBM.ExamplePeer). This
|
||
|
indicates it is supplied by IBM for the ExamplePeer application.
|
||
|
It is not recommended to use QIBM for vendor id name unless
|
||
|
the cluster resource group is supplied by IBM.
|
||
|
This field only applies
|
||
|
to peer cluster resource groups.
|
||
|
<img src="deltaend.gif" alt="End of change"></p>
|
||
|
|
||
|
<p><strong>Changing node ID.</strong> The node in the recovery domain being
|
||
|
assigned a new role or status. This field is hexadecimal zeroes if it doesn't
|
||
|
apply.</p>
|
||
|
|
||
|
<p>A special value of *LIST is specified for this parameter when more than one
|
||
|
node is changed. The special value is left-justified. When *LIST is specified,
|
||
|
entries in the recovery domain array and the prior recovery domain array can be
|
||
|
compared to determine which nodes have had changes to the node role or
|
||
|
membership status.</p>
|
||
|
|
||
|
<p>This field is used during:</p>
|
||
|
|
||
|
<ul>
|
||
|
<li>Add Node action code</li>
|
||
|
|
||
|
<li>Change Node Status action code</li>
|
||
|
|
||
|
<li>Change action code</li>
|
||
|
|
||
|
<li>End Node action code</li>
|
||
|
|
||
|
<li>Failover Cancelled action code</li>
|
||
|
|
||
|
<li>Switchover action code</li>
|
||
|
|
||
|
<li>Remove Node action code</li>
|
||
|
|
||
|
<li>Failover or Failover Cancelled action code</li>
|
||
|
|
||
|
<li>Rejoin action code</li>
|
||
|
</ul>
|
||
|
|
||
|
<p><strong>Changing node role.</strong> The role the node is being assigned.
|
||
|
This field is used by the same situations that the Changing node ID field is
|
||
|
used. The values are:</p>
|
||
|
|
||
|
<table cellpadding="5">
|
||
|
<!-- cols="10 90" -->
|
||
|
<tr>
|
||
|
<td align="left" valign="top">0</td>
|
||
|
<td align="left" valign="top">Primary node. Only one node can have this
|
||
|
value.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top" nowrap>>=1</td>
|
||
|
<td align="left" valign="top">Backup node. The backup order is designated by
|
||
|
increasing value. The values need not be consecutive. No two backup nodes can
|
||
|
have the same value. At the completion of the API, Cluster Resource Services
|
||
|
will sequence the backups using consecutive numbers starting with 1.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top">-1</td>
|
||
|
<td align="left" valign="top">Replicate node. All replicates have this
|
||
|
value.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top" nowrap>-2</td>
|
||
|
<td align="left" valign="top">Changing node role not used by the action code
|
||
|
being processed.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top" nowrap>-3</td>
|
||
|
<td align="left" valign="top">*LIST. When *LIST is specified, entries the
|
||
|
recovery domain array and the prior recovery domain array can be compared to
|
||
|
determine which nodes have had changes to the node role or membership
|
||
|
status.</td>
|
||
|
</tr>
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><img src="delta.gif" alt="Start of change"><br>-4</td>
|
||
|
<td align="left" valign="top">Peer node. All peer nodes have this
|
||
|
value.<img src="deltaend.gif" alt="End of change"></td>
|
||
|
</tr>
|
||
|
|
||
|
</table>
|
||
|
|
||
|
<p><strong>Cluster name.</strong> The name of the cluster containing the
|
||
|
cluster resource group.</p>
|
||
|
|
||
|
<p><strong>Cluster resource group attributes.</strong> A bit mask that
|
||
|
identifies various cluster resource group attributes. The 64 bits in this field
|
||
|
are numbered 0 thru 63 starting with the rightmost bit. If a bit is set to '1',
|
||
|
it indicates the cluster resource group has that attribute. The meaning of each
|
||
|
of the bits are:</p>
|
||
|
|
||
|
<p>This field applies only to application cluster resource groups.</p>
|
||
|
|
||
|
<table cellpadding="5">
|
||
|
<!-- cols="10 90" -->
|
||
|
<tr>
|
||
|
<td align="left" valign="top">0</td>
|
||
|
<td align="left" valign="top">The takeover IP address is configured by the
|
||
|
user</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top" nowrap>1-63</td>
|
||
|
<td align="left" valign="top">Reserved. These will be set to '0'.</td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
|
||
|
<p><strong>Cluster resource group changes.</strong> A bit mask that identifies
|
||
|
the fields in the cluster resource group that are being changed by the Change
|
||
|
Cluster Resource Group API. Set to hexadecimal zeroes for all other exit
|
||
|
program calls. The 64 bits in this field are numbered 0 thru 63 starting with
|
||
|
the rightmost bit. If a bit is set to '1', it indicates that the action
|
||
|
represented by the bit is occurring. Even though multiple bits may be set to
|
||
|
indicate several things are being changed, the exit program is called only when
|
||
|
the recovery domain is changed. For more information, see the <a href=
|
||
|
"clrgchgcrg.htm">Change Cluster Resource Group (QcstChangeClusterResourceGroup)
|
||
|
API</a> or <a href="../cl/chgcrg.htm">Change Cluster Resource Group (CHGCRG)
|
||
|
command</a>. This field is used by the Change and Undo action codes. The
|
||
|
meaning of each of the bits is:</p>
|
||
|
|
||
|
<table cellpadding="5">
|
||
|
<!-- cols="10 90" -->
|
||
|
<tr>
|
||
|
<td align="left" valign="top">0</td>
|
||
|
<td align="left" valign="top">Recovery domain is changing</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top">1</td>
|
||
|
<td align="left" valign="top">Takeover IP address is changing</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top">2-63</td>
|
||
|
<td align="left" valign="top">Reserved. These will be set to '0'.</td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
|
||
|
<p><strong>Cluster resource group name.</strong> The cluster resource group
|
||
|
that is being processed by Cluster Resource Services.</p>
|
||
|
|
||
|
<p><strong>Cluster resource group status.</strong> Status of the cluster
|
||
|
resource group at the time the exit program is called. Possible values
|
||
|
include:</p>
|
||
|
|
||
|
<table cellpadding="5">
|
||
|
<!-- cols="15 85" -->
|
||
|
<tr>
|
||
|
<td align="left" valign="top">10 - Active</td>
|
||
|
<td align="left" valign="top">For Rejoin action code.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top">20 - Inactive</td>
|
||
|
<td align="left" valign="top">For action codes of Rejoin or Delete
|
||
|
Command.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top">30 - Indoubt</td>
|
||
|
<td align="left" valign="top">For Rejoin action code.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top">40 - Restored</td>
|
||
|
<td align="left" valign="top">For Rejoin action code.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top">500 and greater - Pending</td>
|
||
|
<td align="left" valign="top">Pending values set by various APIs.</td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
|
||
|
<p>Additional information for cluster resource group status can be found in <a
|
||
|
href="clust3a1TOC.htm">Cluster Resource Group APIs</a>.</p>
|
||
|
|
||
|
<p><strong>Cluster resource group type.</strong> The type of cluster resource
|
||
|
group:</p>
|
||
|
|
||
|
<table cellpadding="5">
|
||
|
<!-- cols="10 90" -->
|
||
|
<tr>
|
||
|
<td align="left" valign="top">1</td>
|
||
|
<td align="left" valign="top">Data resilience</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top">2</td>
|
||
|
<td align="left" valign="top">Application resilience</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top">3</td>
|
||
|
<td align="left" valign="top">Device resilience</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><img src="delta.gif" alt="Start of change">4</td>
|
||
|
<td align="left" valign="top">Peer resilience<img src="deltaend.gif" alt="End of change"></td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
|
||
|
<p><strong>Cluster version.</strong> The exit program is being called to
|
||
|
process the action code at this cluster version. This value determines the
|
||
|
cluster's ability to use new functions supported by the cluster. It is set when
|
||
|
the cluster is created and can be changed by the <a href="clcntchgcv.htm">
|
||
|
Adjust Cluster Version (QcstAdjustClusterVersion) API</a> or <a href=
|
||
|
"../cl/chgcluver.htm">Change Cluster Version (CHGCLUVER) command</a>. Note:
|
||
|
When the Adjust Cluster Version API is executed, there is a small window of
|
||
|
time where the cluster and cluster resource group job may be operating at
|
||
|
different cluster versions.</p>
|
||
|
|
||
|
<p><strong>Cluster version modification level.</strong> The exit program is
|
||
|
being called to process the action code at this modification level The
|
||
|
modification level further identifies the version at which the nodes in the
|
||
|
cluster can communicate. It is updated when code changes that impact the
|
||
|
version are applied to the system. Note: When the Adjust Cluster Version API is
|
||
|
executed, there is a small window of time where the cluster and cluster
|
||
|
resource group job may be operating at different cluster version modification
|
||
|
levels.</p>
|
||
|
|
||
|
<p><strong>Configuration object array.</strong> This array identifies the
|
||
|
resilient devices that can be switched from one node to another. This array is
|
||
|
present only for a device cluster resource group.</p>
|
||
|
|
||
|
<p><strong>Configuration object name.</strong> The name of the auxiliary
|
||
|
storage pool device description object which can be switched between the nodes
|
||
|
in the recovery domain. An auxiliary storage pool device description can be
|
||
|
specified in only one cluster resource group.</p>
|
||
|
|
||
|
<p><strong>Configuration object online.</strong> Vary the configuration object
|
||
|
on or leave the configuration object varied off when a device is switched from
|
||
|
one node to another or when it is failed over to a backup node. Possible values
|
||
|
are:</p>
|
||
|
|
||
|
<table cellpadding="5">
|
||
|
<!-- cols="5 95" -->
|
||
|
<tr>
|
||
|
<td align="left" valign="top">0</td>
|
||
|
<td align="left" valign="top">Do not vary the configuration object on and do
|
||
|
not start the server takeover IP address.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top">1</td>
|
||
|
<td align="left" valign="top">Vary the configuration object on and start the
|
||
|
server takeover IP address.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top">2</td>
|
||
|
<td align="left" valign="top">Perform the same action for a seondary auxiliary
|
||
|
storage pool as is specified in the primary.</td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
|
||
|
<p><strong>Configuration object type.</strong> This specifies the type of
|
||
|
configuration object specified with configuration object name. Possible values
|
||
|
are:</p>
|
||
|
|
||
|
<table cellpadding="5">
|
||
|
<!-- cols="5 95" -->
|
||
|
<tr>
|
||
|
<td align="left" valign="top">1</td>
|
||
|
<td align="left" valign="top">Device description</td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
|
||
|
<p><strong>Current node ID.</strong> Identifies the node running the exit
|
||
|
program.</p>
|
||
|
|
||
|
<p><strong>Data port IP
|
||
|
address.</strong> The IP address associated with the recovery domain node. This
|
||
|
is a dotted decimal format field and is a null-terminated string. </p>
|
||
|
|
||
|
<p><strong>Device subtype.</strong> A device's subtype. This information is
|
||
|
only as current as the last time the cluster resource group object could be
|
||
|
updated. If configuration changes have been made on the node which owns the
|
||
|
hardware and those changes have not yet been distributed to all nodes in the
|
||
|
cluster, this information may be inaccurate. The data cannot be distributed if
|
||
|
the configuration was changed on a node which does not have cluster resource
|
||
|
services running. Possible values are:</p>
|
||
|
|
||
|
<table cellpadding="5">
|
||
|
<!-- cols="5 95" -->
|
||
|
<tr>
|
||
|
<td align="left" valign="top">-1</td>
|
||
|
<td align="left" valign="top">The subtype cannot be determined because hardware
|
||
|
configuration is not complete.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top">0</td>
|
||
|
<td align="left" valign="top">This device type does not have a subtype.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top">1</td>
|
||
|
<td align="left" valign="top">UDFS independent auxiliary storage pool.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top">2</td>
|
||
|
<td align="left" valign="top">Secondary independent auxiliary storage
|
||
|
pool.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top">3</td>
|
||
|
<td align="left" valign="top">Primary independent auxiliary storage pool.</td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
|
||
|
<p><strong>Device type.</strong> This specifies the type of device. Possible
|
||
|
values are:</p>
|
||
|
|
||
|
<table cellpadding="5">
|
||
|
<!-- cols="5 95" -->
|
||
|
<tr>
|
||
|
<td align="left" valign="top">1</td>
|
||
|
<td align="left" valign="top">Auxiliary storage pool</td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
|
||
|
<p><strong>Distribute information user queue library name.</strong> The name of
|
||
|
the library that contains the user queue to receive the distributed
|
||
|
information. This field will be set to hexadecimal zeros if no distribute
|
||
|
information user queue name was specified when the cluster resource group was
|
||
|
created.</p>
|
||
|
|
||
|
<p><strong>Distribute information user queue name.</strong> The name of the
|
||
|
user queue to receive distributed information from the Distribute Information
|
||
|
API. This field will be set to hexadecimal zeros if no distribute information
|
||
|
user queue name was specified when the cluster resource group was created.</p>
|
||
|
|
||
|
<p><strong>Failover default action.</strong> Should a response to the failover
|
||
|
message queue not be received in the failover wait time limit, then this field
|
||
|
tells clustering what it should do pertaining to the failover request. This
|
||
|
field applies to all <img src="delta.gif" alt="Start of change">primary-backup
|
||
|
model<img src="deltaend.gif" alt="End of change"> cluster resource groups.
|
||
|
</p>
|
||
|
|
||
|
<table cellpadding="5">
|
||
|
<!-- cols="5 95" -->
|
||
|
<tr>
|
||
|
<td align="left" valign="top">0</td>
|
||
|
<td align="left" valign="top">Proceed with failover.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top">1</td>
|
||
|
<td align="left" valign="top">Do NOT attempt failover.</td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
|
||
|
<p><strong>Failover message queue library name.</strong> The name of the
|
||
|
library that contains the user queue to receive failover messages. This field
|
||
|
will be set to hexadecimal zeros if no failover response user queue name was
|
||
|
specified. This field applies to all
|
||
|
<img src="delta.gif" alt="Start of change">primary-backup
|
||
|
model<img src="deltaend.gif" alt="End of change"> cluster resource groups.</p>
|
||
|
|
||
|
<p><strong>Failover message queue name.</strong> The name of the message queue
|
||
|
to receive messages dealing with failover. This field will be set to
|
||
|
hexadecimal zeros if no failover response user queue name was specified. This
|
||
|
field applies to all <img src="delta.gif" alt="Start of change">primary-backup
|
||
|
model<img src="deltaend.gif" alt="End of change"> cluster resource groups.</p>
|
||
|
|
||
|
<p><strong>Failover wait time.</strong> Number of minutes to wait for a reply
|
||
|
to the failover message that was enqueued on the failover message queue. This
|
||
|
field applies to all <img src="delta.gif" alt="Start of change">primary-backup
|
||
|
model<img src="deltaend.gif" alt="End of change"> cluster resource groups.</p>
|
||
|
|
||
|
<table cellpadding="5">
|
||
|
<!-- cols="5 95" -->
|
||
|
<tr>
|
||
|
<td align="left" valign="top">-1</td>
|
||
|
<td align="left" valign="top">Wait forever until a response is given to the
|
||
|
failover inquiry message.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top">0</td>
|
||
|
<td align="left" valign="top">Failover proceeds without user intervention. Acts
|
||
|
the same as V5R1M0 and prior.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top">>=1</td>
|
||
|
<td align="left" valign="top">Number of minutes to wait for a response to the
|
||
|
failover inquiry message. If no response is received in the specified number of
|
||
|
minutes, the failover default action field will be looked at to decide how to
|
||
|
proceed.</td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
|
||
|
<p><strong>Job name.</strong> Name of the job associated with an application
|
||
|
cluster resource group exit program. This field is used only by application
|
||
|
cluster resource groups.</p>
|
||
|
|
||
|
<p><img src="delta.gif" alt="Start of change"><strong>Leader node id.</strong> This field
|
||
|
identifies the name of a recovery domain node that is actively participating in the current
|
||
|
protocol for the given cluster resource group. A value of hexadecimal zero means the
|
||
|
exit program cannot use this field. This field only applies to a peer cluster resource group.
|
||
|
<p>The leader node id is available for these action codes:</p>
|
||
|
<ul>
|
||
|
<li>Start</li>
|
||
|
<li>End</li>
|
||
|
<li>Remove Node (only if removing a node from the recovery domain)</li>
|
||
|
<li>Change</li>
|
||
|
<li>Delete (only if deleting the cluster resource group)</li>
|
||
|
</ul>
|
||
|
<img src="deltaend.gif" alt="End of change"></p>
|
||
|
|
||
|
<p><strong>Length of configuration object array entry.</strong> This specifies
|
||
|
the length of an entry in the configuration object array. This field applies
|
||
|
only to device cluster resource groups.</p>
|
||
|
|
||
|
<p><strong>Length of entry in the recovery domain.</strong> The length of an entry in the recovery domain array. This field is used if each entry may have a different length.</p>
|
||
|
|
||
|
<p><strong>Length of prior
|
||
|
recovery domain array entry.</strong> The length of an entry in the prior
|
||
|
recovery domain array. <img src="delta.gif" alt="Start of change">For
|
||
|
EXTP0100 format this length should be used to navigate to the next prior recovery
|
||
|
domain array entry.<img src="deltaend.gif" alt="End of change"></p>
|
||
|
|
||
|
<p><strong>Length of recovery domain array entry.</strong> The length of an
|
||
|
entry in the recovery domain array. <img src="delta.gif" alt="Start of change">For
|
||
|
EXTP0100 format this length should be used to navigate to the next recovery
|
||
|
domain array entry.<img src="deltaend.gif" alt="End of change"></p>
|
||
|
|
||
|
<p><strong>Length of information given to user.</strong> The length of the data
|
||
|
passed in the format.</p>
|
||
|
|
||
|
<p><strong>Membership status.</strong> The cluster resource group membership
|
||
|
status for the current role of a node:</p>
|
||
|
|
||
|
<table cellpadding="5">
|
||
|
<!-- cols="5 95" -->
|
||
|
<tr>
|
||
|
<td align="left" valign="top">0</td>
|
||
|
<td align="left" valign="top">Active. Cluster Resource Services for this
|
||
|
cluster resource group is active on the node.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top">1</td>
|
||
|
<td align="left" valign="top">Inactive. Cluster Resource Services for this
|
||
|
cluster resource group is not active on the node. The node may have failed, the
|
||
|
node may have been ended, the QSYSWRK subsystem on that node which runs the
|
||
|
Cluster Resource Services jobs may have been ended, or the cluster resource
|
||
|
services job on that node may not be running.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top">2</td>
|
||
|
<td align="left" valign="top">Partition. The node has become partitioned and
|
||
|
Cluster Resource Services cannot determine whether the node is active or
|
||
|
inactive.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top">3</td>
|
||
|
<td align="left" valign="top">Ineligible. Cluster Resource Services for this
|
||
|
cluster resource group is active on the node but not eligible to become the
|
||
|
cluster resource group primary node.</td>
|
||
|
</tr>
|
||
|
|
||
|
</table>
|
||
|
|
||
|
<p><strong>Node ID.</strong> A unique string of characters that identifies a
|
||
|
node in the recovery domain.</p>
|
||
|
|
||
|
<p><strong>Node role.</strong> The role a node is to be assigned at the
|
||
|
successful completion of the action code being processed.
|
||
|
<img src="delta.gif" alt="Start of change">For primary-backup model
|
||
|
cluster resource groups node can have one
|
||
|
of three roles: primary, backup, or replicate. For peer model cluster
|
||
|
resource groups a node can have one
|
||
|
of two roles: peer or replicate. Any number of nodes can be designated
|
||
|
as the peer or replicate.<img src="deltaend.gif" alt="End of change"></p>
|
||
|
|
||
|
<table cellpadding="5">
|
||
|
<!-- cols="5 95" -->
|
||
|
<tr>
|
||
|
<td align="left" valign="top">0</td>
|
||
|
<td align="left" valign="top">Primary node. Only one node can have this
|
||
|
value. <img src="delta.gif" alt="Start of change">The primary node
|
||
|
can become the active access point for the cluster
|
||
|
resource.<img src="deltaend.gif" alt="End of change"></td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top">>=1</td>
|
||
|
<td align="left" valign="top">Backup node. The backup order is designated by
|
||
|
increasing value. The values need not be consecutive. No two backup nodes can
|
||
|
have the same value. At the completion of the API, Cluster Resource Services
|
||
|
will sequence the backups using consecutive numbers starting with 1.
|
||
|
<img src="delta.gif" alt="Start of change">Backup
|
||
|
nodes are available to be become active access points for the cluster resource
|
||
|
after the primary node.<img src="deltaend.gif" alt="End of change"></td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top">-1</td>
|
||
|
<td align="left" valign="top">Replicate node. All replicates have this
|
||
|
value. <img src="delta.gif" alt="Start of change">Replicate nodes are not
|
||
|
ordered and cannot become an access point
|
||
|
unless the role is changed to a value appropriate for the cluster
|
||
|
resource group type.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top">-4</td>
|
||
|
<td align="left" valign="top">Peer node. All peer nodes have this
|
||
|
value. Peer nodes are not ordered and
|
||
|
can all become active access points at the same time when the cluster resource
|
||
|
group is started.<img src="deltaend.gif" alt="End of change"></td>
|
||
|
</tr>
|
||
|
|
||
|
</table>
|
||
|
|
||
|
<p><strong>Node role type.</strong> Indicates which of the two node roles is
|
||
|
being processed:</p>
|
||
|
|
||
|
<table cellpadding="5">
|
||
|
<!-- cols="5 95" -->
|
||
|
<tr>
|
||
|
<td align="left" valign="top">1</td>
|
||
|
<td align="left" valign="top">Current</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top">2</td>
|
||
|
<td align="left" valign="top">Preferred</td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
|
||
|
<p><strong>Number of entries in configuration object array.</strong> The number
|
||
|
of resilient device entries in the Configuration Object Entry array. This field
|
||
|
has a value of 0 for a data or application cluster resource group. This field
|
||
|
applies only to device cluster resource groups.</p>
|
||
|
|
||
|
<p><strong>Number of data port
|
||
|
IP addresses.</strong> The number of data port IP addresses associated with the
|
||
|
recovery domain node. This field has a value of 0 for a data or application
|
||
|
cluster resource group. This field applies only to device cluster resource
|
||
|
groups. </p>
|
||
|
|
||
|
<p><strong>Number of nodes in the prior recovery domain.</strong> The number of
|
||
|
nodes in the prior recovery domain. This is the number of elements there are in
|
||
|
the Prior Recovery Domain Array. This will be 0 if the Prior Recovery Domain
|
||
|
Array is not included. This field is used during:</p>
|
||
|
|
||
|
<ul compact>
|
||
|
<li>Add Node action code</li>
|
||
|
|
||
|
<li>Change action code</li>
|
||
|
|
||
|
<li>Change Node Status action code</li>
|
||
|
|
||
|
<li>Failover action code</li>
|
||
|
|
||
|
<li>Failover Cancelled action code</li>
|
||
|
|
||
|
<li>Rejoin action code</li>
|
||
|
|
||
|
<li>Remove Node action code</li>
|
||
|
|
||
|
<li>Restart action code</li>
|
||
|
|
||
|
<li>Start action code</li>
|
||
|
|
||
|
<li>Switchover action code</li>
|
||
|
|
||
|
<li>Undo action code</li>
|
||
|
</ul>
|
||
|
|
||
|
<p><strong>Number of nodes in the recovery domain array.</strong> The number of
|
||
|
nodes in the recovery domain. This is the number of elements in the recovery
|
||
|
domain array.</p>
|
||
|
|
||
|
<p><strong>Offset to configuration object array.</strong> The byte offset from
|
||
|
the beginning of the format to the list of resilient devices. This field has a
|
||
|
value of 0 for a
|
||
|
<img src="delta.gif" alt="Start of change"> non-device
|
||
|
<img src="deltaend.gif" alt="End of change">
|
||
|
cluster resource group. This field applies
|
||
|
only to device cluster resource groups.</p>
|
||
|
|
||
|
<p><strong>Offset to data port
|
||
|
IP address array.</strong> The byte offset from the beginning of the format to
|
||
|
the list of data port IP addresses for a recovery domain node. This field has a
|
||
|
value of 0 for a
|
||
|
<img src="delta.gif" alt="Start of change"> non-device
|
||
|
<img src="deltaend.gif" alt="End of change">
|
||
|
cluster resource group. This field applies
|
||
|
only to device cluster resource groups.</p>
|
||
|
|
||
|
<p><strong>Offset to prior recovery domain array.</strong> The byte offset from
|
||
|
the beginning of the format to the array of nodes in the prior recovery domain.
|
||
|
This will be 0 if the prior recovery domain array is not included. This field
|
||
|
is used during:</p>
|
||
|
|
||
|
<ul compact>
|
||
|
<li>Add Node action code</li>
|
||
|
|
||
|
<li>Change action code</li>
|
||
|
|
||
|
<li>Change Node Status action code</li>
|
||
|
|
||
|
<li>Failover action code</li>
|
||
|
|
||
|
<li>Failover Cancelled action code</li>
|
||
|
|
||
|
<li>Rejoin action code</li>
|
||
|
|
||
|
<li>Remove Node action code</li>
|
||
|
|
||
|
<li>Restart action code</li>
|
||
|
|
||
|
<li>Start action code</li>
|
||
|
|
||
|
<li>Switchover action code</li>
|
||
|
|
||
|
<li>Undo action code</li>
|
||
|
</ul>
|
||
|
|
||
|
<p><strong>Offset to recovery domain array.</strong> The byte offset from the
|
||
|
beginning of the format to the array of nodes in the recovery domain.</p>
|
||
|
|
||
|
<p><strong>Original cluster resource group status.</strong> The original status
|
||
|
of the cluster resource group before it was changed to some pending status
|
||
|
while an API is running. For example when the exit program is called for the <a
|
||
|
href="clrgstcrg.htm">Start Cluster Resource Group
|
||
|
(QcstStartClusterResourceGroup) API</a>, the Cluster resource group status
|
||
|
field will contain 550 (Start CRG Pending) while this field will contain 20
|
||
|
(Inactive) or 30 (Indoubt). Possible values include:</p>
|
||
|
|
||
|
<table cellpadding="5">
|
||
|
<!-- cols="10 90" -->
|
||
|
<tr>
|
||
|
<td align="left" valign="top">10</td>
|
||
|
<td align="left" valign="top">Active</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top">20</td>
|
||
|
<td align="left" valign="top">Inactive</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top">30</td>
|
||
|
<td align="left" valign="top">Indoubt</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top">40</td>
|
||
|
<td align="left" valign="top">Restored</td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
|
||
|
<p>Additional information for cluster resource group status can be found in <a
|
||
|
href="clust3a1TOC.htm">Cluster Resource Group APIs</a>.</p>
|
||
|
|
||
|
<p><strong>Preferred node role.</strong> The preferred role a node is
|
||
|
assigned. <img src="delta.gif" alt="Start of change">See <strong>Node role
|
||
|
</strong> for a more detailed description of the node role. <img src="deltaend.gif" alt="End of change"></p>
|
||
|
|
||
|
<table cellpadding="5">
|
||
|
<!-- cols="10 90" -->
|
||
|
<tr>
|
||
|
<td align="left" valign="top">0</td>
|
||
|
<td align="left" valign="top">Primary node. Only one node can have this
|
||
|
value.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top">>=1</td>
|
||
|
<td align="left" valign="top">Backup node. The backup order is designated by
|
||
|
increasing value. The values need not be consecutive. No two backup nodes can
|
||
|
have the same value. At the completion of the API, Cluster Resource Services
|
||
|
will sequence the backups using consecutive numbers starting with 1.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top">-1</td>
|
||
|
<td align="left" valign="top">Replicate node. All replicates have this
|
||
|
value.<img src="delta.gif" alt="Start of change"></td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top">-4</td>
|
||
|
<td align="left" valign="top">Peer node. All peers have this
|
||
|
value. Only valid in a peer cluster resource group.<img src="deltaend.gif" alt="End of change"></td>
|
||
|
</tr>
|
||
|
|
||
|
|
||
|
</table>
|
||
|
|
||
|
<p><strong>Prior action code.</strong> When a cluster resource group exit
|
||
|
program is called with an action code of Undo (15), the action code for the
|
||
|
unsuccessful operation is placed in this field. Otherwise, this will be hex
|
||
|
zeroes.</p>
|
||
|
|
||
|
<p><strong>Prior recovery domain array.</strong> The prior recovery domain
|
||
|
array contains the view of the recovery domain before changes were made as a
|
||
|
result of the API being used or a cluster event occurring.</p>
|
||
|
|
||
|
<p>For example if a switchover is done, the prior recovery domain array will
|
||
|
have the view with the old primary and backup order. The recovery domain array
|
||
|
will have the view with the new primary and backup order.</p>
|
||
|
|
||
|
<p>If an event such as a node failure occurs, the prior recovery domain array
|
||
|
will have the old membership status for the failing node such as Active while
|
||
|
the recovery domain array will have the new status such as Inactive.</p>
|
||
|
|
||
|
<p>In most cases, the prior recovery domain is a view of the current recovery
|
||
|
domain. If the <a href="clrgchgcrg.htm">Change Cluster Resource Group
|
||
|
(QcstChangeClusterResourceGroup) API</a> is being used to change the preferred
|
||
|
recovery domain, the prior recovery domain will have a view of the preferred
|
||
|
recovery domain.</p>
|
||
|
|
||
|
<p>The prior recovery domain array is available for these action codes:</p>
|
||
|
|
||
|
<ul>
|
||
|
<li>Add Node</li>
|
||
|
|
||
|
<li>Change</li>
|
||
|
|
||
|
<li>Change Cluster Node Status</li>
|
||
|
|
||
|
<li>End Node</li>
|
||
|
|
||
|
<li>Failover</li>
|
||
|
|
||
|
<li>Failover Cancelled</li>
|
||
|
|
||
|
<li>Rejoin</li>
|
||
|
|
||
|
<li>Remove Node</li>
|
||
|
|
||
|
<li>Start (Only if inactive backup nodes were reordered in the recovery domain.
|
||
|
See <a href="clrgstcrg.htm">Start Cluster Resource Group</a> for more
|
||
|
information.)</li>
|
||
|
|
||
|
<li>Switchover</li>
|
||
|
</ul>
|
||
|
|
||
|
<p><strong>Recovery domain array.</strong> The nodes that are the recovery
|
||
|
domain for the cluster resource group. This view of the recovery domain will
|
||
|
contain any changes made to the node's membership status or the node's role by
|
||
|
the API or cluster event which caused the exit program to be called.</p>
|
||
|
|
||
|
<p><strong>Request handle.</strong> Uniquely identifies the API request. It is
|
||
|
used to associate responses on the user queue specified in the Results
|
||
|
Information parameter. This field will have a null value when the exit program
|
||
|
is called with an action code of Failover (9).</p>
|
||
|
|
||
|
<p><strong>Requesting user profile.</strong> This is the user profile that
|
||
|
initiated the API request.</p>
|
||
|
|
||
|
<p><strong>Reserved.</strong> This field is reserved and is set to hexadecimal
|
||
|
zeroes.</p>
|
||
|
|
||
|
<p><strong>Server takeover IP address.</strong> This is a takeover IP address
|
||
|
for servers associated with the relational database. This is a dotted decimal
|
||
|
field and is a null-terminated string.<img src="delta.gif" alt="Start of change">
|
||
|
This field only applies to device cluster resource groups.<img src="deltaend.gif" alt="End of change"></p>
|
||
|
|
||
|
<p><strong>Site name.</strong>
|
||
|
The name of the site associated with the recovery domain node. <img src="delta.gif" alt="Start of change">
|
||
|
This field only applies to device cluster resource groups.<img src="deltaend.gif" alt="End of change"> </p>
|
||
|
|
||
|
<p><strong>Takeover IP address.</strong> This is the floating IP address that
|
||
|
is associated with an application. This is a dotted decimal field and is a
|
||
|
null-terminated string. This field is used only by application cluster resource
|
||
|
groups.</p>
|
||
|
|
||
|
<br>
|
||
|
|
||
|
|
||
|
<h3><a name="HDRIPADDR">Application Takeover IP Address Management</a></h3>
|
||
|
|
||
|
<p>The takeover IP address is the IP address used to control how clients access
|
||
|
the application as the point of access for the application moves from one node
|
||
|
to another during Switchover or failover. The takeover IP address is started
|
||
|
only on one node at a time. That node is the primary node in the cluster
|
||
|
resource group's recovery domain. The takeover IP address can be configured by
|
||
|
Cluster Resource Services or it can be configured by the user. This attribute
|
||
|
is specified on the Create Cluster Resource Group API and is passed to the exit
|
||
|
program in the cluster resource group attributes field.</p>
|
||
|
|
||
|
<p>The following table shows which cluster APIs and events configure and manage
|
||
|
the takeover IP address. This occurs only for application cluster resource
|
||
|
groups. Additional information on the takeover IP address can be found in <a
|
||
|
href="clust3a1TOC.htm">Cluster Resource Group APIs</a><br>
|
||
|
</p>
|
||
|
|
||
|
<p><strong><a name="TBLXREF">Table 1. Takeover IP Address
|
||
|
Management</a></strong></p>
|
||
|
|
||
|
<table border="1" width="100%" cellpadding="5">
|
||
|
<!-- cols="15 50 35" -->
|
||
|
<tr>
|
||
|
<th align="left" valign="top">API or cluster event</th>
|
||
|
<th align="left" valign="top">Cluster Resource Services does
|
||
|
Configuration</th>
|
||
|
<th align="left" valign="top">User does Configuration</th>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><strong>Add Node to Recovery Domain
|
||
|
API<br>
|
||
|
<br>
|
||
|
Add Cluster Resource Group Node Entry Command</strong></td>
|
||
|
<td align="left" valign="top">
|
||
|
<ul>
|
||
|
<li>Cluster Resource Services ensures the IP address does not exist on the node
|
||
|
being added.</li>
|
||
|
|
||
|
<li>Cluster Resource Services adds the IP address to the node being added.</li>
|
||
|
</ul>
|
||
|
</td>
|
||
|
<td align="left" valign="top">
|
||
|
<ul>
|
||
|
<li>If the cluster resource group is active and the node being added is a
|
||
|
backup node, Cluster Resource Services ensures the IP address is not active on
|
||
|
the node being added.</li>
|
||
|
</ul>
|
||
|
</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><strong>cancel job</strong>
|
||
|
|
||
|
<p>The exit program job running as a result of handling the Start action code
|
||
|
is cancelled by some operator action.</p>
|
||
|
</td>
|
||
|
<td align="left" valign="top">
|
||
|
<ul>
|
||
|
<li>Cluster Resource Services ends the IP address after the exit program's
|
||
|
cancel handler ends.</li>
|
||
|
</ul>
|
||
|
</td>
|
||
|
<td align="left" valign="top">
|
||
|
<ul>
|
||
|
<li>Cluster Resource Services ends the IP address after the exit program's
|
||
|
cancel handler ends.</li>
|
||
|
</ul>
|
||
|
</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><strong>Change Cluster Node Entry API<br>
|
||
|
<br>
|
||
|
Change Cluster Node Entry Command</strong></td>
|
||
|
<td align="left" valign="top">
|
||
|
<ul>
|
||
|
<li>Cluster Resource Services does not do anything with the IP address.</li>
|
||
|
</ul>
|
||
|
</td>
|
||
|
<td align="left" valign="top">
|
||
|
<ul>
|
||
|
<li>Cluster Resource Services does not do anything with the IP address.</li>
|
||
|
</ul>
|
||
|
</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><strong>Change Cluster Recovery API<br>
|
||
|
<br>
|
||
|
Change Cluster Recovery Command</strong></td>
|
||
|
<td align="left" valign="top">
|
||
|
<ul>
|
||
|
<li>Cluster Resource Services does not do anything with the IP address.</li>
|
||
|
</ul>
|
||
|
</td>
|
||
|
<td align="left" valign="top">
|
||
|
<ul>
|
||
|
<li>Cluster Resource Services does not do anything with the IP address.</li>
|
||
|
</ul>
|
||
|
</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><strong>Change Cluster Resource Group API<br>
|
||
|
<br>
|
||
|
Change Cluster Resource Group Command</strong></td>
|
||
|
<td align="left" valign="top">
|
||
|
<ul>
|
||
|
<li>When the takeover IP address is being changed, Cluster Resource Services
|
||
|
removes the old IP address on all nodes in a cluster resource group's recovery
|
||
|
domain and adds the new IP address.</li>
|
||
|
|
||
|
<li>If the cluster resource group is active and the role of a replicate node is
|
||
|
being changed to a backup node, Cluster Resource Services ensures the takeover
|
||
|
IP address exists and is not active.</li>
|
||
|
</ul>
|
||
|
</td>
|
||
|
<td align="left" valign="top">
|
||
|
<ul>
|
||
|
<li>If the cluster resource group is active and the role of a replicate node is
|
||
|
being changed to a backup node, Cluster Resource Services ensures the takeover
|
||
|
IP address exists and is not active.</li>
|
||
|
</ul>
|
||
|
</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><strong>Create Cluster Resource Group API<br>
|
||
|
<br>
|
||
|
Create Cluster Resource Group Command</strong></td>
|
||
|
<td align="left" valign="top">
|
||
|
<ul>
|
||
|
<li>Cluster Resource Services ensures the IP address does not exist on any node
|
||
|
in the recovery domain.</li>
|
||
|
|
||
|
<li>Cluster Resource Services adds the IP address to every node in the recovery
|
||
|
domain.</li>
|
||
|
</ul>
|
||
|
</td>
|
||
|
<td align="left" valign="top">
|
||
|
<ul>
|
||
|
<li>Cluster Resource Services does not do anything with the IP address.</li>
|
||
|
</ul>
|
||
|
</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><strong>Delete Cluster API<br>
|
||
|
<br>
|
||
|
Delete Cluster Command</strong></td>
|
||
|
<td align="left" valign="top">
|
||
|
<ul>
|
||
|
<li>The IP address is ended on the primary node if the cluster resource group
|
||
|
is active.</li>
|
||
|
|
||
|
<li>Cluster Resource Services removes the IP address on all nodes in a cluster
|
||
|
resource group's recovery domain.</li>
|
||
|
</ul>
|
||
|
</td>
|
||
|
<td align="left" valign="top">
|
||
|
<ul>
|
||
|
<li>The IP address is ended on the primary node if the cluster resource group
|
||
|
is active.</li>
|
||
|
|
||
|
<li>Cluster Resource Services does not do anything else with the IP
|
||
|
address.</li>
|
||
|
</ul>
|
||
|
</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><strong>Delete Cluster Resource Group API<br>
|
||
|
<br>
|
||
|
Delete Cluster Resource Group Cluster Command</strong></td>
|
||
|
<td align="left" valign="top">
|
||
|
<ul>
|
||
|
<li>Cluster Resource Services removes the IP address on all nodes in a cluster
|
||
|
resource group's recovery domain.</li>
|
||
|
</ul>
|
||
|
</td>
|
||
|
<td align="left" valign="top">
|
||
|
<ul>
|
||
|
<li>Cluster Resource Services does not do anything with the IP address.</li>
|
||
|
</ul>
|
||
|
</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><strong>Delete Cluster Resource Group CL
|
||
|
command</strong></td>
|
||
|
<td align="left" valign="top">
|
||
|
<ul>
|
||
|
<li>Cluster Resource Services removes the IP address on all nodes in a cluster
|
||
|
resource group's recovery domain.</li>
|
||
|
</ul>
|
||
|
</td>
|
||
|
<td align="left" valign="top">
|
||
|
<ul>
|
||
|
<li>Cluster Resource Services does not do anything with the IP address.</li>
|
||
|
</ul>
|
||
|
</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><strong>End Cluster Node API<br>
|
||
|
<br>
|
||
|
End Cluster Node Command</strong></td>
|
||
|
<td align="left" valign="top">
|
||
|
<ul>
|
||
|
<li>If the cluster resource group is active and the node being ended is the
|
||
|
primary node, Cluster Resource Services ends the IP address on the primary node
|
||
|
after calling the exit program with the End Node action code. See the failover
|
||
|
event for how other nodes in the recovery domain are handled.</li>
|
||
|
</ul>
|
||
|
</td>
|
||
|
<td align="left" valign="top">
|
||
|
<ul>
|
||
|
<li>If the cluster resource group is active and the node being ended is the
|
||
|
primary node, Cluster Resource Services ends the IP address on the primary node
|
||
|
after calling the exit program with the End Node action code. See the failover
|
||
|
event for how other nodes in the recovery domain are handled.</li>
|
||
|
</ul>
|
||
|
</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><strong>End Cluster Resource Group API<br>
|
||
|
<br>
|
||
|
End Cluster Resource Group Command<br>
|
||
|
</strong></td>
|
||
|
<td align="left" valign="top">
|
||
|
<ul>
|
||
|
<li>Cluster Resource Services ends the IP address on the primary node after
|
||
|
calling the exit program with the End action code.</li>
|
||
|
</ul>
|
||
|
</td>
|
||
|
<td align="left" valign="top">
|
||
|
<ul>
|
||
|
<li>Cluster Resource Services ends the IP address on the primary node after
|
||
|
calling the exit program with the End action code.</li>
|
||
|
</ul>
|
||
|
</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><strong>Failover event</strong></td>
|
||
|
<td align="left" valign="top">
|
||
|
<ul>
|
||
|
<li>Cluster Resource Services starts the IP address on the new primary node
|
||
|
before calling the exit program with the Start action code.</li>
|
||
|
</ul>
|
||
|
</td>
|
||
|
<td align="left" valign="top">
|
||
|
<ul>
|
||
|
<li>Cluster Resource Services starts the IP address on the new primary node
|
||
|
before calling the exit program with the Start action code.</li>
|
||
|
</ul>
|
||
|
</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><strong>Initiate Switchover API<br>
|
||
|
<br>
|
||
|
Change Cluster Resource Group Primary Command<br>
|
||
|
</strong></td>
|
||
|
<td align="left" valign="top">
|
||
|
<ul>
|
||
|
<li>Cluster Resource Services ends the IP address on the current primary node
|
||
|
before calling the exit program with the Switchover action code.</li>
|
||
|
|
||
|
<li>Cluster Resource Services starts the IP address on the new primary node
|
||
|
before calling the exit program with the Start action code.</li>
|
||
|
</ul>
|
||
|
</td>
|
||
|
<td align="left" valign="top">
|
||
|
<ul>
|
||
|
<li>Cluster Resource Services ends the IP address on the current primary node
|
||
|
before calling the exit program with the Switchover action code.</li>
|
||
|
|
||
|
<li>Cluster Resource Services starts the IP address on the new primary node
|
||
|
before calling the exit program with the Start action code.</li>
|
||
|
</ul>
|
||
|
</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><strong>Node joining event</strong></td>
|
||
|
<td align="left" valign="top">
|
||
|
<ul>
|
||
|
<li>If the cluster resource group is active and the node joining is a backup
|
||
|
node, Cluster Resource Services ensures the IP address is not active on the
|
||
|
joining node.</li>
|
||
|
</ul>
|
||
|
</td>
|
||
|
<td align="left" valign="top">
|
||
|
<ul>
|
||
|
<li>If the cluster resource group is active and the node joining is a backup
|
||
|
node, Cluster Resource Services ensures the IP address is not active on the
|
||
|
joining node.</li>
|
||
|
</ul>
|
||
|
</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><strong>Partition merge event</strong></td>
|
||
|
<td align="left" valign="top">
|
||
|
<ul>
|
||
|
<li>If the cluster resource group is active and the node(s) merging with the
|
||
|
primary partition is a backup node, Cluster Resource Services ensures the IP
|
||
|
address is not active on the merging node(s).</li>
|
||
|
</ul>
|
||
|
</td>
|
||
|
<td align="left" valign="top">
|
||
|
<ul>
|
||
|
<li>If the cluster resource group is active and the node(s) merging with the
|
||
|
primary partition is a backup node, Cluster Resource Services ensures the IP
|
||
|
address is not active on the merging node(s).</li>
|
||
|
</ul>
|
||
|
</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><strong>Remove Cluster Node Entry API<br>
|
||
|
<br>
|
||
|
Remove Cluster Node Entry Command</strong></td>
|
||
|
<td align="left" valign="top">
|
||
|
<ul>
|
||
|
<li>If the cluster resource group is active and the node being removed is the
|
||
|
primary node, Cluster Resource Services ends the IP address on the primary node
|
||
|
after calling the exit program with the Remove Node action code. See the
|
||
|
failover event for how other nodes in the recovery domain are handled.</li>
|
||
|
|
||
|
<li>Cluster Resource Services removes the IP address on the node being
|
||
|
removed.</li>
|
||
|
</ul>
|
||
|
</td>
|
||
|
<td align="left" valign="top">
|
||
|
<ul>
|
||
|
<li>If the cluster resource group is active and the node being removed is the
|
||
|
primary node, Cluster Resource Services ends the IP address on the primary node
|
||
|
after calling the exit program with the Remove Node action code. See the
|
||
|
failover event for how other nodes in the recovery domain are handled.</li>
|
||
|
</ul>
|
||
|
</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><strong>Remove Node from Recovery Domain API<br>
|
||
|
<br>
|
||
|
Remove Cluster Resource Group Node Entry Command</strong></td>
|
||
|
<td align="left" valign="top">
|
||
|
<ul>
|
||
|
<li>Cluster Resource Services removes the IP address on the node being
|
||
|
removed.</li>
|
||
|
</ul>
|
||
|
</td>
|
||
|
<td align="left" valign="top">
|
||
|
<ul>
|
||
|
<li>Cluster Resource Services does not do anything with the IP address.</li>
|
||
|
</ul>
|
||
|
</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><strong>Start Cluster Resource Group API<br>
|
||
|
<br>
|
||
|
Start Cluster Resource Group Command<br>
|
||
|
</strong></td>
|
||
|
<td align="left" valign="top">
|
||
|
<ul>
|
||
|
<li>Cluster Resource Services ensures the IP address exists on the primary node
|
||
|
and all backup nodes.</li>
|
||
|
|
||
|
<li>Cluster Resource Services ensures the IP address is not active on any
|
||
|
node
|
||
|
<img src="delta.gif" alt="Start of change"> unless the allow active takeover
|
||
|
IP address field is set to 1.
|
||
|
<img src="deltaend.gif" alt="End of change">
|
||
|
</li>
|
||
|
|
||
|
<li>Cluster Resource Services starts the IP address on the primary node before
|
||
|
calling the exit program with the Start action code.</li>
|
||
|
</ul>
|
||
|
</td>
|
||
|
<td align="left" valign="top">
|
||
|
<ul>
|
||
|
<li>Cluster Resource Services ensures the IP address exists on the primary node
|
||
|
and all backup nodes.</li>
|
||
|
|
||
|
<li>Cluster Resource Services ensures the IP address is not active on any node
|
||
|
in the recovery domain.</li>
|
||
|
|
||
|
<li>Cluster Resource Services starts the IP address on the primary node before
|
||
|
calling the exit program with the Start action code.</li>
|
||
|
</ul>
|
||
|
</td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
|
||
|
<br>
|
||
|
<br>
|
||
|
|
||
|
|
||
|
<h3><a name="HDRPGMEND">When the Exit Program Ends</a></h3>
|
||
|
|
||
|
<p>When an exit program is called with an action code, control can return to
|
||
|
its caller because it set the success indicator and returned, had an unhandled
|
||
|
exception, or the exit program job was cancelled.</p>
|
||
|
|
||
|
<h3><a name="HDRPGMEND1">Setting the Success Indicator and Returning</a></h3>
|
||
|
|
||
|
<p>The returned value of the success indicator is used by the operating system
|
||
|
in different ways depending upon the action code. For most action codes,
|
||
|
anything other than <strong>Successful</strong> will result in the exit program
|
||
|
being called again with an action code of Undo to backout the actions
|
||
|
previously performed. There are two exceptions to this.</p>
|
||
|
|
||
|
<p>One, if an application exit program was called with an action code of Start,
|
||
|
setting the success indicator to <strong>Unsuccessful, attempt restart</strong>
|
||
|
will result in the exit program being called with Restart. Being called with an
|
||
|
action code of Restart will occur as long as the restart count has not been
|
||
|
reached. When the restart count is reached, failover occurs and the application
|
||
|
is started on the first active backup node.</p>
|
||
|
|
||
|
<p>The exit program is not called with Restart if either an <strong>
|
||
|
Unsuccessful, do not attempt restart</strong> indicator is returned, the exit
|
||
|
program sets the success indicator to <strong>Successful</strong> and returns,
|
||
|
or the cluster resource group is ended with the <a href="clrgendcrg.htm">End
|
||
|
Cluster Resource Group (QcstEndClusterResourceGroup) API</a>.</p>
|
||
|
|
||
|
<p>Two, some action codes always proceed regardless of the exit program success
|
||
|
indicator and the exit program is not called again with an action code of Undo.
|
||
|
These are:</p>
|
||
|
|
||
|
<ul>
|
||
|
<li>Change Cluster Node Entry</li>
|
||
|
|
||
|
<li>Delete</li>
|
||
|
|
||
|
<li>Delete Command</li>
|
||
|
|
||
|
<li>End Cluster Node</li>
|
||
|
|
||
|
<li>Remove Node (only when removing a node from the cluster)
|
||
|
|
||
|
</li>
|
||
|
|
||
|
<li>Undo</li>
|
||
|
|
||
|
</ul>
|
||
|
|
||
|
<p>If the exit program returns an unsuccessful indicator from Undo,
|
||
|
the cluster resource group's status is set to
|
||
|
Indoubt.</p>
|
||
|
|
||
|
<br>
|
||
|
|
||
|
|
||
|
<h3><a name="HDRPGMEND2">An Exception Occurs</a></h3>
|
||
|
|
||
|
<p>An unhandled exception is treated the same way as an unsuccessful indicator.
|
||
|
The exit program will be called again with either Restart or Undo except for
|
||
|
the same action codes listed above where it is not called again with Undo.</p>
|
||
|
|
||
|
<p>If the exit program does not handle an exception while processing Undo, the
|
||
|
cluster resource group's status is set to Indoubt.</p>
|
||
|
|
||
|
<br>
|
||
|
|
||
|
|
||
|
<h3><a name="HDRPGMEND3">Job is Cancelled</a></h3>
|
||
|
|
||
|
<p>If the exit program job is cancelled and the exit program was performing the
|
||
|
function of any action code other than Undo, Start, or Restart, it is treated
|
||
|
as an unsuccessful indicator. The exit program is called with an Undo action
|
||
|
code except for those action codes listed above where it is not called again
|
||
|
with Undo.</p>
|
||
|
|
||
|
<p>If the exit program was cancelled while performing the function of Undo, the
|
||
|
cluster resource group's status is set to Indoubt.</p>
|
||
|
|
||
|
<p>If the exit program was cancelled while performing the function of Start or
|
||
|
Restart, the cluster resource group is ended; failover does not occur. It is
|
||
|
the responsibility of the exit program cancel handler to also end any other
|
||
|
jobs or subsystems it may have started.</p>
|
||
|
|
||
|
<p>An exit program job always has an associated cluster resource group job. It
|
||
|
is the associated cluster resource group job that submits the exit program job.
|
||
|
If the cluster resource group job is cancelled while an exit program is
|
||
|
running, the exit program job is also cancelled. If the cluster resource group
|
||
|
job is cancelled, the exit program is called with the End Node action code on
|
||
|
the node where the job was cancelled.</p>
|
||
|
|
||
|
<br>
|
||
|
|
||
|
|
||
|
<h3><a name="HDRRESTART">Restarting an Application Cluster Resource Group Exit
|
||
|
Program</a></h3>
|
||
|
|
||
|
<p>Cluster Resource Services uses a restart count to control how often an
|
||
|
active application will be restarted on the primary node before a failover
|
||
|
occurs. The restart count is specified on the <a href="clrgcrtcrg.htm">Create
|
||
|
Cluster Resource Group (QcstCreateClusterResourceGroup)</a> or <a href=
|
||
|
"clrgchgcrg.htm">Change Cluster Resource
|
||
|
Group(QcstChangeClusterResourceGroup)</a> APIs for application cluster resource
|
||
|
groups. If the specified value is 0, the failed application will not be
|
||
|
restarted on the primary node but failed over to the first backup. If the
|
||
|
specified value is greater than 0, Cluster Resource Services will call the exit
|
||
|
program with an action code of Restart after having initially called the exit
|
||
|
program with an action code of Start. It will continue to do this for each
|
||
|
failure, until the restart count has been reached. The exit program will be
|
||
|
called with an action code of Restart if it returns from handling the Start
|
||
|
action code in one of these ways:</p>
|
||
|
|
||
|
<ul>
|
||
|
<li>The exit program returns with the success indicator set to 2 (Unsuccessful,
|
||
|
attempt restart).</li>
|
||
|
|
||
|
<li>The exit program does not handle an exception.</li>
|
||
|
</ul>
|
||
|
|
||
|
<p>Once the restart count has been reached, Failover will be attempted in order
|
||
|
to start the application on the first active backup node. The restart count is
|
||
|
reset only when the exit program is called with a Start action code. This
|
||
|
occurs with the <a href="clrgstcrg.htm">Start Cluster Resource Group
|
||
|
(QcstStartClusterResourceGroup)</a> or <a href="clrginitso.htm">Initiate
|
||
|
Switchover (QcstInitiateSwitchOver) API</a> or the failover event.</p>
|
||
|
|
||
|
<br>
|
||
|
|
||
|
<h3><a name="HDRMULT1">Multiple Action Codes</a></h3>
|
||
|
|
||
|
<p>In most situations, cluster APIs or events result in the exit program being
|
||
|
called with a single action code. When the exit program completes successfully,
|
||
|
the exit program is not called again for that API or cluster event. There are
|
||
|
several situations where successful completion results in the exit program
|
||
|
being called twice. This occurs for active application cluster resource groups
|
||
|
for the Initiate Switchover API and the failover cluster event. In both cases,
|
||
|
the exit program is called on the new primary first with either the Switchover
|
||
|
or Failover action code. During this time, the exit program should do any
|
||
|
preparation work necessary to start the application but should not yet start
|
||
|
the application. When the exit program returns with a successful indicator, it
|
||
|
will be called a second time with the Start action code to start the
|
||
|
application.</p>
|
||
|
|
||
|
<p>Another situation occurs when a cluster resource group is deleted using
|
||
|
either the Delete Cluster Resource Group API or Delete Cluster Resource Group
|
||
|
From Cluster command. The exit program will be called first with Verification
|
||
|
Phase action code and then with the Delete action code. If the verification
|
||
|
phase returns with a unsuccessful indicator, the exit program will not be
|
||
|
called a second time and the cluster resource group will not be deleted.</p>
|
||
|
|
||
|
|
||
|
<h3><a name="HDRFO">Causes of the Failover Event</a></h3>
|
||
|
|
||
|
<p>It is natural to think of the failover event being caused by the most
|
||
|
obvious problem: a node fails. The node failure could be due to a hardware
|
||
|
problem such as the loss of a processor or an environmental problem such as the
|
||
|
loss of electrical power.</p>
|
||
|
|
||
|
<p>There are a wide variety of other things that can cause a failover event
|
||
|
when it occurs on a node that is in a cluster resource group's recovery domain.
|
||
|
For more information about failover events,
|
||
|
see <a href="../rzaig/rzaigicclust.htm">Clusters</a> in the
|
||
|
System Management topic.</p>
|
||
|
|
||
|
<ul>
|
||
|
<li><a href="clust1.htm">Cluster Resource Services APIs</a> or Commands
|
||
|
|
||
|
<ul>
|
||
|
<li>End Cluster Node API</li>
|
||
|
|
||
|
<li>End Cluster Node Command</li>
|
||
|
|
||
|
<li>Remove Cluster Node Entry API when Cluster Resource Services is active on
|
||
|
the node</li>
|
||
|
|
||
|
<li>Remove Cluster Node Entry Command</li>
|
||
|
</ul>
|
||
|
</li>
|
||
|
|
||
|
<li>iSeries operator actions when Cluster Resource Services is active
|
||
|
|
||
|
<ul compact>
|
||
|
<li>Pushing the IPL button on the front panel</li>
|
||
|
|
||
|
<li>Powering down the system (PWRDWNSYS)</li>
|
||
|
|
||
|
<li>Ending all subsystems (ENDSBS)</li>
|
||
|
|
||
|
<li>Ending the QSYSWRK subsystem (ENDSBS)</li>
|
||
|
|
||
|
<li>Change Cluster Recovery command</li>
|
||
|
|
||
|
<li>Ending the system (ENDSYS)</li>
|
||
|
|
||
|
<li>Ending TCP (ENDTCP)</li>
|
||
|
|
||
|
<li>Cancelling the QCSTCTL, QCSTCRGM, or a specific CRG job</li>
|
||
|
|
||
|
<li>Ending a TCP/IP interface used by clustering for communication with other
|
||
|
nodes</li>
|
||
|
</ul>
|
||
|
</li>
|
||
|
|
||
|
<li>Failures
|
||
|
|
||
|
<ul>
|
||
|
<li>System hardware failure causing a machine check</li>
|
||
|
|
||
|
<li>System software failure causing a machine check</li>
|
||
|
|
||
|
<li>Communication line, router, and IOP failures for a communication line used
|
||
|
by clustering for communication with other nodes</li>
|
||
|
|
||
|
<li>Environmental problems causing the system to fail (electrical power loss,
|
||
|
hardware destruction by storms, earth quake, and so on)</li>
|
||
|
|
||
|
<li>An application exit program returns from handing the Start or Restart
|
||
|
action code with the Success indicator set to <strong>Unsuccessful, attempt
|
||
|
restart</strong> and the restart limit has been reached</li>
|
||
|
|
||
|
<li>An application exit program returns from handing the Start or Restart
|
||
|
action code with the Success indicator set to <strong>Unsuccessful, do not
|
||
|
attempt restart</strong></li>
|
||
|
|
||
|
<li>An application exit program does not handle an exception while processing
|
||
|
the Start or Restart action code and the restart limit has been reached</li>
|
||
|
|
||
|
</ul>
|
||
|
</li>
|
||
|
</ul>
|
||
|
|
||
|
<p>The failover event always calls the exit program so that the exit program is
|
||
|
aware a member left the cluster. The exit program is called regardless of the
|
||
|
state of the cluster resource group: active, inactive, or indoubt. Also, the
|
||
|
exit program is called regardless of which member left the cluster: primary,
|
||
|
backup, replicate <img src="delta.gif" alt="Start of change"> or peer<img src="deltaend.gif" alt="End of change">. The exit program must look at both the state of the
|
||
|
cluster resource group and the role of the node that left in order to perform
|
||
|
the correct action.</p>
|
||
|
|
||
|
<p>Cluster resource groups should failover in a particular order when a node
|
||
|
failure occurs. That order is device cluster resource groups first, application
|
||
|
resource groups, and then data cluster resource groups.
|
||
|
<img src="delta.gif" alt="Start of change">Peer cluster resource groups
|
||
|
failover in parallel with the other
|
||
|
cluster resource group types.<img src="deltaend.gif" alt="End of change"></p>
|
||
|
|
||
|
<br>
|
||
|
|
||
|
|
||
|
<h3><a name="HDRPART">Partition Processing</a></h3>
|
||
|
|
||
|
<p>A cluster enters a partition state when a failure occurs that cannot
|
||
|
conclusively be identified as a node failure. Cluster Resource Services detects
|
||
|
that communication with another node or nodes has been lost but cannot
|
||
|
determine why. A classic example is the failure of a communication line between
|
||
|
the systems.</p>
|
||
|
|
||
|
<p>The exit program is called when a cluster partitions. The membership status
|
||
|
for each partitioned node in the recovery domain will be set to Partition.
|
||
|
However, this is different for each cluster partition. For example, suppose we
|
||
|
have a 2 node cluster with nodes A and B, both nodes are in a cluster resource
|
||
|
group's recovery domain, and the cluster partitions. When the exit program on A
|
||
|
is called, the recovery domain will indicate that A is active and B is
|
||
|
partitioned. When the exit program on B is called, the recovery domain will
|
||
|
indicate that B is active and A is partitioned.</p>
|
||
|
|
||
|
<p><img src="delta.gif" alt="Start of change">For primary-backup model cluster
|
||
|
resource groups:<img src="deltaend.gif" alt="End of change"></p>
|
||
|
<ul>
|
||
|
<li>The action code
|
||
|
seen by the exit program on each node depends upon whether
|
||
|
the node is in the primary or secondary partition. The primary partition
|
||
|
contains the cluster resource group's primary node. The secondary partition
|
||
|
does not.</li>
|
||
|
<li>All nodes in the primary partition of the cluster resource group's recovery
|
||
|
domain will be passed an action code of Failover. All nodes in the secondary
|
||
|
partition are passed an action code of End. Action code dependent data of
|
||
|
Partition failure is passed in each case. These action codes are used whether
|
||
|
the cluster resource group is active or inactive.
|
||
|
</ul>
|
||
|
|
||
|
<p><img src="delta.gif" alt="Start of change">For peer model cluster
|
||
|
resource groups:</p>
|
||
|
<ul>
|
||
|
<li>All recovery domain nodes will be passed an action
|
||
|
code of Failover. The access points that are active will remain active in
|
||
|
all partitions.</li>
|
||
|
<li>All configuration changes are not allowed when the recovery
|
||
|
domain spans a network partition.<img src="deltaend.gif" alt="End of change"></li>
|
||
|
|
||
|
</ul>
|
||
|
<br>
|
||
|
|
||
|
|
||
|
<h3><a name="HDRUNDO">Handling the Undo Action Code</a></h3>
|
||
|
|
||
|
<p>When Cluster Resource Services processes an API or cluster event and an exit
|
||
|
program is called, a failure either in the exit program or in Cluster Resource
|
||
|
Services after the exit program ends results in an attempt to recover the prior
|
||
|
state of the cluster resource group and its resilient resources.</p>
|
||
|
|
||
|
<p>Actions performed by Cluster Resource Services which changed the cluster
|
||
|
resource group are backed out. The exit program is called with an action code
|
||
|
of Undo so that actions it took can also be backed out.</p>
|
||
|
|
||
|
<p>If the exit program had nothing to do for an action code, its work to handle
|
||
|
the Undo is trivial. Merely set the success indicator to Successful and
|
||
|
return.</p>
|
||
|
|
||
|
<p>If the exit program has a failure and can back out its actions as part of
|
||
|
handling the original action code, it may also have little or nothing to do
|
||
|
when called with the Undo action code. Doing this back out as part of the
|
||
|
original action code processing may be driven from the procedure which detected
|
||
|
the problem, or from an exception handler, or from a cancel handler.</p>
|
||
|
|
||
|
<p>When the exit program handles the original action code successfully but
|
||
|
Cluster Resource Services subsequently detects an error that requires the API
|
||
|
or cluster event to be backed out, the Undo processing by the exit program
|
||
|
becomes more involved. While the exit program is passed the action code it
|
||
|
worked on before being called with Undo, there may be other information the
|
||
|
exit program will have to obtain in order to successfully perform the back out.
|
||
|
Any required back out information will have to be kept where a new job can be
|
||
|
access it.</p>
|
||
|
|
||
|
<p>The format data passed to the exit program for Undo is exactly the same as
|
||
|
was passed for the original action code except for the prior action code
|
||
|
field.</p>
|
||
|
|
||
|
<p>A cluster resource group's status is returned to its original value if both
|
||
|
the exit program and Cluster Resource Services handle the Undo action code
|
||
|
successfully. If Cluster Resource Services is unable to back out changes or the
|
||
|
exit program sets the success indicator to anything other than Successful, the
|
||
|
status of the cluster resource group is set to Indoubt. When this occurs,
|
||
|
someone such as an operator or programmer may have to be involved to determine
|
||
|
what errors caused the problem.</p>
|
||
|
|
||
|
<br>
|
||
|
|
||
|
|
||
|
<h3><a name="HDREPREAS">Reasons an Exit Program Is Called</a></h3>
|
||
|
|
||
|
<p>The table below shows the reasons an exit program is called and maps the
|
||
|
reason to the <strong>Action Code</strong> parameter on the cluster resource
|
||
|
group exit program. The third and fourth columns of the table give suggestions
|
||
|
for the types of things a data or application cluster resource group exit
|
||
|
program might do for an action code.</p>
|
||
|
|
||
|
<p>The following <a href="clust3a1TOC.htm">cluster resource group manager
|
||
|
APIs</a> or commands do not cause the exit program to be called:</p>
|
||
|
|
||
|
<ul>
|
||
|
<li>Change Cluster Resource Group API if the recovery domain is not
|
||
|
changed</li>
|
||
|
|
||
|
<li>Change Cluster Resource Group Command</li>
|
||
|
|
||
|
<li>Distribute Information API</li>
|
||
|
|
||
|
<li>List Cluster Resource Group Information API</li>
|
||
|
|
||
|
<li>List Cluster Resource Groups API</li>
|
||
|
|
||
|
<li>Display Cluster Resource Group Command</li>
|
||
|
|
||
|
</ul>
|
||
|
|
||
|
<p>For a device cluster resource group, neither the replication provider nor
|
||
|
the application provider need to supply an exit program. An exit program is
|
||
|
optional. An exit program is required only if customer specific activities are
|
||
|
required for resilient devices. Some examples of why a customer may wish to
|
||
|
provide an exit program might include:</p>
|
||
|
|
||
|
<ul>
|
||
|
<li>When a cluster resource group is created or a node is added to the recovery
|
||
|
domain, the exit program could perform configuration functions for devices not
|
||
|
supported by the device cluster resource group.</li>
|
||
|
|
||
|
<li>When a cluster resource group is started, the exit program could vary on
|
||
|
devices not supported by the device cluster resource group.</li>
|
||
|
|
||
|
<li>When a switchover or failover is done, the exit program could vary off
|
||
|
devices on the current primary node for devices not supported by the device
|
||
|
cluster resource group and vary them on for the new primary node.</li>
|
||
|
|
||
|
<li>When a cluster resource group is deleted or a node is removed from the
|
||
|
recovery domain, the exit program could delete configuration information
|
||
|
previously created.</li>
|
||
|
|
||
|
<li>Besides managing device configuration or varying devices on or off, the
|
||
|
exit program could perform other functions that might be useful in
|
||
|
synchronizing events between actions on a device and operator notification or
|
||
|
application dependencies.</li>
|
||
|
</ul>
|
||
|
|
||
|
<br>
|
||
|
<p><strong><a name="TBLWHYEP">Table 2. Reasons an Exit Program Is
|
||
|
Called</a></strong></p>
|
||
|
|
||
|
<table border="1" width="100%" cellpadding="5">
|
||
|
<!-- cols="30 15 30 35" -->
|
||
|
<tr>
|
||
|
<th align="left" valign="top">Reason an Exit Program Is Called</th>
|
||
|
<th align="left" valign="top">Action Code Parameter Passed to Exit
|
||
|
Program</th>
|
||
|
<th align="left" valign="top"><strong>Supplied by Replication
|
||
|
Provider<br>
|
||
|
Exit Program Actions - Data<img src="delta.gif" alt="Start of change">/Peer
|
||
|
<img src="deltaend.gif" alt="End of change"> Resilience</strong></th>
|
||
|
<th align="left" valign="top"><strong>Supplied by Application
|
||
|
Provider<br>
|
||
|
Exit Program Actions - Application Resilience</strong></th>
|
||
|
</tr>
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><strong>Create Cluster Resource Group
|
||
|
API or Create Cluster Resource Group Command</strong>
|
||
|
|
||
|
<br>This interface creates a cluster resource group object, which identifies a
|
||
|
recovery domain.
|
||
|
</td>
|
||
|
<td align="left" valign="top">1 (Initialize)</td>
|
||
|
<td align="left" valign="top">Put data on all nodes in the recovery
|
||
|
domain. Prime all nodes in the recovery domain.</td>
|
||
|
<td align="left" valign="top">Put applications on all nodes in the
|
||
|
recovery domain. Prime all nodes in the recovery domain.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><strong>Start Cluster Resource Group API or Start
|
||
|
Cluster Resource Group Command
|
||
|
</strong>
|
||
|
|
||
|
<br>This interface establishes resilience for a cluster resource group.
|
||
|
</td>
|
||
|
<td align="left" valign="top">2 (Start)</td>
|
||
|
<td align="left" valign="top">
|
||
|
<ul>
|
||
|
<li>Start journaling.</li>
|
||
|
|
||
|
<li>Start replication.</li>
|
||
|
</ul>
|
||
|
<p><img src="delta.gif" alt="Start of change">
|
||
|
If a Peer CRG is active, all peer nodes are actively replicating.
|
||
|
<img src="deltaend.gif" alt="End of change"></p>
|
||
|
<br></td>
|
||
|
|
||
|
|
||
|
<td align="left" valign="top">
|
||
|
<ul>
|
||
|
<li>Start server jobs.</li>
|
||
|
|
||
|
<li>Keep track of server jobs started. This will be needed when server jobs are
|
||
|
restarted or the End Cluster Resource Group API is called.</li>
|
||
|
</ul>
|
||
|
|
||
|
<br>
|
||
|
</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><strong>Application cluster resource group exit
|
||
|
program ends abnormally or unexpectedly.</strong></td>
|
||
|
<td align="left" valign="top">3 (Restart)</td>
|
||
|
<td align="left" valign="top">Not called.</td>
|
||
|
<td align="left" valign="top">
|
||
|
<ul>
|
||
|
<li>Restart server jobs if necessary.</li>
|
||
|
</ul>
|
||
|
|
||
|
<br>
|
||
|
</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><strong>End Cluster Resource Group API or End
|
||
|
Cluster Resource Group Command </strong>
|
||
|
|
||
|
<br>This interface will disable resilience for a cluster resource group
|
||
|
object.
|
||
|
|
||
|
<p><strong>Application ends</strong></p>
|
||
|
|
||
|
<p>The Success indicator is sent to Successful and the application ends</p>
|
||
|
</td>
|
||
|
<td align="left" valign="top">4 (End)</td>
|
||
|
<td align="left" valign="top">
|
||
|
<ul>
|
||
|
<li>Stop replication.</li>
|
||
|
|
||
|
<li>End journaling.</li>
|
||
|
</ul>
|
||
|
|
||
|
<br>
|
||
|
</td>
|
||
|
<td align="left" valign="top">
|
||
|
<ul>
|
||
|
<li>End server jobs.</li>
|
||
|
|
||
|
<li>End application resilience.</li>
|
||
|
</ul>
|
||
|
|
||
|
<br>
|
||
|
</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><strong>Delete Cluster Resource Group API or
|
||
|
Delete Cluster Resource Group from Cluster Command </strong><br>
|
||
|
</td>
|
||
|
<td align="left" valign="top">5 (Verification Phase)</td>
|
||
|
<td align="left" valign="top">Verify that the operation is ok to do.<br>
|
||
|
</td>
|
||
|
<td align="left" valign="top">Verify that the operation is ok to do.<br>
|
||
|
</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"> </td>
|
||
|
<td align="left" valign="top">6 (Reserved)</td>
|
||
|
<td align="left" valign="top"> </td>
|
||
|
<td align="left" valign="top"> </td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><strong>Delete Cluster Resource Group API or
|
||
|
Delete Cluster Resource Group From Cluster Command</strong>
|
||
|
|
||
|
<p>This interface deletes a cluster resource group object from all nodes in the
|
||
|
recovery domain.</p>
|
||
|
|
||
|
<p><strong>Delete Cluster API or Delete Cluster Command</strong> (if Cluster
|
||
|
Resource Services is active)</p>
|
||
|
<p>This interface deletes all cluster resource groups from all nodes.
|
||
|
|
||
|
|
||
|
<br><strong>Remove Cluster Node Entry API or Remove Cluster Node Entry Command</strong>
|
||
|
(if Cluster Resource Services is active and node being remove is not active in the cluster.)</p>
|
||
|
<p>This interface deletes a cluster resource group object from all nodes in the
|
||
|
recovery domain.</p>
|
||
|
|
||
|
|
||
|
</td>
|
||
|
<td align="left" valign="top">7 (Delete)</td>
|
||
|
<td align="left" valign="top">7 (Delete)</td>
|
||
|
<td align="left" valign="top">7 (Delete)</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><strong>Start Cluster Node API or Start Cluster
|
||
|
Node Group Command</strong>
|
||
|
|
||
|
<br>This interface is used to start Cluster Resource Services on one or more
|
||
|
nodes in the cluster.
|
||
|
|
||
|
<br><strong>Partition merge event</strong>
|
||
|
|
||
|
<br>When a communication problem which caused a cluster to partition has been
|
||
|
corrected, cluster partitions will merge back together.
|
||
|
</td>
|
||
|
<td align="left" valign="top">8 (Rejoin)</td>
|
||
|
<td align="left" valign="top">
|
||
|
<ul>
|
||
|
<li>Resynchronize data</li>
|
||
|
|
||
|
<li>Start replication if the cluster resource group status is active (10). <img src="delta.gif" alt="Start of change">For peer this should be done for all
|
||
|
peer nodes.<img src="deltaend.gif" alt="End of change">
|
||
|
|
||
|
</ul>
|
||
|
|
||
|
<br>
|
||
|
</td>
|
||
|
<td align="left" valign="top">Start application if the cluster resource group
|
||
|
status is Active (10)</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><strong>Node failure or resource failure
|
||
|
event</strong>
|
||
|
|
||
|
<br><strong>End Cluster Node API or End Cluster Node Command</strong>
|
||
|
|
||
|
<p>The recovery domain node(s) which are not being ended see this action code.
|
||
|
The node being ended sees the End Node action code.
|
||
|
|
||
|
<br><strong>Remove Cluster Node Entry API or Remove Cluster Node Entry
|
||
|
Command</strong></p>
|
||
|
|
||
|
<p>An active recovery domain node is being removed from the cluster.</p>
|
||
|
|
||
|
</td>
|
||
|
<td align="left" valign="top">9 (Failover)</td>
|
||
|
<td align="left" valign="top"><img src="delta.gif" alt="Start of change">For Data:
|
||
|
<img src="deltaend.gif" alt="End of change">
|
||
|
<ul>
|
||
|
<li>Get data objects to highest level of currency.</li>
|
||
|
|
||
|
<li>Redirect remote journal receivers.</li>
|
||
|
</ul>
|
||
|
<p><img src="delta.gif" alt="Start of change">
|
||
|
For peer, this is just notification only.<img src="deltaend.gif" alt="End of change"></p>
|
||
|
|
||
|
<br>
|
||
|
</td>
|
||
|
<td align="left" valign="top">
|
||
|
<ul>
|
||
|
<li>Make sure exit program data contains all key information for application
|
||
|
restart. This can be accomplished by the Change Cluster Resource Group API or
|
||
|
Change Cluster Resource Group Command.</li>
|
||
|
|
||
|
<li>Use exit program data to restart application at last known point. Exit
|
||
|
program data must contain enough key information for most effective
|
||
|
restart.</li>
|
||
|
|
||
|
<li>Restart server jobs after data is current. Actually occurs when the Cluster
|
||
|
Resource Services calls the cluster resource group exit program with an action
|
||
|
code of 2 (Start) on the new primary only.</li>
|
||
|
</ul>
|
||
|
|
||
|
<br>
|
||
|
</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><strong>Initiate Switchover API or Change Cluster
|
||
|
Resource Group Primary Command
|
||
|
</strong>
|
||
|
|
||
|
<br>This API changes the current role of a node in the recovery domain of a
|
||
|
cluster resource group by switching the access point from the primary node to
|
||
|
the first backup.
|
||
|
</td>
|
||
|
<td align="left" valign="top">10 (Switchover)</td>
|
||
|
<td align="left" valign="top"><img src="delta.gif" alt="Start of change">For Data only:<img src="deltaend.gif" alt="End of change">
|
||
|
<ul>
|
||
|
<li>Stop replication on primary and journaling.</li>
|
||
|
|
||
|
<li>Continue replication on other active nodes in the recovery domain. This is
|
||
|
a combination of 4 (End) and 9 (Failover).</li>
|
||
|
</ul>
|
||
|
<p><img src="delta.gif" alt="Start of change">Not valid for peer.
|
||
|
<img src="deltaend.gif" alt="End of change"></p>
|
||
|
|
||
|
<br>
|
||
|
</td>
|
||
|
<td align="left" valign="top">
|
||
|
<ul>
|
||
|
<li>Make sure exit program data contains all key information for application
|
||
|
restart before the Initiate Switchover API is called.</li>
|
||
|
|
||
|
<li>10 (Switchover - Pre-exit program)
|
||
|
|
||
|
<ul>
|
||
|
<li>Stop server jobs.</li>
|
||
|
</ul>
|
||
|
</li>
|
||
|
|
||
|
<li>2 (Start - Post-exit program)
|
||
|
|
||
|
<ul>
|
||
|
<li>Use exit program data to restart application at last known point. Exit
|
||
|
program data must contain enough key information for most effective
|
||
|
restart.</li>
|
||
|
|
||
|
<li>Restart server jobs after data is current.</li>
|
||
|
</ul>
|
||
|
</li>
|
||
|
</ul>
|
||
|
|
||
|
<br>
|
||
|
</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><strong>Add Node to Recovery Domain API or Add
|
||
|
Cluster Resource Group Node Entry Command</strong>
|
||
|
|
||
|
<br>This interface will add a node ID to the recovery domain of a cluster
|
||
|
resource group.
|
||
|
</td>
|
||
|
<td align="left" valign="top">11 (Add Node)</td>
|
||
|
<td align="left" valign="top">Exit program actions performed on the node being
|
||
|
added:
|
||
|
|
||
|
<ul>
|
||
|
<li>If cluster resource group is Active, do 1 (Initialize) and 2 (Start)
|
||
|
actions.<img src="delta.gif" alt="Start of change">A peer node will be
|
||
|
an active access point.<img src="deltaend.gif" alt="End of change">
|
||
|
</li>
|
||
|
|
||
|
<li>If cluster resource group is Inactive, do 1 (Initialize) action.</li>
|
||
|
</ul>
|
||
|
</td>
|
||
|
<td align="left" valign="top">Perform 1 (Initialize) on the node being
|
||
|
added.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><strong>Remove Node from Recovery Domain API or
|
||
|
Remove Cluster Resource Group Node Entry Command</strong>
|
||
|
|
||
|
<br>This interface will remove a node from the recovery domain of a cluster
|
||
|
resource group.
|
||
|
|
||
|
<br><strong>Remove Cluster Node Entry API or Remove Cluster Node Entry
|
||
|
Command</strong> (will be seen on the node being removed if Cluster Resource
|
||
|
Services is active on the node being removed)
|
||
|
|
||
|
<br><strong>Remove Cluster Node Entry API or Remove Cluster Node Entry
|
||
|
Command</strong> (will be seen on active cluster nodes if Cluster Resource
|
||
|
Services is inactive on the node being removed and the API is run on an active
|
||
|
node)
|
||
|
</td>
|
||
|
<td align="left" valign="top">12 (Remove Node)</td>
|
||
|
<td align="left" valign="top">Exit program actions on the node being removed:
|
||
|
|
||
|
<ul>
|
||
|
<li>If the cluster resource group is Active and the node being
|
||
|
removed is active in the cluster do 4 (End) and 7 (Delete).
|
||
|
<img src="delta.gif" alt="Start of change">For peer this should be done on
|
||
|
all active peer nodes.
|
||
|
<img src="deltaend.gif" alt="End of change">If the node being remove is not
|
||
|
active in the cluster, this is just notification
|
||
|
that the node is being removed from the recovery domain.
|
||
|
</li>
|
||
|
|
||
|
<li>If cluster resource group is Inactive
|
||
|
and the node being removed is active in the cluster
|
||
|
, do 7 (Delete) action. If the node being remove is not active in the cluster,
|
||
|
this is just notification that the node is being removed from the recovery domain.
|
||
|
</li>
|
||
|
</ul>
|
||
|
</td>
|
||
|
<td align="left" valign="top">Exit program actions on the node being removed:
|
||
|
|
||
|
<ul>
|
||
|
<li>If the cluster resource group is Active
|
||
|
and the node being removed is active in the cluster, do 4 (End) and 7 (Delete).
|
||
|
If the node being remove is not active in the cluster, this is just notification
|
||
|
that the node is being removed from the recovery domain.
|
||
|
</li>
|
||
|
|
||
|
<li>If cluster resource group is Inactive
|
||
|
and the node being removed is active in the cluster, do 7 (Delete) action.
|
||
|
If the node being remove is not active in the cluster, this is just notification
|
||
|
that the node is being removed from the recovery domain.
|
||
|
</li>
|
||
|
</ul>
|
||
|
</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><strong>Change Cluster Resource Group API or
|
||
|
Change Cluster Resource Group Command</strong>
|
||
|
|
||
|
<br>This interface changes some of the attributes of a cluster resource group.
|
||
|
Only if the recovery domain is changed will the cluster resource group exit
|
||
|
program be called.
|
||
|
</td>
|
||
|
<td align="left" valign="top">13 (Change)</td>
|
||
|
<td align="left" valign="top">
|
||
|
<ul>
|
||
|
<li>Redirect replication if necessary.</li>
|
||
|
|
||
|
<li>Redirect journaling if necessary.</li>
|
||
|
</ul>
|
||
|
<p><img src="delta.gif" alt="Start of change">For peer if the cluster resource
|
||
|
group is Active (10) and the node is being changed from replicate to peer perform a
|
||
|
2 (Start) on the new peer node. If the node is being changed from peer to replicate
|
||
|
perform an 4 (End) on the new replicate node. <img src="deltaend.gif" alt="End of change"></p>
|
||
|
<br>
|
||
|
</td>
|
||
|
<td align="left" valign="top"> </td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><strong>Delete Cluster Resource Group CL
|
||
|
command</strong>
|
||
|
|
||
|
<br>This command deletes a cluster resource group object from the node running
|
||
|
the command. This is not a distributed request.
|
||
|
|
||
|
<br><strong>Delete Cluster API or Delete Cluster Command</strong> (if Cluster
|
||
|
Resource Services is inactive)
|
||
|
|
||
|
<br><strong>Remove Cluster Node Entry API or Remove Cluster Node Entry
|
||
|
Command</strong> (if Cluster Resource Services is inactive on the node being
|
||
|
removed and the API is run on that node)
|
||
|
</td>
|
||
|
<td align="left" valign="top">14 (Delete Command)</td>
|
||
|
<td align="left" valign="top"> </td>
|
||
|
<td align="left" valign="top"> </td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"> </td>
|
||
|
<td align="left" valign="top">15(Undo)</td>
|
||
|
<td align="left" valign="top">Rollback operations from previous request.</td>
|
||
|
<td align="left" valign="top">Rollback operations from previous request.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><strong>End Cluster Node API or End Cluster Node
|
||
|
Command</strong> is used to end Cluster Resource Services on a node in the
|
||
|
recovery domain.
|
||
|
|
||
|
<p><strong>Job cancelled</strong></p>
|
||
|
|
||
|
<p>A Cluster Resource Services job is cancelled.</p>
|
||
|
</td>
|
||
|
<td align="left" valign="top">16(End Node)</td>
|
||
|
<td align="left" valign="top">On the node being ended:
|
||
|
|
||
|
<ul>
|
||
|
<li>Do End (4) and Change (13) if the cluster resource group status is Active
|
||
|
(10).</li>
|
||
|
|
||
|
<li>Do Change (13) if the cluster resource group status is Inactive(20) or
|
||
|
Indoubt (30).</li>
|
||
|
</ul>
|
||
|
|
||
|
<p><img src="delta.gif" alt="Start of change">For data cluster resource group
|
||
|
<img src="deltaend.gif" alt="End of change">if the node assigned the primary role is ended,
|
||
|
exit program actions on the
|
||
|
first backup:</p>
|
||
|
|
||
|
<ul>
|
||
|
<li>If the cluster resource group status is Active (10) do Failover (9).</li>
|
||
|
|
||
|
<li>If the cluster resource group status is Inactive (20) or Indoubt (30) do
|
||
|
Change (13).</li>
|
||
|
</ul>
|
||
|
|
||
|
</td>
|
||
|
<td align="left" valign="top">On the node being ended:
|
||
|
|
||
|
<ul>
|
||
|
<li>Do End (4) and Change (13) if the cluster resource group status is Active
|
||
|
(10).</li>
|
||
|
|
||
|
<li>Do Change (13) if the cluster resource group status is Inactive (20) or
|
||
|
Indoubt (30).</li>
|
||
|
</ul>
|
||
|
|
||
|
<p>If the node assigned the primary role is ended, exit program actions on the
|
||
|
first backup:</p>
|
||
|
|
||
|
<ul>
|
||
|
<li>If the cluster resource group status is Active (10) do Failover (9).</li>
|
||
|
|
||
|
<li>If the cluster resource group status is Inactive (20) or Indoubt (30) do
|
||
|
Change (13).</li>
|
||
|
</ul>
|
||
|
</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><strong>Add Cluster Resource Group Device Entry
|
||
|
API or Add Cluster Resource Group Device Entry Command</strong>
|
||
|
|
||
|
<br>A resilient device entry is added to a cluster resource group
|
||
|
</td>
|
||
|
<td align="left" valign="top">17(Add Device Entry)</td>
|
||
|
<td align="left" valign="top">Does not apply to a data <img src="delta.gif" alt="Start of change">or peer<img src="deltaend.gif" alt="End of change">cluster resource group.</td>
|
||
|
<td align="left" valign="top">Does not apply to an application cluster resource
|
||
|
group</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><strong>Remove Cluster Resource Group Device
|
||
|
Entry API or Remove Cluster Resource Group Device Entry Command</strong>
|
||
|
|
||
|
<br>A resilient device entry is removed from a cluster resource group
|
||
|
</td>
|
||
|
<td align="left" valign="top">18(Remove Device Entry)</td>
|
||
|
<td align="left" valign="top">Does not apply to a data<img src="delta.gif" alt="Start of change">or peer<img src="deltaend.gif" alt="End of change"> cluster resource
|
||
|
group</td>
|
||
|
<td align="left" valign="top">Does not apply to an application cluster resource
|
||
|
group</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><strong>Change Cluster Resource Group Device
|
||
|
Entry API or Change Cluster Resource Group Device Entry Command</strong>
|
||
|
|
||
|
<br>Information for a resilient device entry is being changed
|
||
|
</td>
|
||
|
<td align="left" valign="top">19(Change Device Entry)</td>
|
||
|
<td align="left" valign="top">Does not apply to a data<img src="delta.gif" alt="Start of change">or peer<img src="deltaend.gif" alt="End of change"> cluster resource
|
||
|
group</td>
|
||
|
<td align="left" valign="top">Does not apply to an application cluster resource
|
||
|
group</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><strong>Change Cluster Node Entry API or Change
|
||
|
Cluster Node Entry Command</strong>
|
||
|
|
||
|
<br>The status of a node is being changed.
|
||
|
</td>
|
||
|
<td align="left" valign="top">20(Change Node Status)</td>
|
||
|
<td align="left" valign="top"><img src="delta.gif" alt="Start of change">For data cluster resource group <img src="deltaend.gif" alt="End of change">if the primary had failed and its status is being
|
||
|
changed, start the cluster resource group.</td>
|
||
|
<td align="left" valign="top">If the primary had failed and its status is being
|
||
|
changed, start the cluster resource group.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><strong>Primary node failure or resource failure
|
||
|
event</strong>
|
||
|
|
||
|
<br>Failover is cancelled by failover message queue
|
||
|
|
||
|
<br><strong>End Cluster Node API or End Cluster Node Command</strong>
|
||
|
|
||
|
<br>Primary node is ended and failover cancelled by failover message queue.
|
||
|
|
||
|
<br>The recovery domain node(s) which are not being ended see this action code.
|
||
|
The node being ended sees the End Node action code.
|
||
|
|
||
|
</td>
|
||
|
<td align="left" valign="top">21 (Failover Cancelled)</td>
|
||
|
<td align="left" valign="top"><img src="delta.gif" alt="Start of change">Not applicable to peer cluster resource group.<img src="deltaend.gif" alt="End of change">
|
||
|
<ul>
|
||
|
<li>Stop replication.</li>
|
||
|
|
||
|
<li>End journaling.</li>
|
||
|
</ul>
|
||
|
|
||
|
<br>
|
||
|
</td>
|
||
|
<td align="left" valign="top">
|
||
|
<ul>
|
||
|
<li>End server jobs.</li>
|
||
|
|
||
|
<li>End application resilience.</li>
|
||
|
</ul>
|
||
|
|
||
|
<br>
|
||
|
</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><strong>Primary node failure </strong>
|
||
|
|
||
|
<br>Failover is cancelled by failover message queue
|
||
|
|
||
|
<br><strong>End Cluster Node API or End Cluster Node Command</strong>
|
||
|
|
||
|
<br>Primary node is ended and failover cancelled by failover message queue.
|
||
|
|
||
|
<br>The recovery domain node(s) which are not being ended see this action code.
|
||
|
The node being ended sees the End Node action code.
|
||
|
|
||
|
</td>
|
||
|
|
||
|
|
||
|
<td align="left" valign="top">
|
||
|
|
||
|
<br>
|
||
|
</td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
|
||
|
<br>
|
||
|
<br>
|
||
|
<h3><a name="HDRACXREF">Action Code Cross Reference</a></h3>
|
||
|
|
||
|
<p>Some action codes are used by more than one API or cluster event. The
|
||
|
following table is a cross reference between an action code and which API or
|
||
|
cluster event uses it. The action code dependent data value is listed in
|
||
|
parenthesis after each API and cluster event. Those with no specified dependent
|
||
|
data value have a value of No Information (0).<br>
|
||
|
</p>
|
||
|
|
||
|
<p><strong><a name="TBLXREF1">Table 3. API and Cluster Event to Action Code
|
||
|
Cross Reference</a></strong></p>
|
||
|
|
||
|
<table border width="80%" cellpadding="5">
|
||
|
<!-- cols="15 50 35" -->
|
||
|
<tr>
|
||
|
<th align="left" valign="top" rowspan="1">Action Code</th>
|
||
|
<th align="left" valign="top" rowspan="1">API, Command, or Cluster Event that
|
||
|
Uses the Action Code</th>
|
||
|
<th align="left" valign="top" rowspan="1">Cluster Resource Group Type the
|
||
|
Action Code Applies to</th>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top" width="35%"><strong>1 - Initialize</strong></td>
|
||
|
<td align="left" valign="top" width="55%">
|
||
|
<ul compact>
|
||
|
<li>Create Cluster Resource Group API</li>
|
||
|
|
||
|
<li>Create Cluster Resource Group Command</li>
|
||
|
</ul>
|
||
|
</td>
|
||
|
<td align="left" valign="top" width="10%">All cluster resource group types</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><strong>2 - Start</strong></td>
|
||
|
<td align="left" valign="top">
|
||
|
<ul compact>
|
||
|
<li>Start Cluster Resource Group API</li>
|
||
|
<li>Start Cluster Resource Group Command</li>
|
||
|
|
||
|
<li>The second action code on the new primary for Initiate Switchover API for an active application cluster resource group</li>
|
||
|
|
||
|
<li>The second action code on the new primary for Failover event for an active
|
||
|
application cluster resource group</li>
|
||
|
</ul>
|
||
|
</td>
|
||
|
<td align="left" valign="top">All cluster resource group types</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><strong>3 - Restart</strong></td>
|
||
|
<td align="left" valign="top">Exit program failure when processing the Start
|
||
|
action code</td>
|
||
|
<td align="left" valign="top">Application cluster resource group</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><strong>4 - End</strong></td>
|
||
|
<td align="left" valign="top">
|
||
|
<ul>
|
||
|
<li>End Cluster Resource Group API (0 - No information)</li>
|
||
|
<li>End Cluster Resource Group Command</li>
|
||
|
|
||
|
<li><img src="delta.gif" alt="Start of change">For primary-backup model cluster resource groups only.<img src="deltaend.gif" alt="End of change">Cluster partition event for the nodes in the secondary partition for both
|
||
|
active and inactive cluster resource groups (3 - Partition failure)</li>
|
||
|
|
||
|
<li>When an application cluster resource group exit program ends with a Success
|
||
|
return code while processing the Start or Restart action codes (9 - Resource
|
||
|
end)</li>
|
||
|
</ul>
|
||
|
</td>
|
||
|
<td align="left" valign="top">All cluster resource group types</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><strong>5 - Verification Phase</strong></td>
|
||
|
<td align="left" valign="top">
|
||
|
<ul>
|
||
|
<li>Delete Cluster Resource Group from Cluster Command</li>
|
||
|
|
||
|
<li>Delete Cluster Resource Group API</li>
|
||
|
|
||
|
</ul>
|
||
|
</td>
|
||
|
<td align="left" valign="top">All cluster resource group types</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><strong>7 - Delete</strong></td>
|
||
|
<td align="left" valign="top">
|
||
|
<ul compact>
|
||
|
<li>Delete Cluster Resource Group API (0 - No information)</li>
|
||
|
|
||
|
<li>Delete Cluster API (10 - Delete cluster)</li>
|
||
|
|
||
|
<li>Delete Cluster Resource Group From Cluster Command</li>
|
||
|
|
||
|
<li>Delete Cluster Command</li>
|
||
|
|
||
|
<li>
|
||
|
<img src="delta.gif" alt="Start of change">For primary-backup model cluster resource groups only.<img src="deltaend.gif" alt="End of change">Remove Cluster Node Entry API or Remove Cluster Node Entry Command ( 15 - Remove passive node ) When a node being removed from the cluster is not active and the node is the only recovery domain node or it is the primary and there are no backups defined.
|
||
|
|
||
|
</ul>
|
||
|
</td>
|
||
|
<td align="left" valign="top">All cluster resource group types</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><strong>8 - Rejoin</strong></td>
|
||
|
<td align="left" valign="top">
|
||
|
<ul compact>
|
||
|
<li>Cluster partitions are merging (1 - Merge)</li>
|
||
|
|
||
|
<li>A node that was ended or failed is started (2 - Join)</li>
|
||
|
|
||
|
</ul>
|
||
|
</td>
|
||
|
<td align="left" valign="top">All cluster resource group types</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><strong>9 - Failover</strong></td>
|
||
|
<td align="left" valign="top">See <a href="#HDRFO">Causes of the Failover
|
||
|
Event</a> for a list of things that cause the failover event (4 - Node failure,
|
||
|
5 - Member failure, 6 - End node, 7 - Remove node, 8 - Application
|
||
|
failover)</td>
|
||
|
<td align="left" valign="top">All cluster resource group types</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><strong>10 - Switchover</strong></td>
|
||
|
<td align="left" valign="top">
|
||
|
<ul compact>
|
||
|
<li>Initiate Switchover API</li>
|
||
|
|
||
|
<li>Change Cluster Resource Group Primary Command</li>
|
||
|
|
||
|
</ul>
|
||
|
</td>
|
||
|
<td align="left" valign="top">All cluster resource group types <img src="delta.gif" alt="Start of change">except peer<img src="deltaend.gif" alt="End of change">
|
||
|
</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><strong>11 - Add Node</strong></td>
|
||
|
<td align="left" valign="top">
|
||
|
<ul compact>
|
||
|
<li>Add Node to Recovery Domain API</li>
|
||
|
|
||
|
<li>Add Cluster Resource Group Node Entry Command</li>
|
||
|
</ul>
|
||
|
</td>
|
||
|
<td align="left" valign="top">All cluster resource group types</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><strong>12 - Remove Node</strong></td>
|
||
|
<td align="left" valign="top">
|
||
|
<ul compact>
|
||
|
<li>Remove Cluster Node Entry API or Remove Cluster Node Entry Command<br>
|
||
|
|
||
|
All nodes see this action code if the node being removed is inactive. The
|
||
|
action code dependent data will be 15 - Remove passive node.
|
||
|
If removed node is active, the node being removed sees this action code while
|
||
|
the other nodes see the Failover action code (7 - QcstRemoveNode).
|
||
|
</li>
|
||
|
|
||
|
<li>Remove Node From Recovery Domain API Remove Cluster ReSource Group Node
|
||
|
Entry Entry Command (11 - Remove recovery domain node)</li>
|
||
|
</ul>
|
||
|
</td>
|
||
|
<td align="left" valign="top">All cluster resource group types</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><strong>13 - Change</strong></td>
|
||
|
<td align="left" valign="top">
|
||
|
<ul compact>
|
||
|
<li>Change Cluster Resource Group API</li>
|
||
|
|
||
|
<li>Change Cluster Resource Group Command</li>
|
||
|
</ul>
|
||
|
</td>
|
||
|
<td align="left" valign="top">All cluster resource group types</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><strong>14 - Delete Command</strong></td>
|
||
|
<td align="left" valign="top">
|
||
|
<ul compact>
|
||
|
<li>Delete Cluster Resource Group command</li>
|
||
|
|
||
|
<li>Delete Cluster API (when Cluster Resource Services is inactive)</li>
|
||
|
|
||
|
<li>Remove Cluster Node Entry API used on a node where Cluster Resource
|
||
|
Services is not running</li>
|
||
|
</ul>
|
||
|
</td>
|
||
|
<td align="left" valign="top">All cluster resource group types</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><strong>15 - Undo</strong></td>
|
||
|
<td align="left" valign="top">An Undo action code is used whenever the exit
|
||
|
program is ended due to an unhandled exception or returns with a non successful
|
||
|
return code except for these action codes which never call the exit program a
|
||
|
second time with Undo:
|
||
|
|
||
|
<ul>
|
||
|
<li>7 - Delete</li>
|
||
|
|
||
|
<li>12 - Remove Node (if the node being removed from the cluster)</li>
|
||
|
|
||
|
<li>14 - Delete Command</li>
|
||
|
|
||
|
<li>15 - Undo</li>
|
||
|
|
||
|
<li>16 - End Node</li>
|
||
|
|
||
|
<li>20 - Change Cluster Node Entry</li>
|
||
|
|
||
|
<li> 22 - Cancel </li>
|
||
|
|
||
|
</ul>
|
||
|
</td>
|
||
|
<td align="left" valign="top">All cluster resource group types. </td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><strong>16 - End Node</strong></td>
|
||
|
<td align="left" valign="top">
|
||
|
<ul compact>
|
||
|
<li>End Cluster Node API (0 - No information)</li>
|
||
|
|
||
|
<li>End Cluster Node Command</li>
|
||
|
|
||
|
<li>A cluster resource group job is cancelled on a node (5 - Member
|
||
|
failure)</li>
|
||
|
</ul>
|
||
|
</td>
|
||
|
<td align="left" valign="top">All cluster resource group types</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><strong>17 - Add Device Entry</strong></td>
|
||
|
<td align="left" valign="top">
|
||
|
<ul compact>
|
||
|
<li>Add Cluster Resource Group Device Entry API</li>
|
||
|
|
||
|
<li>Add Cluster Resource Group Device Entry Command</li>
|
||
|
</ul>
|
||
|
</td>
|
||
|
<td align="left" valign="top">Device cluster resource group</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><strong>18 - Remove Device Entry</strong></td>
|
||
|
<td align="left" valign="top">
|
||
|
<ul compact>
|
||
|
<li>Remove Cluster Resource Group Device Entry API</li>
|
||
|
|
||
|
<li>Remove Cluster Resource Group Device Entry Command</li>
|
||
|
</ul>
|
||
|
</td>
|
||
|
<td align="left" valign="top">Device cluster resource group</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><strong>19 - Change Device Entry</strong></td>
|
||
|
<td align="left" valign="top">
|
||
|
<ul compact>
|
||
|
<li>Change Cluster Resource Group Device Entry API</li>
|
||
|
|
||
|
<li>Change Cluster Resource Group Device Entry Command</li>
|
||
|
</ul>
|
||
|
</td>
|
||
|
<td align="left" valign="top">Device cluster resource group</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><strong>20 - Change Node Status</strong></td>
|
||
|
<td align="left" valign="top">
|
||
|
<ul compact>
|
||
|
<li>Change Cluster Node Entry API</li>
|
||
|
|
||
|
<li>Change Cluster Node Entry Command when used to change the status of a
|
||
|
cluster node to Failed.</li>
|
||
|
</ul>
|
||
|
</td>
|
||
|
<td align="left" valign="top">All cluster resource group types</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><strong>21 - Failover Cancelled</strong></td>
|
||
|
<td align="left" valign="top">The primary node failed and the failover was
|
||
|
cancelled through the use of the failover message queue. See <a href="#HDRFO">
|
||
|
Causes of the Failover Event</a> for a list of things that cause the failover
|
||
|
event (4 - Node failure, 5 - Member failure, 6 - End node, 7 - Remove node, 8 -
|
||
|
Application failover)</td>
|
||
|
<td align="left" valign="top">All cluster resource group types <img src="delta.gif" alt="Start of change">
|
||
|
except peer<img src="deltaend.gif" alt="End of change"></td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><strong>22 - Cancel</strong></td>
|
||
|
<td align="left" valign="top"><img src="delta.gif" alt="Start of change">N/A
|
||
|
<img src="deltaend.gif" alt="End of change"></td>
|
||
|
<td align="left" valign="top"><img src="delta.gif" alt="Start of change">N/A
|
||
|
<img src="deltaend.gif" alt="End of change"></td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
|
||
|
<br>
|
||
|
<hr>
|
||
|
Exit program introduced: V4R4
|
||
|
|
||
|
<hr>
|
||
|
<center>
|
||
|
<table cellpadding="2" cellspacing="2">
|
||
|
<tr align="center">
|
||
|
<td valign="middle" align="center"><a href="#Top_Of_Page">Top</a> | <a href=
|
||
|
"clust1.htm">Cluster APIs</a> | <a href="aplist.htm">APIs by category</a></td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
</center>
|
||
|
</body>
|
||
|
</html>
|
||
|
|