前面介绍了 HeartBeat 及其集群高可用部署、DRBD原理与实践、DRBD配置与管理、高可用集群架构 corosync+pacemaker、LVS+KeepAlived、haproxy+keepalived+nginx 实现 k8s 集群负载均衡、Pacemaker+Corosync 高可用架构实战等相关的知识点,今天我将详细的为大家介绍高可用集群管理工具 RHCS相关知识,希望大家能够从中收获多多!如有帮助,请点在看、转发朋友圈支持一波!!!
RHCS是Red Hat Cluster Suite的缩写,也就是红帽集群套件,RHCS是一个能够提供高可用性、高可靠性、负载均衡、存储共享且经济廉价的集群工具集合,它将集群系统中三大集群架构融合一体,可以给web应用、数据库应用等提供安全、稳定的运行环境。
更确切的说,RHCS是一个功能完备的集群应用解决方案,它从应用的前端访问到后端的数据存储都提供了一个行之有效的集群架构实现,通过RHCS提供的这种解决方案,不但能保证前端应用持久、稳定的提供服务,同时也保证了后端数据存储的安全。
RHCS提供了集群系统中三种集群构架,分别是高可用性集群、负载均衡集群、存储集群。更多关于企业集群运维管理系列的学习文章,请参阅:玩转企业集群运维管理专栏,本系列持续更新中。
是RHCS的核心功能。当应用程序出现故障,或者系统硬件、网络出现故障时,应用可以通过RHCS提供的高可用性服务管理组件自动、快速从一个节点切换到另一个节点,节点故障转移功能对客户端来说是透明的,从而保证应用持续、不间断的对外提供服务,这就是RHCS高可用集群实现的功能。
RHCS通过LVS来提供负载均衡集群,而LVS是一个开源的、功能强大的基于IP的负载均衡技术,LVS由负载调度器和服务访问节点组成,通过LVS的负载调度功能,可以将客户端请求平均的分配到各个服务节点,同时,还可以定义多种负载分配策略,当一个请求进来时,集群系统根据调度算法来判断应该将请求分配到哪个服务节点,然后,由分配到的节点响应客户端请求,同时,LVS还提供了服务节点故障转移功能,也就是当某个服务节点不能提供服务时,LVS会自动屏蔽这个故障节点,接着将失败节点从集群中剔除,同时将新来此节点的请求平滑的转移到其它正常节点上来;而当此故障节点恢复正常后,LVS又会自动将此节点加入到集群中去。而这一系列切换动作,对用户来说,都是透明的,通过故障转移功能,保证了服务的不间断、稳定运行。
RHCS通过GFS文件系统来提供存储集群功能,GFS是Global File System的缩写,它允许多个服务同时去读写一个单一的共享文件系统,存储集群通过将共享数据放到一个共享文件系统中从而消除了在应用程序间同步数据的麻烦,GFS是一个分布式文件系统,它通过锁管理机制,来协调和管理多个服务节点对同一个文件系统的读写操作。
上图为典型的集群拓扑结构:整个结构分为三个层面:
RHCS是一个集群工具的集合,主要由以下几大部分组成:
这是RHCS集群的一个基础套件,提供一个集合的基本功能,使各个节点组成集群在一起工作,具体包含分布式集群管理器(CMAN),成员关系管理,锁管理(DLM),配置文件管理(CCS),栅设备(FENCE)。
提供节点服务监控和服务故障转移功能,当一个节点服务出现故障时,将服务转移到一个健康节点。
RHCS最新版本利用LVS来配置和管理rhcs集群,LUCI是一个基于web的集群配置方式,通过luci可以轻松的搭建一个功能强大的集群系统。
LVS是一个开源的负载均衡软件,利用LVS可以将客户端的请求根据指定的负载均衡策略和算法合理的分配到各个服务节点,实现动态,智能的负载均衡的分担。
RHCS除了上面的几个核心构成,还可以通过下面的一些组件来补充RHCS集群功能:
GFS是redhat公司开发的一款集群文件系统,目前最新的版本是GFS2,GFS文件系统允许多个服务同时读写一些磁盘分区,通过GFS可以实现数据的集中管理,免去了数据同步和拷贝的麻烦,但GFS并不能孤立的存在,安装GFS需要RHCS的底层组建支持。
cluster逻辑卷管理器,即CLM,是LVM的扩展,这种扩展允许cluster中的机器使用lvm来管理共享存储。
iscsi是一种在internet协议上,特别是以太网上进行数据块传输的标准,它是一种基于IP Storage理论的新型存储技术,RHCS可以通过ISCSI技术来导出和分配共享存储的使用。
全局网络模块,简称GNBD,是GFS的一个补充组件,用于RHCS分配和管理共享存储,GNBD分为客户端和服务端,在服务端GNBD允许导出多个块设备或者GNBD文件,而GNBD客户端通过导入这些导出的文件或者块设备,就可以把它们当作本地块设备使用。由于现在GNBD已经停止了开发,所以使用GNBD的越来越少。
与服务相关,Failover Domain指定了集群中某个节点故障以后,该节点上的Service和Resource所能够转移的目标节点,进而限定了一个Resource能够转移的节点范围,可以理解为服务的故障转移域;每个Node都允许与多个Failover Domain进行绑定,也就是说每个Node都可以为多个Service服务,因此可以实现双主方式的集群配置。更多关于企业集群运维管理系列的学习文章,请参阅:玩转企业集群运维管理专栏,本系列持续更新中。
此实验中需要3台rhel6版本的虚拟机,分别是server1 server2 server3。 配好同一网段的ip地址,提前写好解析。
vim /etc/hosts #添加解析
172.25.254.1 server1
172.25.254.2 server2
172.25.254.3 server3
在server1和server2搭建高级的yum源:
在server1中
cd /etc/yum.repos.d/
ls
vim rhel-source.repo
将写好的文件发给server2:
scp rhel-source.repo root@172.25.254.2:/etc/yum.repos.d/
配置成功:
yum clean all
yum repolist
yum install ricci luci -y
给ricci设置密码:
id ricci
passwd ricci
启动ricci luci:
注意:企业6没有systemctl命令,所以启动关闭服务等操作需要用脚本来实现。
/etc/init.d/ricci start
/etc/init.d/luci start
chkconfig ricci on #设置开机自启
chkconfig luci on
yum install ricci -y
给ricci设置密码:
id ricci
passwd ricci
启动ricci:
/etc/init.d/ricci start
chkconfig ricci on
step1 在网页中输入网址:https://172.25.254.1:8084
即https://server1的ip:8084。
step2 登陆:
step3 创建集群:
此时server1和server2会重启,然后再重新连接server1和server2。
查看集群信息:
cd /etc/cluster/
cat cluster.conf
clustat
在真机中安装fence:
yum search fence
yum install fence-virtd.x86_64 fence-virtd-libvirt.x86_64 fence-virtd-multicast.x86_64 -y
systemctl start fence_virtd.service
systemctl status fence_virtd.service
编辑fence的配置文件:
fence_virtd -c
截取密钥:
mkdir /etc/cluster
cd /etc/cluster/
dd if=/dev/urandom of=/etc/cluster/fence_xvm.key bs=128 count=1
ls
将截取好的密钥文件发送给节点server1和server2:保证server1和server2利用的是同一个密钥。
scp fence_xvm.key root@172.25.254.1:/etc/cluster/
scp fence_xvm.key root@172.25.254.2:/etc/cluster/
添加fence设备:
绑定节点:
server2同上面的步骤。两个节点都要绑定。更多关于企业集群运维管理系列的学习文章,请参阅:玩转企业集群运维管理专栏,本系列持续更新中。
两个节点都绑定后配置文件内容应该如下:
cat /etc/cluster/cluster.conf
设置火墙:
systemctl stop firewalld
测试:在server1上通过fence干掉节点server2,使server2断电重启则为成功
fence_node server2
因为这个架构现在不常用了,所以,这里不做过多的介绍,大家只需要了解其原理与基本的配置过程即可,有需求的可以自行去官网详细了解。更多关于企业集群运维管理系列的学习文章,请参阅:玩转企业集群运维管理专栏,本系列持续更新中。
参考链接:https://blog.csdn.net/weixin_44224288 /article/details/89455370 https://blog.csdn.net/ nigar_/article/details/104462880