Hallo,
I have successfully set up a HB2 / DRBD cluster on two HP ProLiant GL380G5
(ILO2) with Heartbeat-Documentation provided for SLES10. I have configured
three groups in the cib - group_basic includes drbd-resource,
filesystem-resource and two virtual IP-address-resources. The second group,
group_a, includes a mysql-resource (lsb), a tomcat-resource (lsb,
JavaServiceWrapper) and a apache-httpd-resource (ocf). Last but not least
the third group, group_b, includes a single java application controlled by a
JavaServiceWrapper implementation (lsb). Group a and group b dependsAll
works fine for basic features, also restart failed resources, failover when
server is away...
So, now I have to configure resource-stickyness and
resource-failture-stickyness to prevent from ping-pong effects and to
failover when a resources fails more than three times. I also have to
configure STONITH to prevent from split-brain-scenarios.
I have found a lot of, mostly old, small documentations egg. mailing list
discussions or forums. Now I am missing the forrest through the trees, maybe
because I am to new on the heartbeat2 topic and there are much posibilities
to implement this feature.
Talked enough - here i will provide my cib:
crm_config:
<crm_config>
<cluster_property_set id="cib-bootstrap-options">
<attributes>
<nvpair id="cib-bootstrap-options-dc-version" name="dc-version"value
="2.1.3-node: a3184d5240c6e7032aef9cce6e5b7752ded544b3"/>
<nvpair id="default-resource-failure-stickiness" name="
default-resource-failure-stickiness" value="-100"/>
<nvpair id="default-resource-stickiness" name="
default-resource-stickiness" value="500"/>
</attributes>
</cluster_property_set>
</crm_config>
Resources:
<resources>
<group id="group_basis" ordered="true" collocated="true">
<primitive class="heartbeat"
id="drbddisk_resource"provider
="heartbeat" type="drbddisk">
<operations>
<op id="drbddisk_mon"interval
="120s" name="monitor" timeout="60s"/>
</operations>
<instance_attributes id="
drbddisk_inst_attr">
<attributes>
<nvpair id="
drbddisk_attr_1" name="1" value="r0"/>
</attributes>
</instance_attributes>
</primitive>
<primitive class="ocf" id="filesystem_resource"provider
="heartbeat" type="Filesystem">
<operations>
<op id="filesystem_mon"interval
="120s" name="monitor" timeout="60s"/>
</operations>
<instance_attributes id="
filesystem_inst_attr">
<attributes>
<nvpair id="
filesystem_attr_0" name="device" value="/dev/drbd0"/>
<nvpair id="
filesystem_attr_1" name="directory" value="/data"/>
<nvpair id="
filesystem_attr_2" name="fstype" value="ext3"/>
<nvpair id="
filesystem_attr_3" name="options" value="defaults"/>
</attributes>
</instance_attributes>
</primitive>
<primitive class="ocf" id="IPaddr_172_31_103_49"provider
="heartbeat" type="IPaddr">
<operations>
<op id="
IPaddr_172_31_103_49_mon" interval="5s" name="monitor" timeout="5s"/>
</operations>
<instance_attributes id="
IPaddr_172_31_103_49_inst_attr">
<attributes>
<nvpair id="
IPaddr_172_31_103_49_attr_0" name="ip" value="172.31.103.49"/>
<nvpair id="
IPaddr_172_31_103_49_attr_1" name="netmask" value="255.255.255.0"/>
<nvpair id="
IPaddr_172_31_103_49_attr_2" name="nic" value="eth0"/>
</attributes>
</instance_attributes>
</primitive>
<primitive class="ocf" id="IPaddr_172_31_102_49"provider
="heartbeat" type="IPaddr">
<operations>
<op id="
IPaddr_172_31_102_49_mon" interval="5s" name="monitor" timeout="5s"/>
</operations>
<instance_attributes id="
IPaddr_172_31_102_49_inst_attr">
<attributes>
<nvpair id="
IPaddr_172_31_102_49_attr_0" name="ip" value="172.31.102.49"/>
<nvpair id="
IPaddr_172_31_102_49_attr_1" name="netmask" value="255.255.255.0"/>
<nvpair id="
IPaddr_172_31_102_49_attr_2" name="nic" value="eth1"/>
</attributes>
</instance_attributes>
</primitive>
</group>
<group id="group_a" ordered="true" collocated="true">
<primitive id="mysql_resource" class="lsb" type="
mysql" provider="heartbeat">
<operations>
<op id="mysql_mon" interval="
60s" name="monitor" timeout="30s"/>
</operations>
</primitive>
<primitive id="tomcat-1_resource" class="lsb" type="
tomcat-1" provider="heartbeat">
<operations>
<op id="tomcat-1_mon"interval
="60s" name="monitor" timeout="30s"/>
</operations>
</primitive>
<primitive class="ocf" id="httpd2_resource" provider
="heartbeat" type="apache">
<operations>
<op id="httpd2_mon" interval
="60s" name="monitor" timeout="30s" start_delay="30s"/>
</operations>
<instance_attributes id="httpd2_inst_attr
">
<attributes>
<nvpair id="
httpd2_attr_0" name="configfile" value="/data/apache/default/conf/httpd.conf
"/>
<nvpair id="
httpd2_attr_1" name="httpd" value="/data/apache/default/bin/httpd"/>
<nvpair id="
httpd2_attr_2" name="statusurl" value="http://localhost/server-status"/>
</attributes>
</instance_attributes>
</primitive>
</group>
<group id="group_b" ordered="true" collocated="true">
<primitive id="java-app-1_resource" class="lsb" type
="java-app-1" provider="heartbeat">
<operations>
<op id="java-app-1_mon"interval
="60s" name="monitor" timeout="30s"/>
</operations>
</primitive>
</group>
</resources>
And now the constraints:
<constraints>
<rsc_colocation id="a_on_basis" to="group_basis" from="group_a" score="
INFINITY"/>
<rsc_colocation id="b_on_basis" to="group_basis" from="group_b" score="
INFINITY"/>
<rsc_order id="basis_before_a" from="group_a" action="start" to="
group_basis" to_action="start" type="after"/>
<rsc_order id="basis_before_b" from="group_b" action="start" to="
group_basis" to_action="start" type="after"/>
</constraints>
And here is the STONITH-clone-resource I tried:
<clone id="CL_ilo_nodeA">
<instance_attributes id="CL_ilo_nodeA_instance_attrs">
<attributes>
<nvpair id="CL_ilo_nodeA_clone_max" name="clone_max" value="1"/>
<nvpair id="CL_ilo_nodeA_clone_node_max" name="clone_node_max"value
="1"/>
</attributes>
</instance_attributes>
<primitive class="STONITH" type="external/riloe" provider="heartbeat" id
="R_ilo_nodeA">
<instance_attributes id="R_ilo_nodeA_instance_attrs">
<attributes>
<nvpair name="target_role" id="R_ilo_nodeA_target_role"value
="started"/>
<nvpair id="R_ilo_nodeA_hostlist" name="hostlist" value="
nodeA"/>
<nvpair id="R_ilo_nodeA_ilo_hostname" name="ilo_hostname"value
="172.31.102.149"/>
<nvpair id="R_ilo_nodeA_ilo_user" name="ilo_user" value="
user"/>
<nvpair id="R_ilo_nodeA_ilo_password" name="ilo_password"value
="password"/>
<nvpair id="R_ilo_nodeA_ilo_can_reset" name="ilo_can_reset"value
="1"/>
<nvpair id="R_ilo_nodeA_ilo_protocol" name="ilo_protocol"value
="2.0"/>
<nvpair id="R_ilo_nodeA_ilo_powerdown_method" name="
ilo_powerdown_method" value="button"/>
</attributes>
</instance_attributes>
<operations>
<op id="ilo_nodeA_mon" name="monitor" interval="15"
timeout="15"start_delay
="15" disabled="false" role="Started"/>
</operations>
</primitive>
</clone>
I have stopped manually the mysql-resource minimum ten times but no
cluster-failover was done by heartbeat. I also disabled the hole
mysql-script so that crm_mon displayed the resource as UNMANAGED (FAILED),
but no the server was still running without getting restarted or stopped
through STONITH.
What I am doing wrong?
I hope anyone can give me the winning hint or provide me his configuration.
Thanks,
Christian
_______________________________________________
Linux-HA mailing list
[email protected]
http://lists.linux-ha.org/mailman/listinfo/linux-ha
See also: http://linux-ha.org/ReportingProblems