[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

Re: [Linux-cluster] system-config-cluster problem



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>      


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]