Managing Serviceguard 14th Edition, June 2007
Understanding Serviceguard Software Components
How Packages Run
Chapter 392
When a Service, Subnet, or Monitored Resource Fails,
or a Dependency is Not Met
What happens when something goes wrong? If a service fails and there
are no more restarts, if a subnet fails and there are no standbys, if a
configured resource fails, or if a configured dependency on a
special-purpose package is not met, then a failover package will halt on
its current node and, depending on the setting of the package switching
flags, may be restarted on another node. If a multi-node or system
multi-node package fails, all of the packages that have configured a
dependency on it will also fail.
Package halting normally means that the package halt script executes
(see the next section). However, if a failover package’s configuration has
the service_fail_fast_enabled flag set to yes for the service that
fails, then the node will halt as soon as the failure is detected. If this flag
is not set, the loss of a service will result in halting the package
gracefully by running the halt script.
If auto_run is set to yes, the package will start up on another eligible
node, if it meets all the requirements for startup. If auto_run is set to no,
then the package simply halts without starting up anywhere else.
NOTE If a package is dependent on a subnet, and the subnet on the primary
node fails, the package will start to shut down. If the subnet recovers
immediately (before the package is restarted on an adoptive node), the
package can be restarted on the primary node and does not switch to
another node in this case.
When a Package is Halted with a Command
The Serviceguard cmhaltpkg command has the effect of executing the
package halt script, which halts the services that are running for a
specific package. This provides a graceful shutdown of the package that
is followed by disabling automatic package startup (AUTO_RUN).
You cannot halt a multi-node or system multi-node package unless all
packages that have a configured dependency on it are down. Use
cmviewcl to check the status of dependents. For example, if pkg1 and
pkg2 depend on PKGa, both pkg1 and pkg2 must be halted before you
can halt PKGa.