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集群的拓扑结构:
RHCS组件
实验环境:
系统全部是 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
这里加上参数—disablerepo=epel是因为有个python模块在epel源中比basic模块中要新,但在安装过程中会有问题,luci装不上,所以要禁掉epel源。
安装完成后就可以启动Luci
提示不是受信任的站点
点击已经充分了解风险,
就可以看到luci的登陆界面,用71这台机器的root帐号密码登陆就可以看到操作界面
就可以添加节点了,不过集群节点需要安装ricci。
在/etc/hosts文件中入host名称解析
在ansiable的hosts文件中新加一个群组
安装完成后,给ricci帐号添加密码为”mypass”
显示密码添加成功,把ricci服务启动
就可以到luci的控制web页面上添加集群节点了
在https://10.204.80.71:8084页面登陆,然后创建一个cluster
节点添加完成以后就可以看到集群的状态了,三个节点rs3,rs4,rs5都已经正常在线了
集群搭建完成以后就可以在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
启动tgtd服务,设为开机自动启动,查看tgtd的端口,确定tgtd已在监听状态
因为target创建一个磁盘做为共享磁盘会用到域名,所以,把71的hostname改为m.mylinux.com,在hosts文件中也改为相对应的名称
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信息
创建一个逻辑单元语法:
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的访问控制列表
target的用户认证方式启用的是CHAP(挑战式握手认证协议),也可以做单方向的认证。
<IncomingUser> 服务器端自己提供的用户密码,客户端拿这个帐号来登录服务器的。
<OutgoingUser> 在服务器创建客户端验证帐号来验证服务器的
我这里启用的是服务器自己提供用户密码,客户端登陆服务器,添加访问这个target的访问帐号,
IPSAN服务端配置完成,客户端可以用发现命令发现这个设备
客户端设置:
用ansiable安装gfs组中的iscsi-initiator-utils
#ansiable gfs -m yum –a “name=iscsi-initiator-utils state=installed”
客户端安装完成,首先要定义initiator的独有名称,然后再发现设备,登陆
启用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 服务开机启动
各集群节点发现、登陆target
#iscsiadm –m descovery –t sendtargets –p 10.204.80.71 #发现target,用ansiable在各节点上同时运行
登陆target
登陆成功
在rs3中用fdisk –l命令显示所有磁盘信息,就可以看到有一个新硬盘设备/dev/sdb
在rs4,rs5集群节点上同样可以看到这个设备
安装gfs2-utils和lvm2-cluster
在集群节点上启用lvm集群功能 ,启动clvmd服务
创建一个gfs文件系统需要提供的信息:
1. 锁类型:
lock_nolock
lock_dlm
2. 锁文件的名字,通常即文件系统名
3. 日志的个数,通过一个节点对应一个日志文件,但建议提供比节点数更多的日志数目,以提供冗余
4. 日志文件的大小
5. 文件系统的大小
装载gfs2的模块,查看gfs2模块
在rs3节点上把设备/dev/sdb 添加为PV,创建VG,然后创建LV
创建容量为20G的lv
把lv-gfs格式化为gfs文件系统
格式化时mkfs.gfs2 –p lock_dlm 要放在-j num 参数前面,不然无法格式化
同样,在节点rs4,rs5上都挂载到/data目录下
在rs3节点的/data目录下touch一个aa.txt文件,有echo即时写入字符,在rs4,rs5节点上用tail –f 命令查看aa.txt,就会看到,当rs3节点上写入一段字符,在rs4.rs5节点上都会马上出现,集群文件系统搭建完成
把 /data 和gfs 文件写入到/etc/fstab文件中然后把service gfs2开机启动,这样,当节点重新启动时就会自动挂载gfs2文件系统。
注意:上面的实验过程中,71这台服务器虚拟的一个target没有写入配置文件,只是用命令启动,当这个主luci管理端重新启动后就不会再启动了,所以需要把这个target写入到/etc/tgt/targets.conf配置 文件中,这样,开机才会自动模拟这个IP SAN设备。而在rs3,rs4,rs5这个集群中并没有定义fence设备,一旦有节点down掉,而集群没有及时fence掉这个节点,那么这个集群文件系统有可能会产生分裂。在真实应用场景中fence设备是一定要有的。