RHCS:red hat cluster suite 红帽集群套件,RHCS是一个能够提供高可用性、高可靠性、负载均衡、存储共享且经济廉价的集群工具集合,它将集群系统中三大集群架构融合一体,可以给web应用、数据库应用等提供安全、稳定的运行环境。

RHCS提供三个核心功能:

       高可用集群:当应用程序出现故障,或系统硬件、网络出现故障时,可以收高可用性管理组件自动、快速从一个节点切换到另一个节点,节点故障转移功能对客户端来说是透明的。

       负载均衡集群:RHCS通过LVS提供负载均衡,可以将客户端请求按照一定的算法把请求分配到各个服务节点。同时lvs还提供健康检查。

        存储集群功能:RHCS通过GFS文件系统提供存储集群功能。GFS(Global File System)允许多个服务同时去一个单一的共享文件系统,存储集群通过将共享数据放到一个共享文件系统中,从而消除了同步数据的麻烦。GFS通过锁管理机制,来协调和管理多个服务节点对同一个文件系统的读写操作。

RHCS的集群组成:

           集群构架管理器:这是RHCS集群的一个基础套件,提供一个集群的基本功能,包含分布式集群管理器(CMAN)、成员关系管理、锁管理(DLM)、配置文件管理(CCSD)、栅设备(FENCE)。注:这是rhel5集群管理套件组成,rhel6中ccsd由cman提供配置文件管理。

          高可用服务管理器:提供服务监控和服务故障转移功能(rgmanager或pacemaker)

          集群配置管理器:RHCS最新版是通过Conga来配置和管理RHCS集群,Conga由两部份组成,LUCI和RICCI。LUCI是基于web的集群配置方式,LUCI安装在一台独立的计算机上,用于配置和管理集群,RICCI安装在每个集群的服务节点,LUCI通过RICCI和每个集群中的节点进行通信。在RHCL5还提供了一生中GUI的管理工具system-config-cluster,但在RHEL6上已经不提供这种管理方式了。

          LVS: 负载均衡软件,根据各种算法来实现把负载动态分配到各位集群节点上去。

RHCS集群的拓扑结构:

image注:图片来自网络

RHCS组件

image

实验环境:

系统全部是 centos6.5
LUCI安装在一台机器10.204.80.71,这台机器做为模拟ISCSI设备的磁盘提供。

另外3台机器做为集群服务器节点,ip地址分别为:

10.204.80.75   rs3

10.204.80.76   rs4

10.204.80.77   rs5

在71控制服务器上安装luci

image

这里加上参数—disablerepo=epel是因为有个python模块在epel源中比basic模块中要新,但在安装过程中会有问题,luci装不上,所以要禁掉epel源。

安装完成后就可以启动Luci

image

访问https://10.204.80.71:8084

image

提示不是受信任的站点

image

点击已经充分了解风险,

image

就可以看到luci的登陆界面,用71这台机器的root帐号密码登陆就可以看到操作界面

image

就可以添加节点了,不过集群节点需要安装ricci。

在/etc/hosts文件中入host名称解析

image

在ansiable的hosts文件中新加一个群组

image
然后用ansiable命令安装集群节点的ricci组件

image

安装完成后,给ricci帐号添加密码为”mypass”

image

显示密码添加成功,把ricci服务启动

image

就可以到luci的控制web页面上添加集群节点了

https://10.204.80.71:8084页面登陆,然后创建一个cluster

image

image

节点添加完成以后就可以看到集群的状态了,三个节点rs3,rs4,rs5都已经正常在线了

image

集群搭建完成以后就可以在Resource里面添加资源,要启动资源则要把资源加入到资源组里面才能启动资源。

还可以把节点加入的Failover Domains(故障转移域),在做高可用集群时就,当一个节点故障时,资源转移的优先级比较高的节点上去,而且只能在某些在故障转移域中的节点转移。因为没有fence设备,所以也就没有再做过多的设置。

 

集群文件系统的创建:

IP SAN的模拟

GFS文件系统配置需要一台机器模拟IP SAN,这个里用71这台服务器模拟IP SAN

SAN: 块级别共享存储,分为光纤存储区域网络(FC SAN)和以太网存储区域网络(IP SAN)。

IP SAN:以太网存储区域网络,是以iSCSI标准在TCP/IP上进行数据块传输,能够在高速以太网上进行快速存取备份操作。

要虚拟一个IP SAN设备,首先是虚拟一个target,在target上再连接一个LUN,然后定义target的访问控制列表。

在71这台服务器上安装iSCSI模块

#yum install –y scsi-target-utils

image

