-
什么是RHCS
-
RHCS是Red Hat Cluster Suite的缩写,也就是红帽子集群套件,RHCS是一个能够提供高可用性、高可靠性、负载均衡、存储共享且经济廉价的集群工具集合,它将集群系统中三大集群架构融合一体,可以给web应用、数据库应用等提供安全、稳定的运行环境。RHCS提供了从前端负载均衡到后端数据存储的完整解决方案,是企业级应用的首选,更确切的说,RHCS是一个功能完备的集群应用解决方案,它从应用的前端访问到后端的数据存储都提供了一个行之有效的集群架构实现,通过RHCS提供的这种解决方案,不但能保证前端应用持久、稳定的提供服务,同时也保证了后端数据存储的安全。
-
RHCS提供了集群系统中三种集群构架,分别是高可用性集群、负载均衡集群、存储集群
-
RHCS提供的三个核心功能
-
高可用集群: 是RHCS的核心功能。当应用程序出现故障,或者系统硬件、网络出现故障时,应用可以通过RHCS提供的高可用性服务管理组件自动、快速从一个节点切换到另一个节点,节点故障转移功能对客户端来说是透明的,从而保证应用持续、不间断的对外提供服务,这就是RHCS高可用集群实现的功能。
-
负载均衡集群: RHCS通过LVS来提供负载均衡集群,而LVS是一个开源的、功能强大的基于IP的负载均衡技术,LVS由负载调度器和服务访问节点组成,通过LVS的负载调度功能,可以将客户端请求平均的分配到各个服务节点,同时,还可以定义多种负载分配策略,当一个请求进来时,集群系统根据调度算法来判断应该将请求分配到哪个服务节点,然后,由分配到的节点响应客户端请求,同时,LVS还提供了服务节点故障转移功能,也就是当某个服务节点不能提供服务时,LVS会自动屏蔽这个故障节点,接着将失败节点从集群中剔除,同时将新来此节点的请求平滑的转移到其它正常节点上来;而当此故障节点恢复正常后,LVS又会自动将此节点加入到集群中去。而这一系列切换动作,对用户来说,都是透明的,通过故障转移功能,保证了服务的不间断、稳定运行。
-
存储集群: RHCS通过GFS文件系统来提供存储集群功能,GFS是Global File System的缩写,它允许多个服务同时去读写一个单一的共享文件系统,存储集群通过将共享数据放到一个共享文件系统中从而消除了在应用程序间同步数据的麻烦,GFS是一个分布式文件系统,它通过锁管理机制,来协调和管理多个服务节点对同一个文件系统的读写操作。
-
集群套件的作用
-
集群中luci的作用:
luci是用来配置和管理集群,监听在8084上 -
集群中ricci的作用:
ricci是安装在每个后端的每个节点上的,luci管理集群上的各个节点就是通过和节点上的ricci进行通信,ricci监听在11111上 -
集群中fence的作用:
当意外原因导致主机异常或者宕机时,备机会首先调用fence设备,然后通过fence设备将异常主机重启或者从网络隔离,当fence操作成功执行后,返回信息给备机,备机在接到fence成功的信息后,开始接管主机的服务和资源。这样通过fence设备,将异常节点占据的资源进行了释放,保证了资源和服务始终运行在一个节点上。并且有效的阻止了“脑裂"的发生。主备机之间通过心跳检测来检查主机是否正常运行,当主机宕机时将资源转移给备机,但是当主机和备机之间时去通信两者正常时不会出现资源枪战的情况,会将主机断电
实验环境:
主机名 | IP | 服务 |
---|---|---|
server1 | 172.25.22.1 | ricci,luci,httpd |
server2 | 172.25.22.2 | ricci,httpd |
fundition22 | 172.25.22.250 | fence |
一、创建集群
-
rhcs套件在红帽6中有,红帽7中没有
-
ricci—> rhcs集群管理工具
-
luci —> web图形界面
-
server1即做管理节点,又作HA节点
server2做HA节点 两者构成一个集群
1.server1和server2配置高级yum源
(1)server1配置yum源
[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]# yum clean all
[root@server1 yum.repos.d]# yum repolist
(2)server1将配置好的yum文件传给server2
[root@server1 yum.repos.d]# scp rhel-source.repo server2:/etc/yum.repos.d/
(3)server2查看
[root@server2 ~]# ls /etc/yum.repos.d/
rhel-source.repo
[root@server2 ~]# vim /etc/yum.repos.d/rhel-source.repo
(4)添加地址解析
2.安装软件
(1)server1安装ricci和luci图形管理器
[root@server1 ~]# yum install -y ricci luci
安装完之后可以看到/etc/passwd文件中自动生成了一个ricci用户
(2)server2安装ricci
[root@server2 ~]# yum install ricci -y
3.设置ricci密码,输入密码是没有回显的
(1)server1
[root@server1 ~]# passwd ricci
Changing password for user ricci.
New password:
BAD PASSWORD: it is based on a dictionary word
BAD PASSWORD: is too simple
Retype new password:
passwd: all authentication tokens updated successfully.
(2)server2
[root@server2 ~]# passwd ricci
Changing password for user ricci.
New password:
BAD PASSWORD: it is based on a dictionary word
BAD PASSWORD: is too simple
Retype new password:
passwd: all authentication tokens updated successfully.
4.开启服务,设置开机启动
(1)server1
开启服务
[root@server1 ~]# /etc/init.d/ricci start
[root@server1 ~]# /etc/init.d/luci start
设置luci和ricci开机自启动,chkconfig --list可以查看服务是否开机启动(2-5列全是on表示开机启动)
[root@server1 ~]# chkconfig luci on
[root@server1 ~]# chkconfig --list
[root@server1 ~]# chkconfig ricci on
[root@server1 ~]# chkconfig --list
[root@server1 ~]# netstat -tnlp
(2)server2
[root@server2 ~]# /etc/init.d/ricci start
[root@server2 ~]# chkconfig ricci on
5.浏览器访问https://172.25.22.1:8084 出现下面的界面,手动导入证书
6.登录
登录的账号和密码是server1中的系统用户和密码,普通用户需要经过超级用户的审核才能登录,所以一般选用超级用户登录
7.创建集群
(1)点击集群管理(manage cluster),选择create,创建集群
(2)设置集群的基本信息,添加节点
(3)点击create cluster开始创建,可以看到开始创建集群
注意:创建时两台虚拟机都会重启,如果之前没有设置服务开机启动这个时候就会报错,重启后要在虚拟机中手动打开服务创建的过程才会继续
创建集群的过程中两个节点会重启,所以之前的ssh连接会断开
server1:
server2:
(4)创建集群完成,节点添加成功
创建完成之后可以在虚拟机中查看配置文件
[root@server1 ~]# cat /etc/cluster/cluster.conf
[root@server2 ~]# cat /etc/cluster/cluster.conf
server1和server2分别查看节点状态
server1
[root@server1 ~]# clustat
Cluster Status for westos_ha @ Sat Apr 20 10:28:44 2019
Member Status: Quorate
Member Name ID Status
------ ---- ---- ------
server1 1 Online, Local
server2 2 Online
server2
[root@server2 ~]# clustat
Cluster Status for westos_ha @ Sat Apr 20 10:28:55 2019
Member Status: Quorate
Member Name ID Status
------ ---- ---- ------
server1 1 Online
server2 2 Online, Local
可以看到ricci运行的端口是11111
注意:删除集群时要先删除节点,节点删除后集群会自动消失
集群中的服务如下:
fence服务在物理机配置(在集群之外)
二、配置fence设备
1.物理机安装fence软件
[root@foundation22 ~]# yum install -y fence-virtd.x86_64 fence-virtd-libvirt.x86_64 fence-virtd-multicast.x86_64
2.创建一个目录/etc/cluster,生成的key将会保存在这个目录中
[root@foundation22 ~]# mkdir /etc/cluster
[root@foundation22 ~]# cd /etc/cluster
[root@foundation22 cluster]# ls
3 . 编辑fence配置文件
[root@foundation22 cluster]# fence_virtd -c
4.编辑完之后如果没有生成密钥文件,自己截取一个
[root@foundation22 ~]# ls /etc/cluster/
[root@foundation22 ~]# cd /etc/cluster
[root@foundation22 cluster]# 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.000166898 s, 767 kB/s
[root@foundation22 cluster]# ls
fence_xvm.key
5.将生成的密钥文件发送给节点server1和server2
[root@foundation22 cluster]# scp fence_xvm.key server1:/etc/cluster/
[root@foundation22 cluster]# scp fence_xvm.key 172.25.22.2:/etc/cluster/
server1和server2查看
[root@server1 ~]# ls /etc/cluster
cluster.conf cman-notify.d fence_xvm.key
[root@server2 ~]# ls /etc/cluster
cluster.conf cman-notify.d fence_xvm.key
6,物理机打开fence服务
[root@foundation22 cluster]# systemctl start fence_virtd.service
[root@foundation22 cluster]# systemctl status fence_virtd.service
7.浏览器中luci添加分fence设备
(1)点击fence devices,点击add
(2)选择多播模式,设置fence设备的名字为vmfence
8.绑定节点
(1)点击nodes,点击server1
(2)点击add fence method
(3)起名为vmfence-1
(4)点击add fence instance
(5)选择刚刚建立的fence设备,domain后面填server1节点的UUID,UUID可以在虚拟机图形管理器中查看
(6)server2重复上面的步骤
(7)两个节点都绑定后可以看到fence配置文件的内容如下
[root@server1 ~]# cat /etc/cluster/cluster.conf
netstat可以查看到fence使用的端口
[root@foundation22 cluster]# netstat -autnlp | grep fence_virtd
udp 0 0 0.0.0.0:1229 0.0.0.0:* 7522/fence_virtd
9.测试:
server1通过fence干掉server2,可以看到server2断电重启
[root@server1 ~]# fence_node server2
fence server2 success
failover domain 失败回切
一个节点宕机后另一个接管的服务,之前的恢复之后有切回到他
运行独占,节点上只能启动这一个服务,别的服务启动不了
三、高可用服务配置(以httpd为例)
1.设置失败回切(故障转移域)
点击add
命名为webfail,当一个节点出现故障时切换到正常的哪一个上,将server1和server2添加在域中,设置两个节点的优先级,数字越小优先级越高
2.设置回切资源(以httpd的高可用为例)
点击add --> 添加ip address(集群外的VIP)—>设置切换主机的时间5秒—>submit提交
再次点击add–>添加script(因为httpd时脚本启动的)—>添加/etc/init.d/httpd文件
3.设置资源组
点击add设置资源组的名字为apache -->添加资源(上一不中添加的vip)—>添加资源(httpd脚本)
添加完成后如下
4.server1和server2安装httpd服务,编辑测试页
server1
[root@server1 ~]# yum install -y httpd
[root@server1 ~]# vim /var/www/html/index.html
[root@server1 ~]# cat /var/www/html/index.html
server1
server2
[root@server2 ~]# yum install -y httpd
[root@server2 ~]# vim /var/www/html/index.html
[root@server2 ~]# cat /var/www/html/index.html
server2
5.刷新页面,显示httpd服务运行在server1上(server1优先级高)
(1)在两个节点上分别查看cluster的状态
(2)查看server1和server2的ip,发现VIP在server1上
(3)物理机测试:访问VIP访问到的是server1
此时访问server1正常,访问server2出现报错,连接失败
6.在web中设置httpd运行现在server2上
(1)查看状态,httpd运行在server2上
(2)查看server2ip,VIP在server2上
(3)物理机测试:访问VIP,访问到的是server2
7.测试高可用
(1)在server2中输入echo c> /proc/sysrq-tigger,破坏server2的内核
(2)等待5秒server2断电重启
(3)查看状态,httpd转移在server1上运行,VIP出现在server1上
(4)物理机访问VIP出现的是server1
server1查看ip,VIP在server1上
(5)如果手动关闭server1的httpd,服务将自动转移到server2上
总结:没有手动开启httpd服务时在web集群管理界面,刷新界面只会开启一个节点的httpd,所以当服务落在某一个节点时只能访问到虚拟ip和当前节点,其他节点是访问不到的