红联Linux门户
Linux帮助

红帽子RHCS套件安装与配置

发布时间:2015-04-05 05:13:35来源:oschina.net作者:xxbAndy

RHCS提供的三个核心功能

高可用集群是RHCS的核心功能。当应用程序出现故障,或者系统硬件、网络出现故障时,应用可以通过RHCS提供的高可用性服务管理组件自动、快速从一个节点切换到另一个节点,节点故障转移功能对客户端来说是透明的,从而保证应用持续、不间断的对外提供服务,这就是RHCS高可用集群实现的功能。

RHCS通过LVS(LinuxVirtualServer)来提供负载均衡集群,而LVS是一个开源的、功能强大的基于IP的负载均衡技术,LVS由负载调度器和服务访问节点组成,通过LVS的负载调度功能,可以将客户端请求平均的分配到各个服务节点,同时,还可以定义多种负载分配策略,当一个请求进来时,集群系统根据调度算法来判断应该将请求分配到哪个服务节点,然后,由分配到的节点响应客户端请求,同时,LVS还提供了服务节点故障转移功能,也就是当某个服务节点不能提供服务时,LVS会自动屏蔽这个故障节点,接着将失败节点从集群中剔除,同时将新来此节点的请求平滑的转移到其它正常节点上来;而当此故障节点恢复正常后,LVS又会自动将此节点加入到集群中去。而这一系列切换动作,对用户来说,都是透明的,通过故障转移功能,保证了服务的不间断、稳定运行。

RHCS通过GFS文件系统来提供存储集群功能,GFS是GlobalFileSystem的缩写,它允许多个服务同时去读写一个单一的共享文件系统,存储集群通过将共享数据放到一个共享文件系统中从而消除了在应用程序间同步数据的麻烦,GFS是一个分布式文件系统,它通过锁管理机制,来协调和管理多个服务节点对同一个文件系统的读写操作。 现在用的最多的是gfs2版本,GFS文件系统必须运行在集群上。  


RHCS集群的组成

RHCS是一个集群工具的集合,主要有下面几大部分组成:

1.集群构架管理器

这是RHCS集群的一个基础套件,提供一个集群的基本功能,使各个节点组成集群在一起工作,具体包含分布式集群管理器(CMAN)、成员关系管理、锁管理(DLM)、配置文件管理(CCS)、栅设备(FENCE)。

2.高可用服务管理器

提供节点服务监控和服务故障转移功能,当一个节点服务出现故障时,将服务转移到另一个健康节点。

3.集群配置管理工具

RHCS最新版本通过LUCI来配置和管理RHCS集群,LUCI是一个基于web的集群配置方式,通过luci可以轻松的搭建一个功能强大的集群系统。 节点主机可以使用ricci来和luci管理端进行通信。

4.LinuxVirtualServer

LVS是一个开源的负载均衡软件,利用LVS可以将客户端的请求根据指定的负载策略和算法合理的分配到各个服务节点,实现动态、智能的负载分担。

RHCS除了上面的几个核心构成,还可以通过下面一些组件来补充RHCS集群功能。

5.RedHatGFS(GlobalFileSystem)

GFS是Redhat公司开发的一款集群文件系统,目前的最新版本是GFS2,GFS文件系统允许多个服务同时读写一个磁盘分区,通过GFS可以实现数据的集中管理,免去了数据同步和拷贝的麻烦,但GFS并不能孤立的存在,安装GFS需要RHCS的底层组件支持。

6.ClusterLogicalVolumeManager

Cluster逻辑卷管理,即CLVM,是LVM的扩展,这种扩展允许cluster中的机器使用LVM来管理共享存储。

7.iSCSI

iSCSI是一种在Internet协议上,特别是以太网上进行数据块传输的标准,它是一种基于IPStorage理论的新型存储技术,RHCS可以通过ISCSI技术来导出和分配共享存储的使用。
 

RHCS集群结构
红帽子RHCS套件安装与配置

图1是典型的RHCS集群拓扑结构:整个拓扑结构分为三个层面

最上层是LVS负载均衡层,中间一层是RealServer层,就是服务节点部分,最后一层是共享存储层,主要用于给GFS文件系统提供共享存储空间。


RHCS集群运行原理及功能介绍

