快捷搜索:   nginx

linux heartbeat crm 配置

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

为了达到我们的目标就要采用crm(cluster resource management)模式了。

首先,先按默认模式heartbeat(详见heartbeat新手上路)。

默认模式配置成功后,再按下面的步骤操作:

1)在ha.cf里面增加

crm on

2)将haresources资源文件转换成 cib.xml文件,2.1.3自带有转换脚本

/usr/local/lib64/heartbeat/haresources2cib.py haresources

输出文件在/usr/local/var/lib /heartbeat/crm/cib.xml

3)如果hacluster和haclient用户和用户组是在安装heartbeat之后创建的话,则需要执行下面命令修改权限

修改heartbeat目录权限,可以用以下命令:

find / -type d -name "heartbeat" -exec chown -R hacluster {} ;

find / -type d -name "heartbeat" -exec chgrp -R haclient {} ;

4)在2.0的版本中ipfail与crm 模式有冲突,所以在ha.cf中不可打开ipfail。

5) cib.xml文件的修改

如果在IPaddr中有下面两行,则删除:

<nvpair id="IPaddr_172_18_57_83_attr_1" name="nic" value="24"/>

<nvpair id="IPaddr_172_18_57_83_attr_2" name="cidr_netmask" value="bond0"/>

2.1.3版本生成的cib.xml文件中,资源是ocf格式的,而它自带的mysql角本是无法启动mysql的,所以需要修改,有两种方法。在修改前先介绍一下ocf和lsb格式的区别:

LSB格式的角本必须支持status功能,必须能接收start,stop,status,三个参数;而如果是OCF格式,则必须支持start,stop,monitor三个参数.其中status和monitor参数是用来监控资源的,非常重要.

例如LSB风格的脚本,运行./mysql status时候,

返回值包含OK或则running则表示资源正常

返回值包含stopped或者No则表示资源不正常。

假如是OCF风格的脚本,运行./mysql monitor时候,

返回0表示资源是正常的,

返回7表示资源出现问题.

ocf格式的启动角本在 /usr/lib/ocf/resource.d/heartbeat(也许你的机器上目录不是这个,可以搜索ocf来查找)

lsb格式的启动角本在 /usr/lib/lsb/resource.d/heartbeat目录下。

两种修改方法

1.修改cib.xml,将mysql的ocf改成lsb。然后在/usr/lib/lsb/resource.d/heartbeat(如果该目录不存在,则手工创建,并将权限赋给hacluster:haclient)下面执行ln -s /etc/init.d/mysql mysql。

注意,如果修改过cib.xml文件后,需要将同目录下面其他文件均删除!

2.修改/usr /lib/ocf/resource.d/heartbeat下面的mysql的角本,使之能正常工作。或者将/etc/init.d/mysql拷过来,修改使它支持monitor操作

6) 然后启动heartbeat即可。Service heartbeat start.

7)如果mysql采用双master的话,则在stop资源后,记的将mysql手动起来。

Heartbeat CRM模式管理

1)查看所有资源

[root@alssme_probe3 sbin]# crm_resource -L

Resource Group: group_1

IPaddr_172_18_158_111 (heartbeat::ocf:IPaddr)

mysql_2 (lsb:mysql)

2)查看资源跑在哪个节点上

[root@alssme_probe3 sbin]# crm_resource -W -r mysql_2

resource mysql_2 is running on: alssme_probe3

4)启动/停止资源(cluster不会发生切换,手工停mysql,将会重新启动或者发生切换)

[root@alssme_probe4 crm]# crm_resource -r mysql_2 -p target_role -v started

[root@alssme_probe3 sbin]# crm_resource -r mysql_2 -p target_role -v stopped

5)查看资源在cib.xml中的定义

[root@alssme_probe3 sbin]# crm_resource -x -r mysql_2

mysql_2 (lsb:mysql): Started alssme_probe3

raw xml:

<primitive class="lsb" provider="heartbeat" type="mysql" id="mysql_2">

<operations>

<op id="mysql_2_mon" interval="60s" name="monitor" timeout="30s"/>

</operations>

<instance_attributes id="mysql_2">

<attributes>

<nvpair name="target_role" id="mysql_2-target_role" value="started"/>

</attributes>

</instance_attributes>

</primitive>

即每60秒检测资源运行情况,如果发现资源不在,则尝试启动资源,如果30s后还未启动成功,则资源切换向另节点。时间可以修改( mysql一般建议采用这个时间值)。

6)将资源移向指定节点

crm_resource -M -r mysql_2 -H alssme_probe4

7)允许资源回到正常的节点

crm_resource -U -r mysql_2

NOTE: the values of resource_stickiness and default_resource_stickiness may mean that it doesnt move back. In such cases, you should use -M to move it back and then run this command.

9)将资源从CRM中删除

crm_resource -D -r mysql -t primitive

10)将资源组从CRM中删除

crm_resource -D -r my_first_group -t group

顶(0)
踩(0)

您可能还会对下面的文章感兴趣:

最新评论