前言:FENCE工具的原理及作用
FENCE设备是RHCS集群中必不可少的一个组成部分,通过FENCE设备可以避免因出现不可预知的情况而造成的“脑裂”现象,FENCE设备的出现,就是为了解决类似这些问题,Fence设备主要就是通过服务器或存储本身的硬件管理接口,或者外部电源管理设备,来对服务器或存储直接发出硬件管理指令,将服务器重启或关机,或者与网络断开连接。
FENCE的工作原理是:当意外原因导致主机异常或者宕机时,备机会首先调用FENCE设备,然后通过FENCE设备将异常主机重启或者从网络隔离,当FENCE操作成功执行后,返回信息给备机,备机在接到FENCE成功的信息后,开始接管主机的服务和资源。这样通过FENCE设备,将异常节点占据的资源进行了释放,保证了资源和服务始终运行在一个节点上。
RHCS的FENCE设备可以分为两种:内部FENCE和外部FENCE,常用的内部FENCE有IBMRSAII卡,HP的iLO卡,还有IPMI的设备等,外部fence设备有UPS、SANSWITCH、NETWORKSWITCH等
实验准备
1.下面的实验使用的是rhel6系列(rhel6.5)的虚拟机,因此你需要有对应的镜像和yum源
2.准备三台虚拟机,为了区分主机名与IP分别为
server1 172.25.6.1
server2 172.25.6.2
server3 172.25.6.3
以下为FENCE搭建过程详解
一、创建集群
1.为设备配置yum源
vim /etc/yum.repos.d/rhel-source.repo
yum clean all
yum repolist
为了方便起见,我们将这份配置文件发送到其他主机上
scp /etc/yum.repos.d/rhel-source.repo server2:/etc/yum.repos.d/
2.安装软件
(1)server1安装ricci和luci图形管理器,启动服务,设置开机自启
yum install -y ricci luci
/etc/init.d/ricci start
/etc/init.d/luci start
chkconfig ricci on
chkconfig luci on
安装完之后可以看到/etc/passwd文件中自动生成了一个ricci用户
passwd ricci ##为ricci用户用户设置密码
(2)server2上安装ricci,启动服务,设置开机自启,修改ricci用户密码
yum install ricci -y
/etc/init.d/ricci start
chkconfig ricci on
passwd ricci
补充:如何查看系统开机自起项
chkconfig --list
4.查看服务端口详情
netstat -tnlp
5.浏览器访问https://172.25.6.1:8084 出现下面的界面,手动导入证书
点击【Advanced】
点击【Add】
点击【Confirm…】
6.登录
登录的账号和密码是server1中的系统用户和密码,普通用户需要经过超级用户的审核才能登录,所以一般选用超级用户登录
7.创建集群
(1)点击集群管理(manage cluster),选择create,创建集群
(2)设置集群的基本信息,添加节点
(3)点击create cluster开始创建,可以看到开始创建集群
注意:创建时两台虚拟机都会重启,如果之前没有设置服务开机启动这个时候就会报错,重启后要在虚拟机中手动打开服务创建的过程才会继续
(4)创建集群完成,节点添加成功
8.创建完成之后可以服务所在的主机(server1)中查看配置文件
cat /etc/cluster/cluster.conf
server1和server2分别查看节点状态
server1上:
server2上:
可以看到ricci运行的端口是11111
注意:删除集群时要先删除节点,节点删除后集群会自动消失
集群中的服务如下:
二、配置fence设备
fence服务在物理机配置,(在集群之外)
1.物理机安装fence软件
yum search fence
yum install -y fence-virtd.x86_64 fence-virtd-libvirt.x86_64 fence-virtd-multicast.x86_64
2.创建一个目录/etc/cluster,生成的key将会保存在这个目录中
3 . 编辑fence配置文件
fence_virtd -c
4.编辑完之后如果没有生成密钥文件,可以手动生成一个
dd if=/dev/urandom of=/etc/cluster/fence_xvm.key bs=128 count=1
5.将生成的密钥文件发送给节点server1和server2
scp fence_xvm.key server1:/etc/cluster/
scp fence_xvm.key server2:/etc/cluster/
server1和server2查看
ls /etc/cluster
6.物理机打开fence服务
systemctl start 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配置文件的内容如下
cat /etc/cluster/cluster.conf
netstat可以查看到fence使用的端口
9.测试:
server1通过fence干掉server2,可以看到server2断电重启
fence_node server2
三、高可用服务配置(以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上:
yum install httpd -y
vim /var/www/html/index.html
/etc/init.d/httpd start
server2上:
yum install httpd -y
vim /var/www/html/index.html
/etc/init.d/httpd start
5.刷新页面,显示httpd服务运行在server1上(server1优先级高
(1)在两个节点上分别查看cluster的状态
(2)查看server1和server2的ip,发现VIP在server1上
(3)物理机测试:访问VIP访问到的是server1
6.在web中设置httpd运行现在server2上
(1)查看状态,httpd运行在server2上
(2)查看server2ip,VIP在server2上
(3)物理机测试:访问VIP,访问到的是server2
7.测试高可用
(1)在server2中输入echo c> /proc/sysrq-tigger,破坏server2的内核
(3)查看状态,httpd转移在server1上运行,VIP出现在server1上
(4)物理机访问VIP出现的是server1
(5)如果手动关闭server1的httpd,服务将自动转移到server2上
/etc/init.d/httpd stop
总结:没有手动开启httpd服务时在web集群管理界面,刷新界面只会开启一个节点的httpd,所以当服务落在某一个节点时只能访问到虚拟ip和当前节点,其他节点是访问不到的