Matteo Catanese wrote:
I've setup a cluster some month ago.
Cluster is working , but still not in production.
Today, after summer break, i did all the updates for my rhat and CS
First i disabled all services, then i patched one machine and
rebooted, then the other one and rebooted.
Cluster works perfectly:
[root@lvzbe1 ~]# uname -a
Linux lvzbe1.lavazza.it 2.6.9-42.0.2.ELsmp #1 SMP Thu Aug 17 18:00:32
EDT 2006 i686 i686 i386 GNU/Linux
[root@lvzbe1 ~]# clustat -v
clustat version 1.9.53
Connected via: CMAN/SM Plugin v1.1.7.1
[root@lvzbe1 ~]# clustat
Member Status: Quorate
Member Name Status
------ ---- ------
lvzbe1 Online, Local, rgmanager
lvzbe2 Online, rgmanager
Service Name Owner (Last) State
------- ---- ----- ------ -----
oracle lvzbe1 started
[root@lvzbe1 ~]#
But when i try to run system-config-cluster,it pops out:
Poorly Formed XML error
A problem was encoutered while reading configuration file /etc/
cluster/clluster.conf.
Details or the error appear below. Click the "New" button to create a
new configuration file.
To continue anyway(Not Recommended!), click the "ok" button.
Relax-NG validity error : Extra element rm in interleave
/etc/cluster/cluster.conf:35: element rm: Relax-NG validity error :
Element cluster failed to validate content
/etc/cluster/cluster.conf fails to validate
Hi Matteo,
Here is why the conf file is failing validation:
In your conf lines specifying your two FS's, you have an fstype
attribute but no fsid attribute. I spoke with Lon, who is the Grand
Resource Guru, and he says that the two should be exclusive, that is, an
fsid should not be necessary just because you are specifying an fstype.
So this is a bug in the relaxNG schema validation file. A fix for this
will be in the next update, and until then, using the conf file that you
attached, please just disregard the warning message. For completeness
sake, I am attaching a fixed version of the relaxNG file that you can
drop into /usr/share/system-config-cluster/misc, if you want.
Thanks for finding this issue.
-Jim
<grammar datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes" xmlns="http://relaxng.org/ns/structure/1.0">
<start>
<element name="cluster">
<attribute name="name"/>
<attribute name="config_version"/>
<optional>
<attribute name="alias"/>
</optional>
<!-- The choice section below brackets two very large group blocks. -->
<!-- The first group specifies schema for a cman/dlm cluster, and -->
<!-- the second for a gulm cluster -->
<interleave>
<choice>
<choice>
<group>
<ref name="cman_definition"/>
<ref name="cman_clusternodes"/>
</group>
<group>
<ref name="cman_clusternodes"/>
<ref name="cman_definition"/>
</group>
</choice>
<choice>
<group>
<ref name="gulm_definition"/>
<ref name="gulm_clusternodes"/>
</group>
<group>
<ref name="gulm_clusternodes"/>
<ref name="gulm_definition"/>
</group>
</choice>
</choice>
<optional>
<element name="fencedevices">
<zeroOrMore>
<element name="fencedevice">
<attribute name="name">
<data type="ID"/>
</attribute>
<attribute name="agent"/>
<optional>
<choice>
<!-- RPS10 -->
<group>
<attribute name="device" />
<attribute name="port" />
</group>
<!-- APC, Brocade, McData, SANBox2, Bladecenter,bullpap, ipmilan -->
<group>
<attribute name="ipaddr"/>
<attribute name="login"/>
<attribute name="passwd"/>
</group>
<!-- WTI, Vixel -->
<group>
<attribute name="ipaddr"/>
<attribute name="passwd"/>
</group>
<!-- ILO -->
<group>
<attribute name="hostname"/>
<attribute name="login"/>
<attribute name="passwd"/>
</group>
<!-- GNBD -->
<group>
<attribute name="servers"/>
</group>
<!-- Egenera -->
<group>
<attribute name="cserver"/>
</group>
<!-- xCAT -->
<group>
<attribute name="rpowerpath"/>
</group>
<!-- manual -->
<group>
<optional>
<empty/>
</optional>
</group>
</choice>
</optional>
</element>
</zeroOrMore>
</element>
</optional>
<optional>
<element name="rm">
<interleave>
<optional>
<element name="failoverdomains">
<zeroOrMore>
<element name="failoverdomain">
<attribute name="name"/>
<optional>
<attribute name="ordered"/>
</optional>
<optional>
<attribute name="restricted"/>
</optional>
<zeroOrMore>
<element name="failoverdomainnode">
<optional>
<attribute name="priority"/>
</optional>
<attribute name="name"/>
</element>
</zeroOrMore>
</element>
</zeroOrMore>
</element>
</optional> <!-- End of failoverdomains block -->
<optional>
<element name="resources">
<zeroOrMore>
<ref name="ALLCHILDREN"/>
</zeroOrMore>
</element>
</optional>
<zeroOrMore>
<element name="service">
<attribute name="name"/>
<optional>
<attribute name="domain"/>
</optional>
<optional>
<attribute name="autostart"/>
</optional>
<optional>
<attribute name="hardrecovery"/>
</optional>
<optional>
<attribute name="exclusive"/>
</optional>
<optional>
<attribute name="recovery"/>
</optional>
<zeroOrMore>
<ref name="ALLCHILDREN"/>
</zeroOrMore>
</element>
</zeroOrMore>
</interleave>
</element>
</optional>
<optional>
<element name="fence_daemon">
<optional>
<attribute name="post_join_delay"/>
</optional>
<optional>
<attribute name="post_fail_delay"/>
</optional>
<optional>
<attribute name="clean_start"/>
</optional>
</element>
</optional>
</interleave>
</element> <!-- cluster end -->
</start>
<define name="cman_definition">
<element name="cman">
<choice>
<group>
<attribute name="two_node"/>
<attribute name="expected_votes">
<data type="positiveInteger"/>
</attribute>
</group>
<group>
<optional>
<attribute name="expected_votes">
<data type="positiveInteger"/>
</attribute>
</optional>
</group>
</choice>
<optional>
<element name="multicast">
<attribute name="addr"/>
</element>
</optional>
</element>
</define>
<define name="cman_clusternodes">
<element name="clusternodes">
<zeroOrMore>
<element name="clusternode">
<attribute name="name">
<data type="ID"/>
</attribute>
<optional>
<attribute name="votes">
<data type="positiveInteger"/>
</attribute>
</optional>
<optional>
<attribute name="nodeid">
<data type="positiveInteger"/>
</attribute>
</optional>
<interleave>
<optional>
<element name="multicast">
<attribute name="addr"/>
<optional>
<attribute name="interface"/>
</optional>
</element>
</optional>
<optional>
<ref name="FENCE"/>
</optional>
</interleave>
</element>
</zeroOrMore>
</element>
</define>
<define name="gulm_definition">
<element name="gulm">
<optional>
<attribute name="heartbeat_rate">
<data type="positiveInteger"/>
</attribute>
</optional>
<optional>
<attribute name="allowed_misses">
<data type="positiveInteger"/>
</attribute>
</optional>
<optional>
<attribute name="coreport">
<data type="positiveInteger"/>
</attribute>
</optional>
<optional>
<attribute name="ltpxport">
<data type="positiveInteger"/>
</attribute>
</optional>
<optional>
<attribute name="ltport">
<data type="positiveInteger"/>
</attribute>
</optional>
<optional>
<attribute name="lt_partitions">
<data type="positiveInteger"/>
</attribute>
</optional>
<optional>
<attribute name="master_scan_delay">
<data type="positiveInteger"/>
</attribute>
</optional>
<optional>
<attribute name="new_connection_timeout">
<data type="positiveInteger"/>
</attribute>
</optional>
<oneOrMore>
<element name="lockserver">
<attribute name="name">
<data type="IDREF"/>
</attribute>
</element>
</oneOrMore>
</element>
</define>
<define name="gulm_clusternodes">
<element name="clusternodes">
<zeroOrMore>
<element name="clusternode">
<attribute name="name">
<data type="ID"/>
</attribute>
<optional>
<attribute name="votes">
<data type="positiveInteger"/>
</attribute>
</optional>
<optional>
<ref name="FENCE"/>
</optional>
</element>
</zeroOrMore>
</element>
</define>
<define name="SAMBA">
<element name="smb">
<choice>
<group>
<attribute name="ref"/>
</group>
<group>
<attribute name="name"/>
<optional>
<attribute name="workgroup"/>
</optional>
</group>
</choice>
<optional>
<ref name="CHILDREN"/>
</optional>
</element>
</define>
<define name="IP">
<element name="ip">
<choice>
<group>
<attribute name="ref"/>
</group>
<group>
<attribute name="address"/>
<optional>
<attribute name="monitor_link"/>
</optional>
<optional>
<attribute name="family"/>
</optional>
</group>
</choice>
<optional>
<ref name="CHILDREN"/>
</optional>
</element>
</define>
<define name="FS">
<element name="fs">
<choice>
<group>
<attribute name="ref"/>
</group>
<group>
<attribute name="name"/>
<attribute name="mountpoint"/>
<attribute name="device"/>
<optional>
<attribute name="fsid"/>
</optional>
<optional>
<attribute name="fstype"/>
</optional>
<optional>
<attribute name="force_unmount"/>
</optional>
<optional>
<attribute name="self_fence"/>
</optional>
<optional>
<attribute name="force_fsck"/>
</optional>
<optional>
<attribute name="options"/>
</optional>
</group>
</choice>
<zeroOrMore>
<choice>
<ref name="NFSEXPORT"/>
<ref name="CHILDREN"/>
</choice>
</zeroOrMore>
</element>
</define>
<define name="CLUSTERFS">
<element name="clusterfs">
<choice>
<group>
<attribute name="ref"/>
</group>
<group>
<attribute name="name"/>
<attribute name="mountpoint"/>
<attribute name="device"/>
<optional>
<attribute name="fsid"/>
<attribute name="fstype"/>
</optional>
<optional>
<attribute name="force_unmount"/>
</optional>
<optional>
<attribute name="options"/>
</optional>
</group>
</choice>
<zeroOrMore>
<choice>
<ref name="NFSEXPORT"/>
<ref name="CHILDREN"/>
</choice>
</zeroOrMore>
</element>
</define>
<define name="NETFS">
<element name="netfs">
<choice>
<group>
<attribute name="ref"/>
</group>
<group>
<attribute name="name"/>
<attribute name="mountpoint"/>
<attribute name="host"/>
<attribute name="export"/>
<optional>
<attribute name="fstype"/>
</optional>
<optional>
<attribute name="force_unmount"/>
</optional>
<optional>
<attribute name="options"/>
</optional>
</group>
</choice>
<optional>
<ref name="CHILDREN"/>
</optional>
</element>
</define>
<define name="NFSEXPORT">
<element name="nfsexport">
<choice>
<attribute name="ref"/>
<attribute name="name"/>
</choice>
<zeroOrMore>
<ref name="ALLCHILDREN"/>
</zeroOrMore>
</element>
</define>
<define name="NFSCLIENT">
<element name="nfsclient">
<choice>
<group>
<attribute name="ref"/>
</group>
<group>
<attribute name="name"/>
<attribute name="target"/>
<optional>
<attribute name="options"/>
</optional>
</group>
</choice>
</element>
</define>
<define name="SCRIPT">
<element name="script">
<choice>
<group>
<attribute name="ref"/>
</group>
<group>
<attribute name="name"/>
<attribute name="file"/>
</group>
</choice>
<optional>
<ref name="CHILDREN"/>
</optional>
</element>
</define>
<define name="CHILD">
<!-- for recursion to work properly, CHILD may be referenced at CHILDREN only -->
<zeroOrMore>
<choice>
<ref name="SCRIPT"/>
<ref name="IP"/>
<ref name="NETFS"/>
<ref name="CLUSTERFS"/>
<ref name="FS"/>
<ref name="SAMBA"/>
</choice>
</zeroOrMore>
</define>
<define name="CHILDREN">
<zeroOrMore>
<!-- <ref name="CHILD"/> for now everything can be a child -->
<ref name="ALLCHILDREN"/>
</zeroOrMore>
</define>
<define name="ALLCHILDREN">
<zeroOrMore>
<choice>
<ref name="CHILD"/>
<ref name="NFSEXPORT"/>
<ref name="NFSCLIENT"/>
</choice>
</zeroOrMore>
</define>
<define name="FENCE">
<element name="fence">
<zeroOrMore>
<element name="method">
<attribute name="name"/>
<zeroOrMore>
<element name="device">
<attribute name="name">
<data type="IDREF"/>
</attribute>
<choice>
<!-- WTI, Brocade, Vixel, McData, SANBox2 -->
<group>
<attribute name="port"/>
<optional>
<attribute name="option"/>
</optional>
</group>
<!-- APC -->
<group>
<attribute name="port"/>
<attribute name="switch"/>
</group>
<!-- BladeCenter -->
<group>
<attribute name="blade"/>
</group>
<!-- xCAT, manual -->
<group>
<attribute name="nodename"/>
</group>
<!-- GNBD -->
<group>
<attribute name="nodename"/>
<optional>
<attribute name="ipaddr"/>
</optional>
</group>
<!-- bullpap -->
<group>
<attribute name="domain"/>
</group>
<!-- Egenera -->
<group>
<attribute name="lpan"/>
<attribute name="pserver"/>
</group>
<!-- ILO, ipmilan -->
<group>
<optional>
<empty/>
</optional>
</group>
</choice>
</element>
</zeroOrMore>
</element>
</zeroOrMore>
</element>
</define>
</grammar>
--
Linux-cluster mailing list
Linux-cluster@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/linux-cluster