六、crm资源管理器详解
1.haresource 资源管理器
haresource 是heartbeat v1 内置的资源管理器,功能比较简单,不支持图形化管理。到了heartbeat v2时,有了更加强大的资源管理器crm,但同时为了兼容heartbeat v1,在heartbeat v2中同时有haresource与crm资源管理器。在上一篇博文中我们简介了haresource资源管理器( ),在这一篇博文中我们主要讲解,crm资源管理器。
2. crm 资源管理器
说明:crm资源管理器是不兼容haresource资源管理器的配置文件haresource,所以我们在/etc/ha.d/haresources配置的资源都是不能使用的,所以我们得重新配置。下面我们说一下,crm资源管理器的配置方式。
(1).crm配置方式
命令行配置:
[root@node1 ~]# crm
crmadmin crm_diff crm_master crm_resource crm_standby crm_verify
crm_attribute crm_failcount crm_mon crm_sh crm_uuid
图形界面配置:
1 [root@node1 ~]# hb_gui
注:本文我们主要讲解,图形界面的配置方式,在下一篇博文中我们主要讲解命令行的配置方式 。(heartbeat v2中的命令行配置方式,功能还不够强大,到了heartbeat v3中crm命令行配置方式,非常的强大,到时我们就不用图形界面的方式配置,全部用命令行方式配置)
(2).crm配置文件cib
路径:
[root@node1 ~]# cd /var/lib/heartbeat/crm/
[root@node1 crm]# ll
总计 16
-rw------- 2 hacluster haclient 885 08-10 10:34 cib.xml
-rw------- 2 hacluster haclient 885 08-10 10:34 cib.xml.last
-rw-r--r-- 2 hacluster haclient 32 08-10 10:34 cib.xml.sig
-rw-r--r-- 2 hacluster haclient 32 08-10 10:34 cib.xml.sig.last
查看:
[root@node1 crm]# vim cib.xml
<cib generated="true" admin_epoch="0" have_quorum="true" ignore_dtd="false" num_peers="2" ccm_transition="2" cib_feature_revision="2.0" crm_feature_set="2.0" epoch="3" dc_uuid="4a0c6580-3e21-4523-a3bb-a921b3f487c0" num_updates="4" cib-last-written="Sat Aug 10 10:34:59 2013">
<configuration>
<crm_config>
<cluster_property_set>
<attributes>
<nvpair value="2.1.4-node: aa909246edb386137b986c5773344b98c6969999"/>
</attributes>
</cluster_property_set>
</crm_config>
<nodes>
<node uname="node2.test.com" type="normal"/>
<node uname="node1.test.com" type="normal"/>
</nodes>
<resources/>
<constraints/>
</configuration>
</cib>
说明:大家可以看到cib(Cluster Information Base 集群信息库)配置文件是xml格式的,对于不懂xml的博文来说,很难配置,还好有图形配置方式,但是看懂应该不难。
(3).配置crm
说明:要使用crm资源管理器,我们得配置一下用户名和密码,heartbeat安装好以后会默认给我新建一个hacluster用户,用来管理集群资源的,下面我们先来给hacluster配置一下密码hacluster,即用户名为hacluster,密码也为hacluster。(注,crm配置文件在DC上才会生效)
1234567891011 [root@node1 crm]# tail /etc/passwd
rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin
nfsnobody:x:4294967294:4294967294:Anonymous NFS User:/var/lib/nfs:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin)
avahi:x:70:70:Avahi daemon:/:/sbin/nologin
xfs:x:43:43:X Font Server:/etc/X11/fs:/sbin/nologin
haldaemon:x:68:68:HAL daemon:/:/sbin/nologin
avahi-autoipd:x:100:104:avahi-autoipd:/var/lib/avahi-autoipd:/sbin/nologin
hacluster:x:101:105:heartbeat user:/var/lib/heartbeat/cores/hacluster:/sbin/nologin
apache:x:48:48:Apache:/var/www:/sbin/nologin
ntp:x:38:38::/etc/ntp:/sbin/nologin
node1:
[root@node1 crm]# passwd hacluster
Changing password for user hacluster.
New UNIX password:
BAD PASSWORD: it is based on a dictionary word
Retype new UNIX password:
passwd: all authentication tokens updated successfully.
node2:
[root@node2 ~]# passwd hacluster
Changing password for user hacluster.
New UNIX password:
BAD PASSWORD: it is based on a dictionary word
Retype new UNIX password:
passwd: all authentication tokens updated successfully.
(4).启动crm管理器
[root@node1 ~]# hb_gui
Traceback (most recent call last):
File "/usr/bin/hb_gui", line 41, in ?
import gtk, gtk.glade, gobject
File "/usr/lib64/Python2.4/site-packages/gtk-2.0/gtk/__init__.py", line 76, in ?
_init()
File "/usr/lib64/python2.4/site-packages/gtk-2.0/gtk/__init__.py", line 64, in _init
_gtk.init_check()
RuntimeError: could not open display
在xshell启动hb_gui出错下面我们来说一下,解决方法
具体步骤如下:File –> Properties –> SSH –> Tunneling –> Forward X11 connections to: Xmanager,然后重新启动一下xshell,再进行测试。
[root@node1 ~]# hb_gui &
说明:这下我们打开了,crm图形配置界面,下面我们就进行资源配置!在我们说资源配置之间前我们还得补充一下知识点DC,我们上面多次提到。
(5).集群中的DC
注:从上面的图中我们可以看到,此集群中的DC是node2,那么什么是DC呢?下面我们就来详细说明一下。
Consensus Cluster Membership在集群服务使用选举机制,允许集群节点决定指定的协调器(Designated Cooridnator-DC),它来帮助建立仲裁,管理集群节点成员关系和资源分配。DC维护集群的状态和管理策略。其他的节点必须转发状态改变请求到DC中处理。Heartbeat服务检查节点和连接状态来决定失效是否发生,集群事件日志服务(ha-logd)提供集群套件中所有服务的日志功能。能过上面的概念我们基本了解了什么是DC。简单来说,在多节点集群中要有个“头头”就是指定的“协调员”DC,就是一个集群中每个几点上都有一个相当于选举票的权值,而这个权值就是根据服务器的性能进行手动分配的,性能好的可以分配的大点,而所有的其他节点都要听从DC的调度,在一个集群中只有选票达到50%以上才能称为集群系统。如果出现故障了,就会有一个故障转移(failover)点,设置不同的优先级,可以使故障按照优先级的高低进行转移,选择一个性能好的服务器来充当DC,所以在此 集群节点中node2是DC。