RHEL61RHCS终结版.docx
《RHEL61RHCS终结版.docx》由会员分享,可在线阅读,更多相关《RHEL61RHCS终结版.docx(18页珍藏版)》请在冰豆网上搜索。
![RHEL61RHCS终结版.docx](https://file1.bdocx.com/fileroot1/2023-2/1/8b1c154f-65c3-470c-99fe-c4147e4c0ccd/8b1c154f-65c3-470c-99fe-c4147e4c0ccd1.gif)
RHEL61RHCS终结版
1、概述:
试验环境:
两台DELLR910,安装Centos6.0,通过ISCSI共享盘柜磁盘,使用主板集成网卡:
NIC1,iDrac6专用网口
任务:
使用基于Web管理方式的Conga工具创建、管理两节点Cluster,然后以一个简单的web服务(httpd)作切换测试.
基本概念:
Conga:
分为Luci(管理工具,Server端)及Ricci(用于接收和传递Luci指令的服务程序,Agent)两部分,其中Luci安装在任一管理工作站上,Ricci安装在被管理的Cluster节点上.
脑裂(Head-split):
当前激活的Cluster节点因为处理器忙或者其他原因暂时停止响应时,其他节点可能误认为该节点”已死”,从而夺取共享磁盘的访问权,此时极有可能假死节点重新对共享文件系统产生读写操作,从而导致共享磁盘文件系统损坏.
Fence:
为了防止”脑裂”现象的产生,使用fence设备对”故障”节点进行”屏蔽”措施,如重启该设备,从而尝试恢复其节点功能.Fence设备可以是交换机,或者IPMI等.这里我们采用PE2900的BMC充当Fence设备.
Cman:
clustermanager,Cluster组件之一,该服务用于cluster的配置,控制,查询,仲裁计算等.
Rgmanager:
Resourcegroupmanager,Cluster组件之一,提供用户定义的资源组的切换服务.
Failoverdomain:
cluster环境中服务failover的区域.
2、原理介绍:
cman集群管理器
cman是一个基于内核的对称通用集群管理器。
它由两部分组成:
连接管理器(cnxman),用于处理成员、消息、投票数、事件通知和过渡;服务管理器(SM),用于处理那些需要通过各种方式进行集群管理的应用及外部系统。
cman是RHCS中最核心的服务,可通过系统中的serivce命令进行启/停操作;DLM、GFS、CLVM及Fence都依赖于cman群集管理器。
rgmanager资料组管理器
rgmanager(ResourceGroupManager)基于cman并使用DLM动态锁管理机制。
与cman一样,rgmanager也是RHCS中的一个核心服务,可通过系统中的serivce命令进行启/停操作;rgmanager管理并为集群中的Service(服务)和Resources(资源)提供Failover错误切换功能。
Service(服务)
每个服务都被指定存在于一个FailoverDomain中,并与多个Resources(资源)关联。
每个服务可以理解为实际操作中的一个应用,如Web服务器、Java中间件、数据库、文件共享系统、邮件系统等。
这些应用在运行时不但对应用程序本身有要求(如某个运行指令或多个运行脚本的组合),还要提供对诸如虚拟IP、文件系统等资源的支持。
FailoverDomain(错误切换域)
每个FailoverDomain都与两个或两个以上的Node(服务器节点)进行绑定,FailoverDomain指定了集群中某个Service运行时的范围,也就是指定此Service将会由哪些服务器提供Failover错误切换功能。
每个Node都允许与多个FailoverDomain进行绑定,也就是说每个Node都可以为多个Service服务,因此可以实现"主动/主动(双活动)"方式的集群配置。
Resources(资源)
Resources指的是组成一个应用所需的各种组件,通常包括:
应用程序、虚拟IP、文件系统。
资源与Service组合时,往往还会体现出一定的层次关系,例如:
通常系统都要求确认虚拟IP及文件系统都已经正常连接及挂载后,才可以运行某个应用程序,这个顺序一旦调转,就会使应用程序运行出错。
Fence机制
在RHCS集群运行时,为了避免因出现不可预知的情况而造成的"脑裂"现象(如:
心跳线断连,此时两台服务器都无法找到对方,无法向对方发出操作指令,都各自认为自己是主节点;又或者主服务器系统崩溃,系统能接收到备用服务器的操作指令,但无法返回运行情况的确认信号,导致备用服务器无法获知系统资源的使用情况),系统要求通过Fence机制来保障系统切换时的I/O使用安全。
如上所述,Fence主要就是通过服务器或存储本身的硬件管理接口,又或者是外部电源管理设备,来对服务器或存储发起直接的硬件管理指令,控制服务器或存储链路的开关。
因此,Fence机制也被称为"I/O屏障"技术。
当"脑裂"发生时彻底断开问题服务器的所有I/O连接,保证问题服务器不能对集群中的I/O资源(共享的文件系统资源)进行任何操作,严格保证集群环境中企业核心数据的完整性。
RHEL6.1(RHCS)集群安装与配置
一、RedhatEL6.1HA软件安装
1、创建CDROM加载目录
#mkdir/media/rhel6
2、加载CDROM
放入安装光盘,加载光驱。
#mount/dev/cdrom/media/rhel6
3、备份rhel-source.repo文件
#cp/etc/yum.repos.d/rhel-source.repo/etc/yum.repos.d/bak
4、编辑rhel-source.repo文件
#vi/etc/yum.repos.d/rhel-source.repo
rhel-source.repo文件内容以下:
[Server]
name=Server
baseurl=file:
///media/rhel6/Server
enabled=1
gpgcheck=0
[HighAvailability]
name=HighAvailability
baseurl=file:
///media/rhel6/HighAvailability
enabled=1
gpgcheck=0
[LoadBalancer]
name=LoadBalancer
baseurl=file:
///media/rhel6/LoadBalancer
enabled=1
gpgcheck=0
[ResilientStorage]
name=ResilientStorage
baseurl=file:
///media/rhel6/ResilientStorage
enabled=1
gpgcheck=0
5、安装HA软件包
#yuminstallcluster-glueresource-agentspacemaker
#yuminstallluciriccicmanopenaisrgmanagerlvm2-clustergfs2-utils
二、配置RedhatEL6HA环境
1、编辑hosts文件
#vi/etc/hosts
内容根据各主机的IP设计定义
2、启动HA服务
#servicelucistart
#servicericcistart
#servicergmanagerstart
#servicecmanstart
3、设置HA服务自启动
#chkconfigriccion
#chkconfiglucion
做到该步可以通过某个节点,通过luci提供的https地址,进行下面的配置,配置后cmanrgmanager服务会自动开启的。
#chkconfigcmanon
#chkconfigrgmanageron
chkconfiNetworkManageroff[该服务必须关闭,否则集群加node会报错]
4、修改ricci用户密码
使用passwdricci命令为用户ricci将ricci密码设定为root用户的密码
#passwdricci
两个节点分别修改完密码并都重新ricci服务。
三、配置集群
1、登录HA的配置
用Firefox浏览器打开
https:
//128.1.1.202:
8084/
用root登录
2、创建一个群集
3、添加节点名称和成员
4、配置fence设备
添加fence设备
点节点名称,关联节点和Fence设备
ip为共享存储地址
5、创建失效域
添加故障切换域
优先级小的优先
6、创建资源
7、创建集群服务
在服务组中将资源中的信息加入进去。
集群测试环节
1、关机测试(将主节点关机备节点接管过来没有问题)
2、将主节点的网卡down测试(默认切换失败)
如果切换失败:
1、看相关服务是否启动
2.通过日志看问题(message/var/log/cluster/..)
动态查看日志(tail–f)
该命令用以观察群集日志时特别有用,可看到群集何时进行磁盘mount,IP地址切换,服务启动等信息。
常用命令:
Tail–f/var/log/message
四、集群常用命令
使用clustat显示HA服务
#clustat
查看HA的日志
#tail-f/var/log/cluster/rgmanager.log
查看ORACLE实例是否启来
#ps-ef|grepora
++++++++++维护篇++++++++
一、启动RHCS集群
RHCS集群的核心进程有cman和rgmanager,要启动集群,依次在集群的每个节点执行如下命令即可:
servicecmanstart
servicergmanagerstart
需要注意的是,执行这两个命令是有先后顺序的,需要首先启动cman,然后在启动rgmanager。
在集群所有节点成功启动cman服务后,然后继续依次在每个节点启动rgmanager服务。
二、关闭RHCS集群
与启动集群服务刚好相反,关闭RHCS集群的命令为:
servicergmanagerstop
servicecmanstop
首先在集群的每个节点依次关闭rgmanager服务,等待所有节点的rgmanager服务成功关闭后,再依次关闭每个节点的cman服务即可完成真个集群服务的关闭。
有时在关闭cman服务时,可能会提示关闭失败,此时可以检查本机的共享存储GFS2文件系统是否已经卸载,还可以检查其它节点的rgmanager服务是否都已经正常关闭。
三、管理应用服务
集群系统启动后,默认是自动启动应用服务的,但是如果某个应用服务没有自动启动,就需要通过手工方式来启动。
管理应用服务的命令是clusvcadm,通过这个命令可以启动、关闭、重启、切换集群中的应用服务。
1.启动某个应用服务
可以通过如下方式启动某个节点的应用服务:
clusvcadm-e-m
其中:
Service:
表示集群中创建的应用服务名称。
Node:
表示集群节点名称。
例如,要启动节点web1上的webserver服务,操作如下:
[root@web1~]#clusvcadm-ewebserver-mweb1
Memberweb1tryingtoenableservice:
webserver...Success
service:
webserverisnowrunningonweb1
可以通过/var/log/messages文件查看启动应用服务的详细信息。
当webserver启动后,与服务相关的集群资源:
如虚拟IP、应用程序服务脚本也随之启动,可以通过如下命令查看集群资源是否已经正常加载:
2.关闭某个应用服务
可以通过如下方式关闭某个节点的应用服务:
clusvcadm-s-m
例如,要关闭节点Mysql1上的mysqlserver服务,操作如下:
[root@Mysql1~]#clusvcadm-smysqlserver-mMysql1
MemberMysql1stoppingservice:
mysqlserver...Success
可以通过/var/log/messages文件查看关闭应用服务的详细信息。
当mysqlserver关闭后,与服务相关的集群资源:
如虚拟IP、应用程序服务脚本也随之释放。
3.重启某个应用服务
可以通过如下方式重启某个节点的应用服务:
clusvcadm-R-m
例如,要重启节点web1上的webserver服务,操作如下:
[root@web2~]#clusvcadm-Rwebserver-mweb1
Memberweb1tryingtorestartservice:
webserver...Success
这个命令是在web2节点上执行的,但是也能成功将web1节点上的webserver进行重启,由此可知,clusvcadm命令在集群任意节点执行都是可以的。
4.切换某个服务
可以通过如下方式将一个应用服务从一个节点切换到另一个节点:
clusvcadm-r-m
例如,要将节点web1的服务切换到节点web2上,操作如下:
[root@web1~]#clusvcadm-rwebserver-mweb2
Tryingtorelocateservice:
webservertoweb2...Success
service:
webserverisnowrunningonweb2
四、监控RHCS集群状态
通过对RHCS的监控,有助于了解集群每个节点的健康状况,并能发现问题,及时解决问题,RHCS集群提供了丰富的状态查看命令,这里主要介绍下cman_tool、clustat、ccs_tool的使用方法。
1.cman_tool命令
cman_tool的参数比较多,但是用法比较简单,基本用法格式为:
cman_tool[options]
下面列举几个简单的使用例子:
[root@web1~]#cman_toolnodes-a
NodeStsIncJoinedName
0M02010-08-2301:
24:
00/dev/sdb7
1M24922010-08-2301:
22:
43web2
Addresses:
192.168.12.240
2M24922010-08-2301:
22:
43Mysql1
Addresses:
192.168.12.231
3M24922010-08-2301:
22:
43Mysql2
Addresses:
192.168.12.232
4M24882010-08-2301:
22:
43web1
Addresses:
192.168.12.230
此命令显示了节点名称,以及对应的节点IP地址和加入集群的时间。
如果要了解更多集群节点信息,可以通过如下命令:
[root@web1~]#cman_toolstatus
Version:
6.2.0
ConfigVersion:
35#集群配置文件版本号
ClusterName:
mycluster#集群名称
ClusterId:
56756
ClusterMember:
Yes
ClusterGeneration:
2764
Membershipstate:
Cluster-Member
Nodes:
4#集群节点数
Expectedvotes:
6#期望的投票数
Quorumdevicevotes:
2#表决磁盘投票值
Totalvotes:
6#集群中所有投票值大小
Quorum:
4#集群法定投票值,低于这个值,集群将停止服务
Activesubsystems:
9
Flags:
Dirty
PortsBound:
0177
Nodename:
web1
NodeID:
4#本节点在集群中的ID号
Multicastaddresses:
239.192.221.146#集群广播地址
Nodeaddresses:
192.168.12.230#本节点对应的IP地址
2.clustat命令
clustat命令使用非常简单,详细的使用方法可以通过“clustat-h”获取帮助信息,这里仅仅列举几个例子。
[root@web1~]#clustat-i3
ClusterStatusformycluster@MonAug2318:
54:
152010
MemberStatus:
Quorate
MemberNameIDStatus
--------------------
web21Online,rgmanager
Mysql12Online,rgmanager
Mysql23Online,rgmanager
web14Online,Local,rgmanager
/dev/sdb70Online,QuorumDisk
ServiceNameOwner(Last)State
------------------------------
service:
mysqlserverMysql1started
service:
webserverweb1started
对输出内容含义如下:
clustat的“-i”参数可以实时的显示集群系统中每个节点以及服务的运行状态,“-i3”表示每三秒刷新一次集群状态。
在这个输出中,可以看到每个节点都处于“Online”状态,表明每个节点都运行正常,如果某个节点退出了集群,对应的状态应该是“Offline”,同时还可以看到,集群的两个服务也处于“started”状态,分别运行在Mysql1节点和web1节点。
另外,通过“ID”一列可以知道集群节点的对应关系,例如,web2在此集群中对应的就是“Node1”节点,同理,web1对应的是“Node4”节点。
了解集群节点顺序有助于对集群日志的解读。
3.ccs_tool命令
ccs_tool主要用来管理集群配置文件cluster.conf,通过ccs_tool可以在集群中增加/删除节点、增加/删除fence设备、更新集群配置文件等操作。
下面是ccs_tool的几个应用实例:
当在一个节点修改完配置文件后,可以执行“ccs_toolupdate”指令将配置文件在所有节点进行更新,例如:
[root@web1cluster]#ccs_toolupdate/etc/cluster/cluster.conf
Proposedupdatedconfigfiledoesnothavegreaterversionnumber.
Currentconfig_version:
:
35
Proposedconfig_version:
:
35
Failedtoupdateconfigfile.
ccs_tool是根据cluster.conf中的“config_version”值来决定是否进行更新的,因此在修改完cluster.conf文件后,一定要将cluster.conf的config_version值进行更新,这样执行ccs_tool时才能更新配置文件。
[root@web1cluster]#ccs_toolupdate/etc/cluster/cluster.conf
Configfileupdatedfromversion35to36
Updatecomplete.
五、管理和维护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
Initializingfsck
ValidatingResourceGroupindex.
Level1RGcheck.
(level1passed)
Startingpass1
Startingpass1c
Pass1ccomplete
…………
Pass5complete
gfs2_fsckcomplete
2.gfs2_tool命令
gfs2_tool命令参数较多,但使用并不复杂,它主要用来查看、修改GFS2文件系统的相关参数信息。
下面列举几个使用例子:
1)查看GFS2文件系统挂载信息
[root@web1~]#gfs2_tooldf/gfs2
/gfs2:
SBlockproto="lock_dlm"
SBlocktable="mycluster:
my-gfs2"
SBondiskformat=1801
SBmultihostformat=1900
Blocksize=4096
Journals=4
ResourceGroups=19
Mountedlockproto="lock_dlm"
Mountedlocktable="mycluster:
my-gfs2"
Mountedhostdata="jid=2:
id=65539:
first=0"
Journalnumber=2
Lockmoduleflags=0
Localflocks=FALSE
Localcaching=FALSE
TypeTotalBlocksUsedBlocksFreeBlocksuse%
------------------------------------------------------------------------
data1220724136578108414611%
inodes108426311710841460%
(2)gfs2_tool命令
2)锁定与解锁GFS2文件系统:
[root@node1gfs2]#gfs2_