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
- 最新评论