1、分布式集群管理器(CMAN)

ClusterManager,简称CMAN,是一个分布式集群管理工具,它运行在集群的各个节点上,为RHCS提供集群管理任务。

CMAN用于管理集群成员、消息和通知。它通过监控每个节点的运行状态来了解节点成员之间的关系,当集群中某个节点出现故障,节点成员关系将发生改变,CMAN及时将这种改变通知底层,进而做出相应的调整。

2、锁管理(DLM)

DistributedLockManager,简称DLM,表示一个分布式锁管理器,它是RHCS的一个底层基础构件,同时也为集群提供了一个公用的锁运行机制,在RHCS集群系统中,DLM运行在集群的每个节点上,GFS通过锁管理器的锁机制来同步访问文件系统元数据。CLVM通过锁管理器来同步更新数据到LVM卷和卷组。

DLM不需要设定锁管理服务器,它采用对等的锁管理方式,大大的提高了处理性能。同时,DLM避免了当单个节点失败需要整体恢复的性能瓶颈,另外,DLM的请求都是本地的,不需要网络请求,因而请求会立即生效。最后,DLM通过分层机制,可以实现多个锁空间的并行锁模式。

3、配置文件管理(CCS)

ClusterConfigurationSystem,简称CCS,主要用于集群配置文件管理和配置文件在节点之间的同步。有时候,luci管理界面可能由于网络等方面的以素并不是那么畅快,CCS就显得很必要了。CCS运行在集群的每个节点上,监控每个集群节点上的单一配置文件/etc/cluster/cluster.conf的状态,当这个文件发生任何变化时,都将此变化更新到集群中的每个节点,时刻保持每个节点的配置文件同步。例如,管理员在节点A上更新了集群配置文件,CCS发现A节点的配置文件发生变化后,马上将此变化传播到其它节点上去。

rhcs的配置文件是cluster.conf,它是一个xml文件,具体包含集群名称、集群节点信息、集群资源和服务信息、fence设备等,这个会在后面讲述。

4、栅设备(FENCE)

FENCE设备是RHCS集群中必不可少的一个组成部分,通过FENCE设备可以避免因出现不可预知的情况而造成的“脑裂”现象,FENCE设备的出现,就是为了解决类似这些问题,Fence设备主要就是通过服务器或存储本身的硬件管理接口,或者外部电源管理设备,来对服务器或存储直接发出硬件管理指令,将服务器重启或关机,或者与网络断开连接。

FENCE的工作原理是:当意外原因导致主机异常或者宕机时,备机会首先调用FENCE设备,然后通过FENCE设备将异常主机重启或者从网络隔离,当FENCE操作成功执行后,返回信息给备机,备机在接到FENCE成功的信息后,开始接管主机的服务和资源。这样通过FENCE设备,将异常节点占据的资源进行了释放,保证了资源和服务始终运行在一个节点上。

RHCS的FENCE设备可以分为两种:内部FENCE和外部FENCE,常用的内部FENCE有IBMRSAII卡,HP的iLO卡,还有IPMI的设备等,外部fence设备有UPS、SANSWITCH、NETWORKSWITCH等

5、高可用服务管理器

高可用性服务管理主要用来监督、启动和停止集群的应用、服务和资源。它提供了一种对集群服务的管理能力,当一个节点的服务失败时,高可用性集群服务管理进程可以将服务从这个失败节点转移到其它健康节点上来,并且这种服务转移能力是自动、透明的。

RHCS通过rgmanager来管理集群服务,rgmanager运行在每个集群节点上,在服务器上对应的进程为clurgmgrd。

在一个RHCS集群中,高可用性服务包含集群服务和集群资源两个方面,集群服务其实就是应用服务,例如apache、mysql等,集群资源有很多种,例如一个IP地址、一个运行脚本、ext3/GFS文件系统等。

在RHCS集群中,高可用性服务是和一个失败转移域结合在一起的,所谓失败转移域是一个运行特定服务的集群节点的集合。在失败转移域中,可以给每个节点设置相应的优先级,通过优先级的高低来决定节点失败时服务转移的先后顺序,如果没有给节点指定优先级,那么集群高可用服务将在任意节点间转移。因此,通过创建失败转移域不但可以设定服务在节点间转移的顺序,而且可以限制某个服务仅在失败转移域指定的节点内进行切换。  

