1.RHCS集群的基础介绍
(1)什么是RHCS
RHCS是Red Hat Cluster Suite的缩写,也就是红帽子集群套件,RHCS是一个能够提供高可用性、高可靠性、负载均衡、存储共享且经济廉价的集群工具集合,它将集群系统中三大集群架构融合一体,可以给web应用、数据库应用等提供安全、稳定的运行环境。
更确切的说,RHCS是一个功能完备的集群应用解决方案,它从应用的前端访问到后端的数据存储都提供了一个行之有效的集群架构实现,通过RHCS提供的这种解决方案,不但能保证前端应用持久、稳定的提供服务,同时也保证了后端数据存储的安全。
RHCS提供了集群系统中三种集群构架,分别是高可用性集群、负载均衡集群、存储集群。
(2)RHCS提供的三个核心功能
高可用集群是RHCS的核心功能。当应用程序出现故障,或者系统硬件、网络出现故障时,应用可以通过RHCS提供的高可用**管理组件自动、快速从一个节点切换到另一个节点,节点故障转移功能对客户端来说是透明的,从而保证应用持续、不间断的对外提供服务,这就是RHCS高可用集群实现的功能。
RHCS通过LVS(Linux Virtual Server)来提供负载均衡集群,而LVS是一个开源的、功能强大的基于IP的负载均衡技术,LVS由负载调度器和服务访问节点组成,通过LVS的负载调度功能,可以将客户端请求平均的分配到各个服务节点,同时,还可以定义多种负载分配策略,当一个请求进来时,集群系统根据调度算法来判断应该将请求分配到哪个服务节点,然后,由分配到的节点响应客户端请求,同时,LVS还提供了服务节点故障转移功能,也就是当某个服务节点不能提供服务时,LVS会自动屏蔽这个故障节点,接着将失败节点从集群中剔除,同时将新来此节点的请求平滑的转移到其它正常节点上来;而当此故障节点恢复正常后,LVS又会自动将此节点加入到集群中去。而这一系列切换动作,对用户来说,都是透明的,通过故障转移功能,保证了服务的不间断、稳定运行。
RHCS通过GFS文件系统来提供存储集群功能,GFS是Global File System的缩写,它允许多个服务同时去读写一个单一的共享文件系统,存储集群通过将共享数据放到一个共享文件系统中从而消除了在应用程序间同步数据的麻烦,GFS是一个分布式文件系统,它通过锁管理机制,来协调和管理多个服务节点对同一个文件系统的读写操作。
(3)RHCS的基本套件
RHCS是一个集群工具的集合,主要有下面几大部分组成:
集群构架管理器
这是RHCS集群的一个基础套件,提供一个集群的基本功能,使各个节点组成集群在一起工作,具体包含分布式集群管理器(CMAN)、成员关系管理、锁管理(DLM)、配置文件管理(CCS)、栅设备(FENCE)。
高可用服务管理器
提供节点服务监控和服务故障转移功能,当一个节点服务出现故障时,将服务转移到另一个健康节点。
集群配置管理工具
RHCS最新版本通过LUCI来配置和管理RHCS集群,LUCI是一个基于web的集群配置方式,通过luci可以轻松的搭建一个功能强大的集群系统。
Linux Virtual Server
LVS是一个开源的负载均衡软件,利用LVS可以将客户端的请求根据指定的负载策略和算法合理的分配到各个服务节点,实现动态、智能的负载分担。
RHCS除了上面的几个核心构成,还可以通过下面一些组件来补充RHCS集群功能。
Red Hat GFS (Global File System)
GFS是Redhat公司开发的一款集群文件系统,目前的最新版本是GFS2,GFS文件系统允许多个服务同时读写一个磁盘分区,通过GFS可以实现数据的集中管理,免去了数据同步和拷贝的麻烦,但GFS并不能孤立的存在,安装GFS需要RHCS的底层组件支持。
Cluster Logical Volume Manager
Cluster逻辑卷管理,即CLVM,是LVM的扩展,这种扩展允许cluster中的机器使用LVM来管理共享存储。
iSCSI
iSCSI是一种在Internet协议上,特别是以太网上进行数据块传输的标准,它是一种基于IP Storage理论的新型存储技术,RHCS可以通过ISCSI技术来导出和分配共享存储的使用。
Global Network Block Device
全局网络模块,简称GNBD,是GFS的一个补充组件,用于RHCS分配和管理共享存储,GNBD分为客户端和服务端,在服务端GNBD允许导出多个块设备或者GNBD文件,而GNBD客户端通过导入这些导出的块设备或者文件,就可以把它们当作本地块设备使用。由于现在GNBD已经停止了开发,所以使用GNBD的越来越少。
2.RHCS集群的基本搭建
(1)所需环境:
利用企业6.5镜像安装虚拟机,并封装为母盘,利用母盘生成三个虚拟机,详细信息如下:
主机名 | ip | 用途 |
---|---|---|
server1 | 172.25.33.1 | 即是管理节点、也是集群节点(减少虚拟机的开启) |
server2 | 172.25.33.2 | 集群节点 |
server3 | 172.25.33.3 | 暂时不用,备用 |
(1)server1所需操作:
[root@server1 ~]# cd /etc/yum.repos.d/
[root@server1 yum.repos.d]# ls
rhel-source.repo
[root@server1 yum.repos.d]# vim rhel-source.repo
[root@server1 yum.repos.d]# scp rhel-source.repo server2:/etc/yum.repos.d
[root@server1 yum.repos.d]#yum install ricci luci -y
[root@server1 yum.repos.d]#id ricci ##可以看到系统生成了一个ricci的用户
[root@server1 yum.repos.d]#passwd ricci ##给这个用户一个密码,在图形网页界面登陆时会用到,建议server1和server2使用相同密码
[root@server1 yum.repos.d]# /etc/init.d/ricci start ##开启服务
[root@server1 yum.repos.d]#chkconfig ricci on ##设置服务开机自启动(因为在网页管理时会给你重启节点,不设置自启动会导致服务起不来)
[root@server1 ~]# /etc/init.d/luci start ##开启管理服务并设置自启动
[root@server1 ~]# chkconfig luci on
[root@server1 ~]#chkconfig --list ##查看以脚本方式运行的软件的状态,不全为off即视为可以自启动
(2)server2所需操作:
[root@server2 ~]# yum install -y ricci
[root@server2 ~]#passwd ricci
(3)开启图像化界面管理:
浏览器输入https://172.25.33.1:8084进入高可用图形管理界面,添加证书后,以root用户登陆
点击create创建集群westos_ha,因为设置节点加入集群前重启,需要在手动重启一下服务
clustat查看集群状态
RHCS集群的初步搭建成功!!!
3.RHCS集群Fence组件的添加
(1)Fence组件的介绍:
fence管理节点,当一个节点出现故障以后,可以强制让它重启Fence技术”核心在于解决高可用集群在出现极端问题情况下的运行保障问题,在高可用集群的运行过程中,有时候会检测到某个节点功能不正常,比如在两台高可用服务器间的心跳线突然出现故障,这时一般高可用集群技术将由于链接故障而导致系统错判服务器宕机从而导致资源的抢夺,为解决这一问题就必须通过集群主动判断及检测发现问题并将其从集群中删除以保证集群的稳定运行,Fence技术的应用可以有效的实现这一功能
Fence设备可以防止集群资源(例如文件系统)同时被多个节点占有,保护了共享数据的安全性和一致性节
在RHCS中,集群里的服务器会互相争抢资源造成客户体验端的不稳定,也就是脑裂问题。利用Fence可以解决脑裂问题,相当于集群里的服务器可以关闭对方的电闸,防止集群之间互相争抢资源
(2)Fence组件的添加实现:需要在其他一台主机让做fence管理器,本次实验利用真机做fence管理器
<1> 步骤一:
打开浏览器,添加fence Devices,类型为fence virt(multicast mode),name为vmfence
<2> 步骤二:fence管理器所作操作
yum install -y fence-virtd.x86_64 fence-virtd-multicast.x86_64 fence-virtd-libvirt.x86_64
fence_virtd -c #编辑fence信息,设置端口必须为br0,其他的直接空格
mkdir /etc/cluster
cd /etc/cluster/
dd if=/dev/urandom of=/etc/cluster/fence_xvm.key bs=128 count=1
scp fence_xvm.key root@172.25.33.1:/etc/cluster/
scp fence_xvm.key root@172.25.33.2:/etc/cluster/
systemctl start fence_virtd.service
<3> 步骤三:
在server上开启ricci和luci,server2上开启ricci,打开图形界面, 在集群westos_ha中,点击server1选择添加add fence method to node, mathod name:vmfence-1,然后点击添加fence instance:domain为该节点的uuid,如果使用Ip,若ip冲突的话,直接关两个
server2同样操作
<4> 测试:
#在server1和server2上
vim cluster.conf 应该添加了fence的内容
#在server1上
fence_node server2 则server2应该重启
4.RHCS集群实现故障切换(以http服务为例),资源及资源组的添加
(1)定义故障转移域:
(2)添加资源:
(3)添加资源组:
(4)server1服务器的设置,安装httpd但不开启,当在图形界面资源组提交以后,会自动开启服务,因为server1优先级高,所以会httpd会运行在server1上,并且获得vip
(5)server2服务器的设置,安装httpd。当server1上httpd服务停掉,服务会转移到server2上,并且vip同样转移到server2上
5.RHCS集群通过ISCSI技术来导出和分配共享存储的使用
(1)所需环境:
三台虚拟机
其中两台为集群中的RS服务器;另一台作为提供共享磁盘的服务端
(2)iscsi服务端(server3)操作:
server3共享服务的设定:在server3加一块磁盘,/dev/vda
yum install scsi-* -y ##安装iscsi服务
vim /etc/tgt/targets.conf ##修改配置文件
<target iqn.2019-07.com.example:server.target1>
backing-store /dev/vda
</target>
/etc/init.d/tgtd start ##开启iscsi服务
ps aux ##应该可以看到两个tgtd的进程
tgt-admin --s ##开启服务后执行可以查看到共享的设备信息
(3)server1和server2的同样的操作:
yum install -y iscsi-* ##安装iscsi客户端服务
iscsiadm -m discovery -t st -p 172.25.33.3 ##发现共享设备
iscsiadm -m node -l ##将共享设备挂载到本地
cat /proc/partitions ##查看本地设备中是否有共享设备,一般名字都为sda
mkfs.ext4 /dev/sdb ##格式化文件系统
注意:当不分区或者只分一个区的时候,分区表被破坏了,若之前存在备份恢复分区表后,重新添加同样的分区,该分区可以照常使用,但是若存在两个以上的分区,则无法恢复。
此时,将该文件系统挂载到目录底下,即可实现存储设备的共享
6.RHCS集群使用ISCSI共享设备作为mysql数据库的存储文件使用
(1)所需环境同5一致:
(2)server1和server2中的操作如下:
server1和server2上继续设置:
yum install -y mysql-server ##安装数据库软件
mount /dev/sda1 /var/lib/mysql/ ##将刚才格式化的设备挂载到mysql的数据目录下
ll -d /var/lib/mysql/ ##查看权限可以看到是root,因为这是mysql软件运行存放数据的,所以改回mysql
chown mysql.mysql /var/lib/mysql/
/etc/init.d/mysqld start ##启动服务
ls /var/lib/mysql/ ##可以看到产生了数据
/etc/init.d/mysqld stop ##停止服务
umount /var/lib/mysql/ ##取消挂载
(3)图型化界面管理mysql
首先添加数据库故障转移域dbfail
然后添加资源
然后添加资源
(4)查看集群状态
当server2中mysqld服务关闭,成功转移到server1中
7.RHCS集群使用GFS2实现文件实时共享
GFS2:全局文件系统第二版,GFS2是应用最广泛的集群文件系统。它是由红帽公司开发出来的,允许所有集群节点并行访问。元数据通常会保存在共享存储设备或复制存储设备的一个分区里或逻辑卷中。通过RHCS集群套件搭建GFS2集群文件系统,保证不同节点能够同时对GFS2集群文件系统进行读取和写入。
(1)所需环境:
与6中环境一致
(2)server1和server2的设定:
/etc/init.d/clvmd status ##确保在共享服务开启前这个存储服务是开启的,否则后面会有冲突
vim /etc/lvm/lvm.conf ##查看共享设备模式是否为集群模式3
lvmconf --disable-cluster ##可恢复默认模式1
lvmconf --enable-cluster ##如果不是模式3可以用此命令变成模式3
fdisk -cu /dev/sdb
mount /dev/sdb /var/lib/mysql ##一个新设备的权限还是root,所以需要重新修改权限
chown mysql.mysql /var/lib/mysql
pvcreate /dev/sdb ##把原来的设备删掉,创建一个新设备来共享
vgcreate clustervg /dev/sdb
lvcreate -L 4G -n demo clustervg
clustat ##在使用gfs2格式化之前先确认集群的名称,自己的集群名称是什么就写什么
mkfs.gfs2 -t westos_ha:mygfs2 -p lock_dlm -j 2 /dev/clustervg/demo ##以gfs2格式将它格式化,用法实例可以通过man查看
blkid ##查看本地的设备信息,可以看到server1和server2上的uuid是相同的
开机的自动挂载:##注意:应该在不是开机自动运行服务的那台主机上写文件
vim /etc/fstab
UUID="写自己设备的uuid" /var/lib/mysql gfs2 _netdev 0 0
(3)测试,可以看到实现了文件的实时共享:
(4)将6中的ext4文件系统替换为gfs2:
先在资源组中删除之前添加的ext4文件系统,然后点击submit
在资源中同样删除文件系统db
资源中添加gfs2
资源组mysqld中添加gfs2
此时,mysqld资源组处于关闭状态,点击运行,然后在命令行中进行测试,可以看到server1和server2实现了文件同时共享