This site best when viewed with a modern standards-compliant browser. We recommend Firefox Get Firefox!.

Linux-HA project logo
Providing Open Source High-Availability Software for Linux and other OSes since 1999.

USA Flag UK Flag

Japanese Flag

Homepage

About Us

Contact Us

Legal Info

How To Contribute

Security Issues

21 December 2007 Heartbeat release 2.1.3 is now out Download it and install it!

11 October 2007 NEW educational HA/DR Blog hosted by Alan Robertson

9 April 2007 Check out the Cool Heartbeat Screencasts: Installation, Intro to the GUI Part of the Heartbeat Education project

Last site update:
2008-07-20 11:03:21

The TransitionGraph overview

The TransitionGraph is computed by the PolicyEngine and then typically provided as input to the TransitionEngine. It describes the actions and their dependencies necessary to go from the CurrentClusterState to the TargetClusterState, in which hopefully all resources are provided by the cluster again.

The graph is divided into synapses, which need a given set of inputs to fire. The inputs are events in the cluster we are waiting on, and the actions are the actions which are started when all inputs are satisfied.

Thus, the TransitionGraph provides the TransitionEngine with enough information to parallelize operations for performance.

The formal syntax is described in the crm/crm-1.0.dtd file, but here are some more comments on how this is supposed to work:

Inputs

Any event in the cluster - a resource changing state, a node leaving or joining, a CRM event such as a CRM parting or leaving, or even a pseudo-event generated somewhere else in the graph - can be waited on.

Multiple inputs can be associated with one synapse, so you can chose to only trigger your actions if for example several other resources were started successfully already.

Note that you cannot only wait for successful operations, but also on failures.

Actions

A synapse can have multiple actions associated with it.

Basically, all actions which can be initiated by the ClusterResourceManager are possible, such as instructing a LocalResourceManager to perform an operation via a ResourceAgent (starting, stopping, fencing...), or a CRM event which instructs a ClusterResourceManager to shutdown, trigger an election etc. Additionally, you can send a pseudo event, which is just good for explicitly linking synapses.