一、简介
RHCS即 RedHat Cluster Suite ,中文意思即红帽集群套件,它是一套综合的软件组件,可以通过在部署时采用不同的配置,以满足企业对高可用性,负载均衡,可扩展性,文件共享和节约成本的需要。
它提供有如下两种不同类型的集群:
- 1、高可用性:应用/服务故障切换-通过创建n个节点的服务器集群来实现关键应用和服务的故障切换
- 2、负载均衡:IP 负载均衡-对一群服务器上收到的 IP 网络请求进行负载均衡
二、搭建RHCS环境
1、基本环境说明:
- 操作系统:rhel6.5
- 准备四台主机:
主机:172.25.96.250,后面作fence,暂时不用
server1: 172.25.96.1 下载ricci,luci(提供Conga配置用户界面),作主节点
server4:172.25.96.4 下载ricci,作副节点
server3:172.25.96.3 ,后面作iscci共享存储,暂时不用
2、安装软件的说明
集群中luci的作用:
luci是用来配置和管理集群,监听在8084上
集群中ricci的作用:
ricci是安装在每个后端的每个节点上的,luci管理集群上的各个节点就是通过和节点上的ricci进行通信,ricci监听在11111上
集群中fence的作用:
在HA集群坏境中,备份服务器B通过心跳线来发送数据包来看服务器A是否还活着,主服务器A接收了大量的客户端访问请求,服务器A的CPU负载达到100%响应不过来了,资源已经耗尽,没有办法回复服务器B数据包(回复数据包会延迟),这时服务器B认为服务器A已经挂了,于是备份服务器B把资源夺过来,自己做主服务器,过了一段时间服务器A响应过来了,服务器A觉得自己是老大,服务器B觉得自己也是老大,他们两个就挣着抢夺资源,集群资源被多个节点占有,两个服务器同时向资源写数据,破坏了资源的安全性和一致性,这种情况的发生叫做“脑裂”。服务器A负载过重,响应不过来了,有了Fence机制,Fence会自动的把服务器A给Fence掉,阻止了“脑裂"的发生
FENCE的工作原理是:当意外原因导致主机异常或者宕机时,备机会首先调用FENCE设备,然后通过FENCE设备将异常主机重启或者从网络隔离,当FENCE操作成功执行后,返回信息给备机,备机在接到FENCE成功的信息后,开始接管主机的服务和资源。这样通过FENCE设备,将异常节点占据的资源进行了释放,保证了资源和服务始终运行在一个节点上。
Fence分类:
硬件Fence:电源Fence,通过关掉电源来踢掉坏的服务器
软件Fence:Fence卡(智能卡),通过线缆、软件来踢掉坏的服务器
第二种分法:
内部FENCE:IBM RSAII卡,HP的iLO卡,还有IPMI的设备等
外部FENCE:UPS、SAN SWITCH、NETWORK SWITCH等
实际坏境中,Fence卡连接的都是专线,使用专用的Fence网卡,不会占用数据传输线路,这样,更能保证稳定及可靠性。
Fence卡的IP网络和集群网络是相互依存的
3、server1和server4上配置高可用yum源
[root@server1 ~]# vim /etc/yum.repos.d/rhel-source.repo
查看yum源是否可用
[root@server1 ~]# yum clean all
[root@server1 ~]# yum repolist
这里可将server1配置好的高可用yum源直接scp给server4,server就不需要再配置高可用yum源。
4、开始安装及配置
1)安装ricci(每个集群中的节点上都要安装)
[root@server1 ~]# yum install -y ricci
设置ricci密码
[root@server1 ~]# passwd ricci
启动服务并设置开机自启
[root@server1 ~]# /etc/init.d/ricci start
[root@server1 ~]# chkconfig ricci on
2)安装luci(只在server1上安装)
[root@server1 ~]# yum install -y luci
启动服务并设置开机自启
[root@server1 ~]# /etc/init.d/luci start
[root@server1 ~]# chkconfig luci on
根据上面提示网站,登陆到管理界面来进行配置
注:这里进行登陆,一直是在建立连接,不能登陆,猜想可能是物理机上火墙打开着,查看火墙并没有开,检查本地的解析,也有server1的解析,尝试将server1换成其ip再次登陆,登陆成功。
用安装luci的root用户登陆。
创建cluster,Node Name写节点的主机名,密码就是ricci用户的密码
点击Create Cluster,进入这个页面,
若一直是这个等待页面,是因为在上面安装ricci和luci的时候没有设置开机自启,这是就要手动的打开虚拟机,开启服务。
如下图,两个集群节点已经创建完毕。
可使用cluster命令查看节点状态。
添加webfail
添加资源:添加到集群的资源一定是屏蔽掉的,因为要交给集群去管理开启
查看添加的资源
创建一个web组
点击web组进入,Add Resource选项,将上面添加的ip和脚本资源加入到web组中。
查看服务状态
查看ip,也将我们设置的ip添加再了server1上。
测试
在物理机上输入添加的ip,得到的也是server1的测试页。
clustat命令说明:
clustat用来查看集群系统中每个节点以及服务的运行状态,
在上面的图中,可以看到每个节点都处于“Online”状态,表明每个节点都运行正常,如果某个节点退出了集群,对应的状态应该是“Offline”,同时还可以看到,集群的一个服务web处于“started”状态,运行在server1节点。
另外,通过“ID”一列可以知道集群节点的对应关系,例如,server1在此集群中对应的就是“Node 1”节点,同理,server2对应的是“Node 2”节点。了解集群节点顺序有助于对集群日志的解读。
还有许多参数例如"-i","-m"等等,可通过clustat --help进行查看。
clusvcadm命令说明:
用于管理应用服务,通过这个命令可以启动、关闭、重启、切换集群中的应用服务。
例如:启动某个应用服务
可以通过如下方式启动某个节点的应用服务:
clusvcadm -e -m
其中:
Service:表示集群中创建的应用服务名称。
Node:表示集群节点名称。
例如,要启动节点server1上的web服务,操作如下:
切换集群中的应用服务:将一个应用服务从一个节点切换到另一个节点
详细使用参数和方法可通过clusvcadm --help查看。
上述这些在命令行进行的修改都可以在HA网页管理界面进行修改,比较简单,这里不做说明和演示。
三、安装fence_virtd服务
故障切换:
RHCS的一个很重要概念:Failover Domain故障转移域,更准确地说应该是服务故障转移域(一个服务包括多个资源如VIP FileSystem…)key当i定义一个节点故障后,此节点上的资源能够转移的目标节点,进而限制了资源转移的范围。
FENCE设备是RHCS集群中必不可少的一个组成部分,通过FENCE设备可以避免因出现不可预知的情况而造成的“脑裂”现象,FENCE设备的出现,就是为了解决类似这些问题,Fence设备主要就是通过服务器或存储本身的硬件管理接口,或者外部电源管理设备,来对服务器或存储直接发出硬件管理指令, 将服务器重启或关机,或者与网络断开连接。
需要安装的包有以下三个:
fence-virtd-multicast.x86_64
fence-virtd-libvirt.x86_64
fence-virtd.x86_64
1)安装服务并进行配置
[root@foundation96 ~]# yum install -y fence-virtd.x86_64 fence-virtd-libvirt.x86_64 fence-virtd-multicast.x86_64
[root@foundation96 ~]# fence_virtd -c
使用以上命令进行交互式的配置fence文件
这里需要注意接口这一项(默认为virbr0,我们应选择br0,因为虚拟服务器受主机控制的网卡是br0 ):
其余选项均回车,使用默认选项即可,最后输入y进行保存配置。
2)生成128位的key,并将key发送到套件集群服务器(server1,server4)的/etc/cluster目录下。
3)启动fence_virtd服务
[root@foundation96 cluster]# systemctl restart fence_virtd
4)在luci上进行配置
选择Fence Devices,点击Add,选择模式为”Fence virt (Multicast Mode)”,输入一个Fence名称(名称可任意输入,但尽量具有代表性),点击Submit
点击Nodes,选择server1,点击界面下的”Add Fence Method”,输入一个自定义的server1的Fence名称,例如fence1
点击Add Fence Instance,选择之前设置好的vmfence,输入Domain(虚拟服务器的UUID或者虚拟机的名称均可,这里推荐使用UUID),在另一个server4上做同样操作,名称fence2,Domain为server4的UUID。
这样fence就设置完成,接下来测试fence。
首先查看服务的工作状态
[root@server4 ~]# echo c > /proc/sysrq-trigger
直接使server4的内核崩溃
等待几秒钟,server重新启动。
查看服务的状态,此时工作在server1上,并且server4重新启动后,恢复正常为online状态。