6、集群配置管理工具

Conga是一种新的基于网络的集群配置工具,Conga是通过web方式来配置和管理集群节点的。Conga有两部分组成,分别是luci和ricci,luci安装在一台独立的计算机上,用于配置和管理集群,ricci安装在每个集群节点上,Luci通过ricci和集群中的每个节点进行通信。  

RHCS也提供了一些功能强大的集群命令行管理工具,常用的有clustat、cman_tool、ccs_tool、fence_tool、clusvcadm等,这些命令的用法将在下面讲述。  

7、RedhatGFS

GFS是RHCS为集群系统提供的一个存储解决方案,它允许集群多个节点在块级别上共享存储,每个节点通过共享一个存储空间,保证了访问数据的一致性,更切实的说,GFS是RHCS提供的一个集群文件系统,多个节点同时挂载一个文件系统分区,而文件系统数据不受破坏,这是单一的文件系统不能实现的。

为了实现多个节点对于一个文件系统操作时读写操作,GFS使用锁管理器来管理I/O操作,当一个写进程操作一个文件时,这个文件就被锁定,此时不允许其它进程进行读写操作,直到这个写进程正常完成才释放锁,只有当锁被释放后,其它读写进程才能对这个文件进行操作,另外,当一个节点在GFS文件系统上修改数据后,这种修改操作会通过RHCS底层通信机制立即在其它节点上可见。  

在搭建RHCS集群时,GFS一般作为共享存储,运行在每个节点上,并且可以通过RHCS管理工具对GFS进行配置和管理。这些需要说明的是RHCS和GFS之间的关系,一般初学者很容易混淆这个概念:运行RHCS,GFS不是必须的,只有在需要共享存储时,才需要GFS支持,而搭建GFS集群文件系统,必须要有RHCS的底层支持,所以安装GFS文件系统的节点,必须安装RHCS组件。

在下一节中,将会讲解简单的rhcs部署以及管理。


系统环境:

RHEL6.4    iptables 关闭    selinux is disabled

https://access.RedHat.com/site/documentation/en-US 参照文档

注意:由于本实验环境是在RHEL系列,因此将使用红帽自己的yum源,配置如下:

[base]

name=yum

baseurl=ftp://192.168.2.22/pub/RHEL6.4

gpgcheck=0

[HA]

name=ha

baseurl=ftp://192.168.2.22/pub/RHEL6.4/HighAvailability

gpgcheck=0

[lb]

name=LB

baseurl=ftp://192.168.2.22/pub/RHEL6.4/LoadBalancer

gpgcheck=0

[Storage]

name=St

baseurl=ftp://192.168.2.22/pub/RHEL6.4/ResilientStorage

gpgcheck=0

[SFS]

name=FS

baseurl=ftp://192.168.2.22/pub/RHEL6.4/ScalableFileSystem

gpgcheck=0

实验将用到三台主机,一台安装luci进行配置管理RHCS集群,另外两台主机安装ricci,用来管理集群所用到的服务并且和luci进行通信。(ricci作为计算节点,必须进行时间同步)


luci管理端:

#yum update luci -y

#/etc/init.d/luci restart        将会提示登录一个地址,访问luci界面,默认为用户名和密码root用户

ricci计算节点端:  (注意:所有节点之间必须用hostname进行解析)

#yum install ricci -y

#passwd ricci

#/etc/init.d/ricci restart

#chkconfig ricci on

在luci端进行创建集群,并且添加节点:(图)
红帽子RHCS套件安装与配置

创建一个集群,并添加node节点
红帽子RHCS套件安装与配置

红帽子RHCS套件安装与配置

添加成功,两个节点正常
红帽子RHCS套件安装与配置

查看node1详细信息
红帽子RHCS套件安装与配置

成功后,使用命令查看

# clustat 可以看到,有node1和node2节点

Cluster Status for test @ Sat May 17 12:01:23 2014

Member Status: Quorate

Member Name ID Status

node1.example.com 1 Online, Local

node2.example.com 2 Online

根据luci管理和配置界面的相关预设配置来进行配置红帽集群套件:(一次进行配置fence,failover,resources,services)
红帽子RHCS套件安装与配置

