[Linux-cluster] Can I use cman instead of the HA (High Availability) package?
Lon Hohberger
lhh at redhat.com
Thu Jun 9 15:28:41 UTC 2005
On Wed, 2005-06-08 at 15:39 -0400, Coman Iliut wrote:
> Is there any documentation you can point me to, for rgmanager?
>
> I installed the rpm but there anre no man pages.
Doxygen!
(just kidding)
Not really, there's a UI you can use to configure it (system-config-
cluster), or you can refer to the examples/*.conf and
src/daemons/tests/*.conf.
I'm still working on a decent "HOWTO" for people who wish to hand-
edit... I'm about 2% done, but here it is anyway... ;)
-- Lon
-------------- next part --------------
rgmanager HOWTO, v0.0.1
How Resources Work
Resource Agents, Meta-Data, and an overview
Resource information is provided to rgmanager via the "meta-data"
command-line option. This option tells the user (or program, in this
case) what the various parameters are for a given resource type. For
example, the output of the "ip.sh" looks something like the following
(the description tags have been removed to make this shorter):
<?xml version="1.0" ?>
<resource-agent version="rgmanager 2.0" name="ip">
<version>1.0</version>
<parameters>
<parameter name="address" unique="1" primary="1"/>
<parameter name="family"/>
<parameter name="monitor_link">
<content type="boolean" default="1"/>
</parameter>
</parameters>
<actions>
<action name="start" timeout="20"/>
<action name="stop" timeout="20"/>
<action name="status" interval="20" timeout="10"/>
<action name="monitor" interval="20" timeout="10"/>
<action name="status" depth="10" interval="60" timeout="20"/>
<action name="monitor" depth="10" interval="60" timeout="20"/>
<action name="status" depth="20" interval="2m" timeout="20"/>
<action name="monitor" depth="20" interval="2m" timeout="20"/>
<action name="meta-data" timeout="20"/>
<action name="verify-all" timeout="20"/>
</actions>
<special tag="rgmanager">
<attributes maxinstances="1"/>
</special>
</resource-agent>
For each <parameter> block, rgmanager will call the script with an
OCF_RESKEY_param environment variable the parameter exists. We'll get
back to that later.
This is closely related to the OCF RA API 1.0, but there are a few
differences of note: we allow "primary", "required", and "unique"
attributes. "Primary" parameters and "unique" parameters can not be
shared between any two resources of the same type in
/etc/cluster/cluster.conf, and a resource must have all "required"
parameters. "Primary" means that it is unique, required, and can be
passed by reference in the resource tree, for instance:
<rm>
<resources>
<ip address="192.168.1.2" monitor_link="1"/>
</resources>
<service name="foo">
<ip ref="192.168.1.2"/>
</service>
</rm>
Note, however, the <attributes maxinstances="1"> in the <special> tag.
This means that the IP address may only appear once in the entire
service tree; it may not be reused. A subsequent reference to
192.168.1.2 will be completely ignored by rgmanager. If there is no
"maxinstances" tag in the resource agent meta-data, there is no limit on
the maximum number of times the resource may be referenced.
Remember when I mentioned that parameters are passed as environment
variables to the resource scripts? In normal terms, here's how
rgmanager starts an IP address given the above parameters:
OCF_RESKEY_address="192.168.1.2" \
OCF_RESKEY_monitor_link="1" \
/usr/share/cluster/ip.sh start
Global vs. Inline Resources and the Resource Dependency Tree
Resources declared "inline" (or "private resources"), however, may
*NEVER* be reused. A resource is "global" if it is declared in the
<resources> block. A resource is "inline" if it is only assigned
attributes in the context of a service. In our previous example,
192.168.1.2 was a global resource. In the following example,
192.168.1.2 is an inline (or private) resource:
<rm>
<resources/>
<service name="foo">
<ip address="192.168.1.2" monitor_link="1"/>
</service>
</rm>
As stated previously, the "primary" attribute for a resource must be
unique across resource types. So, the following is illegal (the second
instance of 192.168.1.2 will be ignored):
<rm>
<resources/>
<service name="foo">
<ip address="192.168.1.2" monitor_link="1"/>
</service>
<service name="bar">
<ip address="192.168.1.2" monitor_link="1"/>
</service>
</rm>
Resources may depend on other resources. What we mean here is that a
user may have a resource "y" depend on resource "x". The rules are as
follows:
* A resource "y" is dependent on resource "x" if it is a descendent of
resource "y" in the tree.
* Resources must be started before dependent children may start.
* Resources must remain running until all dependent children are
stopped.
Here's a secret to help you remember: <service> is a resource, too. We
just mask the ability to create it in the <resources> block of
cluster.conf (to eliminate confusion). So, in order for a service to
be started/healthy, all of its parts must also be started/healthy.
More information about the Linux-cluster
mailing list