启动tgtd服务,设为开机自动启动,查看tgtd的端口,确定tgtd已在监听状态

image

因为target创建一个磁盘做为共享磁盘会用到域名,所以,把71的hostname改为m.mylinux.com,在hosts文件中也改为相对应的名称

image

tgtadm创建一个target的语法:

tgtadm:

           [-L --lld <driver>] [-o --op <operation>] [-m --mode <mode>] [-t --tid <id>] [-T --targetname <targetname>]

创建一个tid 为1的target

#tgtadm -L iscsi -m target -o new -t 1 -T iqn.2014-10.com.mylinux.tgt1:websan.disk1

# tgtadm -L iscsi -m target -o show    显示target信息

image

创建一个逻辑单元语法:

tgtadm

      --lld [driver] --op new --mode=logicalunit –tid [id] –lun [lun] --backing-store [path]

创建一个LUN号为1的逻辑设备

#tgtadm --lld iscsi --op new --mode logicalunit --tid 1 --lun 1 -b /dev/mapper/VolGroup-lv02

添加这个teget的访问控制列表

image

target的用户认证方式启用的是CHAP(挑战式握手认证协议),也可以做单方向的认证。

<IncomingUser>    服务器端自己提供的用户密码,客户端拿这个帐号来登录服务器的。

<OutgoingUser>    在服务器创建客户端验证帐号来验证服务器的

我这里启用的是服务器自己提供用户密码,客户端登陆服务器,添加访问这个target的访问帐号,

image

IPSAN服务端配置完成,客户端可以用发现命令发现这个设备

 

客户端设置:

用ansiable安装gfs组中的iscsi-initiator-utils

#ansiable  gfs  -m  yum –a “name=iscsi-initiator-utils   state=installed”

image

客户端安装完成,首先要定义initiator的独有名称,然后再发现设备,登陆

image

启用CHAP认证,在rs3,rs4,rs5的三个集群节点的配置文件/etc/iscsi/iscsid.conf中启用CHAP认证,

node.leading_login = Yes
node.session.auth.authmethod = CHAP
node.session.auth.username = mygfs
node.session.auth.password = mypass123

启动iscsi服务,设备iscsi 服务开机启动

  image

各集群节点发现、登陆target

#iscsiadm –m descovery –t sendtargets –p 10.204.80.71      #发现target,用ansiable在各节点上同时运行

image

登陆target

image

登陆成功

在rs3中用fdisk –l命令显示所有磁盘信息,就可以看到有一个新硬盘设备/dev/sdb

ICLL_M0U705DKB66@ZDD0`Y

在rs4,rs5集群节点上同样可以看到这个设备

 

安装gfs2-utils和lvm2-cluster

image

image

在集群节点上启用lvm集群功能 ,启动clvmd服务

image

image

创建一个gfs文件系统需要提供的信息:

1. 锁类型:

           lock_nolock

           lock_dlm

2. 锁文件的名字,通常即文件系统名

3. 日志的个数,通过一个节点对应一个日志文件,但建议提供比节点数更多的日志数目,以提供冗余

4. 日志文件的大小

5. 文件系统的大小

装载gfs2的模块,查看gfs2模块

image

在rs3节点上把设备/dev/sdb 添加为PV,创建VG,然后创建LV

image把/dev/sdb创建为pv

image把/dev/sdb添加进VG-gfs当中

image

创建容量为20G的lv

image

把lv-gfs格式化为gfs文件系统

image

格式化时mkfs.gfs2 –p lock_dlm 要放在-j num 参数前面,不然无法格式化

image

同样,在节点rs4,rs5上都挂载到/data目录下

image

image

在rs3节点的/data目录下touch一个aa.txt文件,有echo即时写入字符,在rs4,rs5节点上用tail –f  命令查看aa.txt,就会看到,当rs3节点上写入一段字符,在rs4.rs5节点上都会马上出现,集群文件系统搭建完成

image

image

image

把 /data 和gfs 文件写入到/etc/fstab文件中然后把service gfs2开机启动,这样,当节点重新启动时就会自动挂载gfs2文件系统。

0C)JHYDC~XKO%3MR)BEJ)0S

image

 

注意:上面的实验过程中,71这台服务器虚拟的一个target没有写入配置文件,只是用命令启动,当这个主luci管理端重新启动后就不会再启动了,所以需要把这个target写入到/etc/tgt/targets.conf配置 文件中,这样,开机才会自动模拟这个IP SAN设备。而在rs3,rs4,rs5这个集群中并没有定义fence设备,一旦有节点down掉,而集群没有及时fence掉这个节点,那么这个集群文件系统有可能会产生分裂。在真实应用场景中fence设备是一定要有的。