安装fence(解决多个节点间因为互相争夺资源而产生的脑裂问题,当某节点出现问题,会将节点立即拔电重启)


本节实验将采用KVM提供的虚拟fence

在luci端:

# yum install fence-virt.x86_64 fence-virtd.x86_64 fence-virtd-libvirt.x86_64 fence-virtd-multicast.x86_64 -y

#/etc/fence_virt.conf    fence配置文件,默认不是规则的

# fence_virtd -c          交互式配置fence文件

Interface [none]: br0  在选择接口时选择br0,其余都默认

#mkdir /etc/cluster                默认不存在cluster目录来存放key文件,自己建立

#dd if=/dev/urandom of=/etc/cluster/fence.xvm.key bs=128 count=1

1+0 records in

1+0 records out

128 bytes (128 B) copied, 0.000378488 s, 338 kB/s

# ll /etc/cluster/fence.xvm.key

# scp /etc/cluster/fence.xvm.key node1:/etc/cluster/                  拷贝到两个节点,用来通信的

# scp /etc/cluster/fence.xvm.key node2:/etc/cluster/

# /etc/init.d/fence_virtd restart 开启fence服务(生产环境中自动开启哦)

# netstat -anulp |grep fence*

udp        0      0 0.0.0.0:1229                0.0.0.0:*                              18904/fence_virtd

登录luci管理界面,增加fence设备,并且为每个node添加fence设置

# fence_xvm -H node1          测试fence功能

注意:如果不能node节点不能启动,注意查看rgmanager,cman ricci,clvm等服务的自动启动

# tail -f /var/log/cluster/fenced.log

May 17 11:59:55 fenced fenced 3.0.12.1 started

May 17 12:19:15 fenced fenced 3.0.12.1 started

May 17 15:25:58 fenced fencing node node1

May 17 15:26:00 fenced fence node1 success

May 17 15:28:24 fenced fenced 3.0.12.1 started

3.配置故障转换域
故障切换域是一个命名的集群节点子集,它可在节点失败事件中运行集群服务

在由几个成员组成的集群中,使用限制故障切换域可最大程度降低设置集群以便运行集群服务的工作(比如httpd),它要求您在运行该集群服务的所有成员中进行完全一致的配置。您不需要将整个集群设置为运行该集群服务,只要设置与该集群服务关联的限制故障切换域中的成员即可。
故障转移域,权值越低,优先级越高
红帽子RHCS套件安装与配置

4.配置全局集群资源

增加VIP,apcache,服务(通过script完成)
红帽子RHCS套件安装与配置

红帽子RHCS套件安装与配置

红帽子RHCS套件安装与配置

红帽子RHCS套件安装与配置

5.配置资源组
红帽子RHCS套件安装与配置

注:以上图片上传到红联Linux系统教程频道中。

为webserver分别添加子资源:VIP,httpd服务,以及共享磁盘

# clustat                                                            查看资源现在在node1上运行
Member Name                                            ID  Status
------ ----                                            ---- ------
node1                                                      1 Online, Local, rgmanager
node2                                                      2 Online, rgmanager
Service Name                                  Owner (Last)                                  State      
------- ----                                  ----- ------                                  -----      
service:webserver                              node1                                          started


测试:

(配置了故障转移域的默认只开启优先级高node1的httpd服务,主机httpd异常关闭后在开启优先级低的node2)
注意:在测试中,httpd服务不需要启动和重启,资源完全被luci接管
访问ip资源(VIP)192.168.2.88 访问的使node1发布的资源(http)

测试:关闭服务和关闭网卡,测试服务的发布
(高可用性的性能测试99)
1.关闭node1的httpd服务,发现会自动被node2接管(故障转移域)
2.发现,当关闭node2网卡的时候,由于配置了fence设备,node2会自动重启,资源会由node1接管
3.# echo c > /proc/sysrq-trigger
在node1上给内核导入参数,测试崩溃效果。node2会自动接管资源,node1会必fence自动重启,之后node1会重新接管资源(faildomain的自动回切功能)

clusvcadm -d httpd        手动关闭服务组
clusvcadm -e httpd            开启服务组
clusvcadm -r httpd -m node1    将服务定位到node1

详细命令查看官网

使用RHCS套件构建一个简单的web集群已经完成。