HeartBeat基于CRM进行资源管理配置

资料来源:马哥教育

               http://www.linux-ha.org/doc/users-guide/users-guide.html
CRM: Cluster Resources Manager
为那些非ha-ware的应用程序提供调用的基础平台
一般情况下,一个高可用服务包括多个资源,从属于同一个服务的多个资源必须运行于一个节点上,默认情况下是平列的(做完该实验相信你对集群资源节点的相关机制会有一定的认识)


配置过程:(这里我继续使用上节的环境)

http://junwang.blog.51cto.com/5050337/1380563

# ssh node2 'service heartbeat stop'
# service heartbeat stop
# vim ha.cf

mcast eth0 225.0.100.1 694 1 0
crm     respawn
#CRM与Resources并不兼容,如果ha.cf中定义了CRM,HA服务不会去读取/etc/ha.d/haresources配置文件。如果你执意要使用这种配置,也是行的,下面看一下他的配置方法:
         # cd /usr/lib/heartbeat
         # ./haresources2cib.py /etc/ha.d/haresources

当然了,我们这里主要介绍crm配置方法,下面继续
# /usr/lib/heartbeat/ha_propagate //heartbeat自带的复制本节点的ha.cf&authkeys文件到其它节点

查看日志:
# tail -f /var/log/messages
 info: update_dc: Set DC to node2.neo.com (2.0)
# netstat -tnlp
 tcp        0      0 0.0.0.0:5560                0.0.0.0:*                   LISTEN      4877/mgmtd
此时我们可以使用各种crm/cib的命令行工具
下面我们通过heartbeat-gui配置集群服务
 由于使用GUI配置需要heartbeat包自带的帐号hacluster连接,所以需要为其设置密码
 # passwd hacluster
 # hb_gui

HeartBeat基于CRM进行资源管理配置_第1张图片

HeartBeat基于CRM进行资源管理配置_第2张图片

HeartBeat基于CRM进行资源管理配置_第3张图片

注意:这里配置过程我们先建立group,然后依先后顺序建立资源,并且需要连接到DC节点上进行配置,查看哪个节点是DC我们可以使用crm_mon进行查看
然后测试浏览器是否能访问node2,而后我们手动测试将node2设置为standby,看其是否能将服务转移到node1上来

HeartBeat基于CRM进行资源管理配置_第4张图片

添加NFS共享存储到该资源
注意:这里需要按次序新建资源节点,如果不能在GUI界面调整上下次序需要删除原有资源再新建(由于httpd与nfs不在同一台主机,我们肯定是先启动文件服务再启动httpd服务吧),并且要记得在删除资源时需要清除缓存数据,否则可能会影响后面启动

HeartBeat基于CRM进行资源管理配置_第5张图片

以上是通过组的方式创建的

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++


下面我们通过约束的方式创建集群:
 分别建立资源

HeartBeat基于CRM进行资源管理配置_第6张图片

HeartBeat基于CRM进行资源管理配置_第7张图片

上图可以看出,如果我们现在就启动,你会看到各资源会运行在不同节点上,这显然不符合我们的要求

创建Colocations

HeartBeat基于CRM进行资源管理配置_第8张图片

HeartBeat基于CRM进行资源管理配置_第9张图片

HeartBeat基于CRM进行资源管理配置_第10张图片

这时我们可以看到各资源都运行到同一节点上了


下面继续设定资源启动次序

HeartBeat基于CRM进行资源管理配置_第11张图片

HeartBeat基于CRM进行资源管理配置_第12张图片

我们手动资源迁移时可以看到它的启动和关闭次序
 全局参数中:
 Default Resource Stickiness: 当设置为大于0的值时,表示资源更趋向运行于当前节点上
 我们也可以设定Locations(位置约束)值来定义资源运行在哪个节点上
 总结,我们的资源到底是运行于哪一节点是看:这个组内或节点的所有资源的粘性值,约束值的和

当我们强制断电某一节点,heartbeat会尝试与这一节点保持通信,所以它没有关闭服务转移的速度快,另外如果我们将设置Stickiness和Locations值,更趋向于运行于这一节点,且heartbeat开机自动启动,当它重新上线时,所有资源将自动切换到这一节点上。