rhcs原理及操作rhcs组件介绍:
1.1 分布式集群管理器(cman)
cluster manager,简称cman,是一个分布式集群管理工具,它运行在集群的各个节点上,为rhcs提供集群管理任务。cman用于管理集群成员、消息和通 知。它通过监控每个节点的运行状态来了解节点成员之间的关系,当集群中某个节点出现故障,节点成员关系将发生改变,cman及时将这种改变通知底层,进而做出相应的调整。
1.2 锁管理(dlm)
distributed lock manager,简称dlm,表示一个分布式锁管理器,它是rhcs的一个底层基础构件,同时也为集群提供了一个公用的锁运行机制,在rhcs集群系统中,dlm运行在集群的每个节点上,gfs通过锁管理器的锁机制来同步访问文件系统元数据。clvm通过锁管理器来同步更新数据到lvm卷和卷组。dlm不需要设定锁管理服务器,它采用对等的锁管理方式,大大的提高了处理性能。同时,dlm避免了当单个节点失败需要整体恢复的性能瓶颈,另 外,dlm的请求都是本地的,不需要网络请求,因而请求会立即生效。最后,dlm通过分层机制,可以实现多个锁空间的并行锁模式。
1.3 配置文件管理(ccs)
cluster configuration system,简称ccs,主要用于集群配置文件管理和配置文件在节点之间的同步。ccs运行在集群的每个节点上,监控每个集群节点上的单一配置文件 /etc/cluster/cluster.conf的状态,当这个文件发生任何变化时,都将此变化更新到集群中的每个节点,时刻保持每个节点的配置文件 同步。例如,管理员在节点a上更新了集群配置文件,ccs发现a节点的配置文件发生变化后,马上将此变化传播到其它节点上去。rhcs的配置文件是 cluster.conf,它是一个xml文件,具体包含集群名称、集群节点信息、集群资源和服务信息、fence设备等。
1.4 栅设备(fence)
fence设备是rhcs集群中必不可少的一个组成部分,通过fence设备可以避免因出现不可预知的情况而造成的“脑裂”现象,fence设备的出 现,就是为了解决类似这些问题,fence设备主要就是通过服务器或存储本身的硬件管理接口,或者外部电源管理设备,来对服务器或存储直接发出硬件管理指 令,将服务器重启或关机,或者与网络断开连接。fence的工作原理是:当意外原因导致主机异常或者宕机时,备机会首先调用fence设备,然后通过 fence设备将异常主机重启或者从网络隔离,当fence操作成功执行后,返回信息给备机,备机在接到fence成功的信息后,开始接管主机的服务和资 源。这样通过fence设备,将异常节点占据的资源进行了释放,保证了资源和服务始终运行在一个节点上。rhcs的fence设备可以分为两种:内部 fence和外部fence,常用的内部fence有ibm rsaii卡,hp的ilo卡,还有ipmi的设备等,外部fence设备有ups、san switch、network switch等
rhcs操作:
一、启动rhcs集群
rhcs集群的核心进程有cman和rgmanager,要启动集群,依次在集群的每个节点执行如下命令即可:
service cman start
service rgmanager start
需要注意的是,执行这两个命令是有先后顺序的,需要首先启动cman,然后在启动rgmanager。在集群所有节点成功启动cman服务后,然后继续依次在每个节点启动rgmanager服务。
二、关闭rhcs集群
与启动集群服务刚好相反,关闭rhcs集群的命令为:
service rgmanager stop
service cman stop
首先在集群的每个节点依次关闭rgmanager服务,等待所有节点的rgmanager服务成功关闭后,再依次关闭每个节点的cman服务即可完成真个集群服务的关闭。
有时在关闭cman服务时,可能会提示关闭失败,此时可以检查本机的共享存储gfs2文件系统是否已经卸载,还可以检查其它节点的rgmanager服务是否都已经正常关闭。
三、管理应用服务
集群系统启动后,默认是自动启动应用服务的,但是如果某个应用服务没有自动启动,就需要通过手工方式来启动。管理应用服务的命令是clusvcadm,通过这个命令可以启动、关闭、重启、切换集群中的应用服务。
1. 启动某个应用服务
可以通过如下方式启动某个节点的应用服务:
clusvcadm -e -m
其中:
? service:表示集群中创建的应用服务名称。
? node:表示集群节点名称。
例如,要启动节点web1上的webserver服务,操作如下:
[root@web1 ~]# clusvcadm -e webserver -m web1
member web1 trying to enable service:webserver...success
service:webserver is now running on web1
可以通过/var/log/messages文件查看启动应用服务的详细信息。当webserver启动后,与服务相关的集群资源:如虚拟ip、应用程序服务脚本也随之启动,可以通过如下命令查看集群资源是否已经正常加载:
2. 关闭某个应用服务
可以通过如下方式关闭某个节点的应用服务:
clusvcadm -s -m
例如,要关闭节点mysql1上的mysqlserver服务,操作如下:
[root@mysql1 ~]# clusvcadm -s mysqlserver -m mysql1
member mysql1 stopping service:mysqlserver...success
可以通过/var/log/messages文件查看关闭应用服务的详细信息。当mysqlserver关闭后,与服务相关的集群资源:如虚拟ip、应用程序服务脚本也随之释放。
3. 重启某个应用服务
可以通过如下方式重启某个节点的应用服务:
clusvcadm -r -m
例如,要重启节点web1上的webserver服务,操作如下:
[root@web2 ~]# clusvcadm -r webserver -m web1
member web1 trying to restart service:webserver...success
这个命令是在web2节点上执行的,但是也能成功将web1节点上的webserver进行重启,由此可知,clusvcadm命令在集群任意节点执行都是可以的。
4. 切换某个服务
可以通过如下方式将一个应用服务从一个节点切换到另一个节点:
clusvcadm -r -m
例如,要将节点web1的服务切换到节点web2上,操作如下:
[root@web1 ~]# clusvcadm -r webserver -m web2
trying to relocate service:webserver to web2...success
service:webserver is now running on web2
四、监控rhcs集群状态
通过对rhcs的监控,有助于了解集群每个节点的健康状况,并能发现问题,及时解决问题,rhcs集群提供了丰富的状态查看命令,这里主要介绍下cman_tool、clustat、ccs_tool的使用方法。
1. cman_tool命令
cman_tool的参数比较多,但是用法比较简单,基本用法格式为:
cman_tool [options]
下面列举几个简单的使用例子:
[root@web1 ~]# cman_tool nodes -a
node sts inc joined name
0 m 0 2010-08-23 01:24:00 /dev/sdb7
1 m 2492 2010-08-23 01:22:43 web2
addresses: 192.168.12.240
2 m 2492 2010-08-23 01:22:43 mysql1
addresses: 192.168.12.231
3 m 2492 2010-08-23 01:22:43 mysql2
addresses: 192.168.12.232
4 m 2488 2010-08-23 01:22:43 web1
addresses: 192.168.12.230
此命令显示了节点名称,以及对应的节点ip地址和加入集群的时间。
如果要了解更多集群节点信息,可以通过如下命令:
[root@web1 ~]# cman_tool status
version: 6.2.0
config version: 35 #集群配置文件版本号
cluster name: mycluster #集群名称
cluster id: 56756
cluster member: yes
cluster generation: 2764
membership state: cluster-member
nodes: 4 #集群节点数
expected votes: 6 #期望的投票数
quorum device votes: 2 #表决磁盘投票值
total votes: 6 #集群中所有投票值大小
quorum: 4 #集群法定投票值,低于这个值,集群将停止服务
active subsystems: 9
flags: dirty
ports bound: 0 177
node name: web1
node id: 4 #本节点在集群中的id号
multicast addresses: 239.192.221.146 #集群广播地址
node addresses: 192.168.12.230 #本节点对应的ip地址
2. clustat命令
clustat命令使用非常简单,详细的使用方法可以通过“clustat -h”获取帮助信息,这里仅仅列举几个例子。
[root@web1 ~]#clustat -i 3
cluster status for mycluster @ mon aug 23 18:54:15 2010
member status: quorate
member name id status
------ ---- ---- ------
web2 1 online, rgmanager
mysql1 2 online, rgmanager
mysql2 3 online, rgmanager
web1 4 online, local, rgmanager
/dev/sdb7 0 online, quorum disk
service name owner (last) state
------- ---- ----- ------ --------
service:mysqlserver mysql1 started
service:webserver web1 started
对输出内容含义如下:
clustat的“-i”参数可以实时的显示集群系统中每个节点以及服务的运行状态,“-i 3”表示每三秒刷新一次集群状态。
在这个输出中,可以看到每个节点都处于“online”状态,表明每个节点都运行正常,如果某个节点退出了集群,对应的状态应该是“offline”,同时还可以看到,集群的两个服务也处于“started”状态,分别运行在mysql1节点和web1节点。
另外,通过“id”一列可以知道集群节点的对应关系,例如,web2在此集群中对应的就是“node 1”节点,同理,web1对应的是“node 4”节点。了解集群节点顺序有助于对集群日志的解读。
3. ccs_tool命令
ccs_tool主要用来管理集群配置文件cluster.conf,通过ccs_tool可以在集群中增加/删除节点、增加/删除fence设备、更新集群配置文件等操作。
下面是ccs_tool的几个应用实例:
当在一个节点修改完配置文件后,可以执行“ccs_tool update”指令将配置文件在所有节点进行更新,例如:
[root@web1 cluster]# ccs_tool update /etc/cluster/cluster.conf
proposed updated config file does not have greater version number.
current config_version :: 35
proposed config_version:: 35
failed to update config file.
ccs_tool是根据cluster.conf中的“config_version”值来决定是否进行更新的,因此在修改完cluster.conf文件后,一定要将cluster.conf的config_version值进行更新,这样执行ccs_tool时才能更新配置文件。
[root@web1 cluster]# ccs_tool update /etc/cluster/cluster.conf
config file updated from version 35 to 36
update complete.
五、管理和维护gfs2文件系统
gfs2文件系统提供了很多管理和维护工具,常用的有gfs2_fsck、gfs2_tool、gfs2_jadd、gfs2_quota、gfs2_convert等,这里重点介绍前三个命令的用法。
1. gfs2_fsck命令
类似与ext3文件系统下的fsck.ext3命令,主要用于检测和修复文件系统错误。其实gfs2还有一个fsck.gfs2命令,此命令与gfs2_fsck命令完全一致。
gfs2_fsck的用法如下:
gfs2_fsck [-afhnpqvvy]
下面列举几个使用例子:
[root@mysql1 ~]# gfs2_fsck -y /dev/sdb5
initializing fsck
validating resource group index.
level 1 rg check.
(level 1 passed)
starting pass1
starting pass1c
pass1c complete
…………
pass5 complete
gfs2_fsck complete
2. gfs2_tool命令
gfs2_tool命令参数较多,但使用并不复杂,它主要用来查看、修改gfs2文件系统的相关参数信息。
下面列举几个使用例子:
1)查看gfs2文件系统挂载信息
[root@web1 ~]# gfs2_tool df /gfs2
/gfs2:
sb lock proto = lock_dlm
sb lock table = mycluster:my-gfs2
sb ondisk format = 1801
sb multihost format = 1900
block size = 4096
journals = 4
resource groups = 19
mounted lock proto = lock_dlm
mounted lock table = mycluster:my-gfs2
mounted host data = jid=2:id=65539:first=0
journal number = 2
lock module flags = 0
local flocks = false
local caching = false
type total blocks used blocks free blocks use%
--------------- ----------------- ------------- ---------------- -----------
data 1220724 136578 1084146 11%
inodes 1084263 117 1084146 0%
(2)gfs2_tool命令
2)锁定与解锁gfs2文件系统:
[root@node1 gfs2]# gfs2_tool freeze /gfs2
[root@node1 gfs2]# gfs2_tool unfreeze /gfs2
gfs2文件系统被锁定后,无法进行读写操作,直到被解锁。
3)查询gfs2可挂载的接点数
[root@web1 ~]# gfs2_tool journals /gfs2
journal2 - 128mb
journal3 - 128mb
journal1 - 128mb
journal0 - 128mb
4 journal(s) found.
这里显示了可挂载节点数为4,并且每个journal的大小为128m。
4)显示gfs2的版本信息:
[root@web1 ~]# gfs2_tool version
gfs2_tool 0.1.62 (built mar 31 2010 07:34:25)
copyright (c) red hat, inc. 2004-2006 all rights reserved
(3)gfs2-jadd命令
gfs2-jadd主要用来配置gfs2的journals数量和大小,用法非常简单:
gfs2_jadd [-cdhjjqv] /path/to/filesystem
下面列举几个用例:
设置journals的大小为64m
[root@mysql1 ~]# gfs2_jadd -j 64m
将gfs2可同时挂载的节点数目增加到5个
[root@mysql1 ~]# gfs2_jadd -j 5 /gfs2
另外,另外gfs2_quota用于gfs2文件系统磁盘配额管理,gfs2_convert是一个数据转换应用程序,它可以对gfs文件系统的元数据进行更新,把它转换为一个gfs2文件系统。要深入了解它们的使用,请参考帮助信息,这里不在进行讲述。
http://www.bkjia.com/phpjc/1068091.htmlwww.bkjia.comtruehttp://www.bkjia.com/phpjc/1068091.htmltecharticlerhcs原理及操作 rhcs组件介绍: 1.1 分布式集群管理器(cman) cluster manager,简称cman,是一个分布式集群管理工具,它运行在集群的各个节点...