1.Fence设备的原理(报头)
server1为主master, server2为备backup
当 server1因为网络原因卡住而并非断电时, server2会对 server1进行抢夺,此时会对两台服务器造成巨大消耗。因此,当 server2抢夺 server1的资源时将 server1断电。此时 server1再次上线时就只能做为备backup设备,两者可以相互断电。
在真实主机上,fence连接的是空气闸刀,使设备断电
2.实验环境(配置Fence)
步骤一:真机安装fence
[root@foundation42 ~]# yum install fence-virtd.x86_64 fence-virtd-libvirt.x86_64 fence-virtd-multicast.x86_64 -y
[root@foundation42 ~]# fence_virtd -c
[root@foundation42 ~]# cat /etc/fence_virt.conf
步骤二:创建/etc/cluster目录,制作key
[root@foundation42 etc]# cd /etc/cluster/#切换到集群目录中
利用文件/etc/fence_virt.conf生成key,发送给服务器
[root@foundation42 etc]# dd if=/dev/urandom of=/etc/cluster/fence_xvm.key bs=128 count=1 #生成key
[root@foundation42 etc]# scp fence_xvm.key [email protected]:/etc/cluster/
[root@foundation42 etc]# scp fence_xvm.key [email protected]:/etc/cluster/ #发送给集群节点
由于fence服务时真机提供给服务器的,因此需要开启fence服务
[root@foundation42 etc]# systemctl start fence_virtd.service #开启fence服务
[root@foundation42 etc]# systemctl status fence_virtd.service #查看fence状态
步骤三:检查server1和server2上是否有fence的文件
[root@server1 cluster]# ls
cluster.conf cman-notify.d fence_xvm.key
[root@server2 cluster]# ls
cluster.conf cman-notify.d fence_xvm.key
步骤四:通过网页配置fence
server1同server2
步骤五:真机上重启 fence设备
[root@foundation42 etc]# systemctl restart
查看fence是否添加成功
步骤六:查看主配置文件,发现配置成功
[root@server1 cluster]# cat cluster.conf
[root@server2 cluster]# cat cluster.conf
测试1
server1去报头server2,server2重新启动,说明fence配置成功
[root@server1 cluster]# fence_node server2
测试2
server2去报头server1,server1重新启动,说明fence配置成功
[root@server2 cluster]# fence_node server1
3.在Fence上添加服务
- 步骤一:添加失败回迁的优先级
- Prioritized 对服务故障转移到的节点进行排序
- Restricted 服务只能在指定的节点运行
- No Failback 不回切,当服务再次可用时,不要将其发送回优先级为开始的节点
有两台服务器,所有的配置都相同,当1挂掉,2接管服务以后,等1再次回到线上时,不希望r、2再次回切,没必要造成资源浪费。这种情况下会使用不回切 - 优先级越小,数字越高
- 优先级会决定服务会在哪个服务器上运行
- 添加资源
步骤一:下载apache
让server1与server2组成的集群拥有的服务为apache,且apache服务中应该含有vip、httpd
[root@server1 ~]# yum install httpd -y # 在套件中下载httpd服务
[root@server1 ~]# cd /var/www/html/
[root@server1 html]# ls
[root@server1 html]# vim index.html
[root@server1 html]# cat index.html
server1
[root@server2 ~] yum install httpd -y # 在套件中下载httpd服务
[root@server2 ~]# cd /var/www/html/
[root@server2 html]# vim index.html
[root@server2 html]# cat index.html
server2
步骤二:网页添加IP
步骤三:添加脚本
启动服务时,是根据脚本启动的
- 添加服务组
测试1
clustat
显示运行在server1上,因为server1的优先级高
/etc/init.d/httpd status #查看服务状态
测试2
[root@server1 ~]# echo c >/proc/sysrq-trigger # 如果将number1的内核写崩
[root@server2 ~]# clustat
server2 在休眠时间后自动启动,server1 重启。
将服务交给集群后,就不能手动启动服务,会干扰集群工作。从真实主机访问,结果不会受到影响
server1重新上线后,服务依旧是server2提供
当关闭掉server2的网络后,服务由server1接管,server2重启