一、什么是RHCS
RHCS是Red Hat Cluster Suite的缩写,也就是红帽集群套件,RHCS是一个能够提供高可用性、高可靠性、负载均衡、存储共享且经济廉价的集群工具集合,它将集群系统中三大集群架构融合一体,可以给web应用、数据库应用等提供安全、稳定的运行环境。 更确切的说,RHCS是一个功能完备的集群应用解决方案,它从应用的前端访问到后端的数据存储都提供了一个行之有效的集群架构实现,通过RHCS提供的这种解决方案,不但能保证前端应用持久、稳定的提供服务,同时也保证了后端数据存储的安全。 RHCS提供了集群系统中三种集群构架,分别是高可用性集群、负载均衡集群、存储集群。
二、RHCS提供的三个核心功能
高可用集群是RHCS的核心功能。当应用程序出现故障,或者系统硬件、网络出现故障时,应用可以通过RHCS提供的高可用性服务管理组件自动、快速从一个节点切换到另一个节点,节点故障转移功能对客户端来说是透明的,从而保证应用持续、不间断的对外提供服务,这就是RHCS高可用集群实现的功能。 RHCS通过LVS(Linux Virtual Server)来提供负载均衡集群,而LVS是一个开源的、功能强大的基于IP的负载均衡技术,LVS由负载调度器和服务访问节点组成,通过LVS的负载调度功能,可以将客户端请求平均的分配到各个服务节点,同时,还可以定义多种负载分配策略,当一个请求进来时,集群系统根据调度算法来判断应该将请求分配到哪个服务节点,然后,由分配到的节点响应客户端请求,同时,LVS还提供了服务节点故障转移功能,也就是当某个服务节点不能提供服务时,LVS会自动屏蔽这个故障节点,接着将失败节点从集群中剔除,同时将新来此节点的请求平滑的转移到其它正常节点上来;而当此故障节点恢复正常后,LVS又会自动将此节点加入到集群中去。而这一系列切换动作,对用户来说,都是透明的,通过故障转移功能,保证了服务的不间断、稳定运行。 RHCS通过GFS文件系统来提供存储集群功能,GFS是Global File System的缩写,它允许多个服务同时去读写一个单一的共享文件系统,存储集群通过将共享数据放到一个共享文件系统中从而消除了在应用程序间同步数据的麻烦,GFS是一个分布式文件系统,它通过锁管理机制,来协调和管理多个服务节点对同一个文件系统的读写操作。
三、RHCS集群的组成
RHCS是一个集群工具的集合,主要有下面几大部分组成:
集群构架管理器:这是RHCS集群的一个基础套件,提供一个集群的基本功能,使各个节点组成集群在一起工作,具体包含分布式集群管理器(CMAN)、成员关系管理、锁管理(DLM)、配置文件管理(CCS)、栅设备(FENCE)。
高可用服务管理器:提供节点服务监控和服务故障转移功能,当一个节点服务出现故障时,将服务转移到另一个健康节点。
四、RHCS集群的配置
实验环境主机配置及功能:
server4 ip:172.25.2.1 安装ricci(集群节点)
server1 ip 172.25.2.4 安装ricci(集群节点) 和 luci(集群管理界面)
fence主机:双ip(一个外网,一个172.25.2.2),apache服务用来挂载镜像,安装fence
1)在server1中安装ricci和luci软件包。并设置启动(首先。你需要有相应的yum源的仓库。在之前的博客中已经说明过了,在此就不多说了)
---> yum install ricci luci -y
---> /etc/init.d/ricci start # 启动ricci服务
---> chkconfig ricci on # 设置该服务为开机自启动
---> chkconfig --list ricci # 查看是该服务的状态
---> echo xniu |passwd --stdin ricci # 给ricci用户添加密码
---> /etc/init.d/luci start # 对luci进行类似的操作
---> chkconfig luci on
---> echo xniu| passwd --stdin luci
注意:在启动ricci服务的过程中,若/etc/sysconfig/network文件中没有参数NETWORKING=yes时,会出现服务启动不了的问题。
2)在server4中ricci软件的安装和服务的启动等设置
---> yum install ricci -y
---> /etc/init.d/ricci start
---> chkconfig ricci on
---> passwd xniu|grep --stdin ricci
---> server ricci status # 查看ricci的状态是否启动
3)在物理机中进行域名解析:
---> vim /etc/hosts # 修改配置文件。添加域名解析
172.25.2.1 server1
172.25.2.4 server4
4)在物理机的浏览器中进行如下添加
---> https://server1:8084 # 在浏览器中输入,会出现群管理的登陆界面 (此时添如root和之前luci用户的密码)
具体配置如下:
五、配置实现nginx的高可用(nginx的安装在之后的博客中有,在此就不多写了)
1)集群的创建:点击集群管理(Manager Clusters),然后点击create出现以下页面,创建自己的集群名称
2) 建立错误恢复域,当一个节点有问题,可以切换到另一节点上(设置server1优先级高)
3)添加要用的资源vip和nginx(ip中参数有子网掩码、vip、切换主机时间5s)
4)在集群中添加服务组,要按顺序来添加资源,首先时ip--》存储空间---》服务。
# 完成之后启动资源组,我们可以查看到当前运行的状态(运行在server1上,由于优先级问题,先启动server1)
5)在server1和server4中进行nginx服务测试。在浏览器中输入172.25.2.100会出现如下界面:(nginx的负载均衡)
# 也可以使用命令clustat查看服务在节点的运行情况
# 当server1中关闭nginx服务,自动会到server4节点上。从而实现服务的高可用(有出错检查时间,所以切换慢一点)
---> /etc/init.d/nginx stop
6)clusvcdm集群管理的基本操作
六、FENCE设备与nginx结合的高可用
fence:当发生意外导致主机异常或不是简单的停机服务时,备用机会首先调用fence设备,然后通过fence设备将异常的主机重新启动或从网络上隔离,释放异常主机占据的资源,当隔离成功,返回资源信息给备用机,备用机在接收到信息后,开始接管主机的服务和资源,
fence原理:通过栅设备可以从集群共享存储中断开一个节点,切断I/O以确保数据的完整性。当CMAN确定一个节点失败后,它在集群结构中通告这个失败的节点,fence进程将失败的节点隔离,以保证节点不破坏共享数据。它可以避免因出现不可预知的情况而造成的“脑裂”(split-brain)现象。脑裂是指当两个节点之间的心跳线中断时,两台主机均认为自己时主节点,于是对集群资源进行争用、抢夺。
RHCE的fence设备有两种:内部fence和外部fence。当节点A上的栅过程发现C节点失效时,它通过栅代理通知光纤通道交换将c节点隔离,从而释放占用的共享通道。当A上的栅过程发现c节点失效时,通过栅代理直接对服务器做power on/off操作,而不去执行操作系统的开关机。
1)在真机中安装fence服务,并设置开机自启动
---> yum install fence-virtd-libvirt.x86_64 fence-virtd-multicast.x86_64 fence-virtd.x86_64 -y
---> systemctl start fence-virtd
---> systemctl enabled fence-virtd
2)配置fence的配置文件
---> fence_virtd -c # 在nginx的高可用中说过了,在这就不多写了
3)在真机中,生成密钥
---> mkidr /etc/cluster
---> dd if=/dev/urandom of/fence_xvm bs=128 count=1 # 截取密码文件
4)将生成的fence_xvm发送给server1和server4
---> scp /etc/cluster/fence_xvm server1:/etc/cluster
---> scp /etc/cluster/fence_xvm server4:/etc/cluster
5)在luci管理界面添加fence
# 首先在fence Dvice中添加vmfence1和vmfence2
# 添加完成后情况如下所示
#在节点server1和server4中把对应的vmfence添加进去(此处的uuid为vm1的唯一的id),此处为server1为例子
# 添加完成可以看到vmfence的信息
6)完成后启动nginx资源组,并进行测试。
---> echo c> /proc/sysrq-trigger # 使server4主机崩了之后,服务会自动切换到server1上。(此时server4状态为offline)
# 过一会,server4主机自启动之后,结果为:(servr4为online)