[Linux-cluster] interdependency between different services possible?

Gianluca Cecchi gianluca.cecchi at gmail.com
Fri Feb 6 11:41:12 UTC 2009


On Thu, 5 Feb 2009 15:15:57 +0000 jumanjiman wrote:
> A guiding principle for cluser suite is that an ha service (resource group) should be able to fail over w/o impacting any other RG.
Ok, it does make sense.
I would like to dig to dependencies a little more, to understand
better the degree of flexibility and the correct approach.
I take for example a DB as application, but I think the scenario could
be similar for other apps.
Tipically if the DB is Oracle you would spread datafiles and other
structures on several different filesystems.
Based on above considerations, if I have a 2-nodes cluster where I
want to put 2 oracle instances on HA I should make something like
service1 with resources ip1, fs1, fs2, fs3, orasid1
service2 with resources ip2, fs4, fs5, fs6, orasid2

This is the maximum flexibility so that at run-time I can get the two
instances on different nodes and leverage the overall power available,
keeping one node strong enough to be able to sustain the load of both
the instances in case of failure/maintenance.
But it could be a problem if I have not so many different LUNs
available on the SAN for example.
Or if I have problems to bind the two instances to different ip addresses.

Some questions:
1) In this scenario is it correct to say that orasid1, being a script,
is started as the latest resource, but if for example fs3 fails to
mount, the RG attempts anyway to start the orasid1 instance, because
there is not an explicit dependency upon other resources? Or is the
script attempted to be run only if all the other fs resources have
started ok, by default?
If not so, I can put a dependency, but can it be on all the three
filesystems reosurces and not only one of them?
I see something such as this into the docs
<service name="foo" ...>
    <fs name="myfs" ...>
        <script name="script_child"/>
    </fs>
</service>

Can I put more file systems directives in a single <fs>  </fs>
section? In this case I could set the oracle script a dependency of
the success of all the three mount operations....

2) Suppose a scenario where for some reason I want both the two
instances to be kept together. In this case I would have
                <service autostart="1" name="sid1and2">
                        <ip ref="192.168.0.1"/>
                        <fs ref="fs1"/>
                        <fs ref="fs2"/>
                        <fs ref="fs3"/>
                        <script ref="sid1"/>
                        <script ref="sid2"/>
                </service>

A possible problem would arise if I want to do planned maintenance for
sid1 and so shutdown this instance, but without interfering with sid2.
RG will restart sid1 automagically...
I can solve this step setting up the oracle scripts and let them use a
sort of lock file (eg MAINTENANCE_SID1.lock) so that if the file
exists it corresponds to an OK status for the resource.
Anyway in this scenario, if an unplanned problem arises and sid2
fails, RG will try to restart it in place (can I set how many times
and/or for how log RG tries this?) and then if it doesn't succeed, it
will try to restart all the service's resources on the other  node, so
compromising sid1 too. Is this correct? Any bypass?

thanks fro your comments

Bye,
Gianluca




More information about the Linux-cluster mailing list