日期:2014-05-16  浏览次数:20595 次

Linux高可用性方案之Heartbeat的CRM配置(原创)

heartbeat默认模式是没法监控资源的,也就是说其中某个资源要是crash掉了,也不会发生任何动作,它只有当它认为对方机器dead后才会发生动作,也就是机器crashed,网络断掉了之类。这显然没法达到我们的目标。为了达到我们的目标就要采用crm(cluster resource management)模式了。

本文需要实现的目标,让ha自动监控资源的运行状态。 启动服务ip为192.168.0.222,自动运行脚本echo.sh
echo.sh脚本内容如下
#!/bin/bash
echo "ii" >> /var/lib/heartbeat/crm/1.txt
exit 0

配置crm
首先,先按默认模式安装、配置Heartbeat读者可参见
http://czmmiao.iteye.com/blog/1174010
默认模式配置成功后在ha.cf里面增加
crm on
将haresources资源文件转换成 cib.xml文件,2.1.3自带有转换脚本
#/usr/lib/heartbeat/haresources2cib.py haresources
输出文件在/var/lib /heartbeat/crm/cib.xml
如果hacluster和haclient用户和用户组是在安装heartbeat之后创建的话,则需要执行下面命令修改权限
修改heartbeat目录权限,可以用以下命令:
#find / -type d -name "heartbeat" -exec chown -R hacluster {} ;
#find / -type d -name "heartbeat" -exec chgrp -R haclient {} ;

在2.0的版本中ipfail与crm 模式有冲突,所以在ha.cf中不可打开ipfail。
cib.xml文件的修改
Heartbeat的cib.xml文件资源有两种配置风格分别是ocf和lsb在修改前先介绍一下ocf和lsb格式的区别:
LSB格式的角本必须支持status功能,必须能接收start,stop,status,三个参数。
lsb格式的启动角本在 /usr/lib/lsb/resource.d/heartbeat目录下。
例如LSB风格的脚本,运行./mysql status时候,
返回值包含OK或则running则表示资源正常
返回值包含stopped或者No则表示资源不正常。
OCF格式,则必须支持start,stop,monitor三个参数.其中status和monitor参数是用来监控资源的。 ocf格式的启动脚本在/usr/lib/ocf/resource.d/heartbeat(也许你的机器上目录不是这个,可以搜索ocf来查找)
假如是OCF风格的脚本,运行./mysql monitor时候,
返回0表示资源是正常的,
返回7表示资源出现问题.
在Heartbeat2.1.3中默认的资源配置风格为ocf,如果需要将资源的配置风格聪ocf修改为lsb有两种修改方法
1.修改cib.xml,将资源的ocf改成lsb。
将脚本文件拷贝至 /usr/lib/lsb/resource.d/heartbeat(如果该目录不存在,则手工创建,并将权限赋给hacluster:haclient)
2.修改/usr /lib/ocf/resource.d/heartbeat下面的脚本,使之能正常工作。或者将/etc/init.d/下的脚本拷过来,修改使它支持monitor操作
配置完成后启动heartbeat服务

#/etc/init.d/heartbeat start
创建群集资源
可以创建以下类型的资源
原始资源:原始资源是最基本的资源类型。
资源组:资源组包含一系列需要放置在一起、按顺序启动和以反序停止的资源。
克隆资源:克隆资源是可以在多个主机上处于活动状态的资源。如果各个资源代理支持,则任何资源均可克隆。

主资源:主资源是一种特殊的克隆资源,主资源可以具有多种模式。主资源必须只能包含一个组或一个常规资源。
资源选项
您可以为添加的每个资源定义选项。群集使用这些选项来决定资源的行为方式,它们会告知 CRM 如何对待特定的资源。可使用 crm_resource –meta 命令或 GUI 来设置资源选项

原始资源选项
priority 如果不允许所有的资源都处于活动状态,群集会停止优先级较低的资源以便保持较高优先级资源处于活动状态。

target-role 群集应试图将此资源保持在何种状态,允许的值:Stopped 和 Started。
is-managed 是否允许群集启动和停止资源,允许的值:true和 false。
resource-stickiness 资源留在所处位置的自愿程度如何,默认为default- resource-stickiness 的值。
migration-threshold 节点上的此资源应发生多少故障后才能确定该节点没有资格主管此资源,默认值:none。
multiple-active 如果发现资源在多个节点上活动,群集该如何操作,允许的值:block(将资源标记为未受管)、stop_only 和 stop_start。
failure-timeout 在恢复为如同未发生故障一样正常工作(并允许资源返回它发生故障的节点)之前,需要等待几秒钟,默认值:never。
资源操作
默认情况下,群集将不会确保您的资源一直正常。要指示群集如此操作,需要向资源的定义中添加一个监视操作。可为所有类或资源代理添加监视操作。