企业七的集群服务——MFS高可用(pacemaker+corosync+vmfence+mfsmaster+Apache)

一、什么是pacemaker?
Pacemaker是一个集群资源管理器。
它利用集群基础构件(OpenAIS 、heartbeat或corosync)提供的消息和成员管理能力来探测并从节点或资源级别的故障中恢复,
以实现群集服务(亦称资源)的最大可用性。
它可以做几乎任何规模的集群,并带有一个强大的依赖模式,让管理员能够准确地表达群集资源之间的关系(包括顺序和位置)。
几乎任何可以编写的脚本,都可以作为管理起搏器集群的一部分。
尤为重要的是Pacemaker不是一个heartbeat的分支,似乎很多人存在这样的误解。
Pacemaker是CRM项目(亦名V2资源管理器)的延续,该项目最初是为heartbeat而开发,但目前已经成为独立项目。

二、什么是corosync?
Corosync是集群管理套件的一部分,它在传递信息的时候可以通过一个简单的配置文件来定义信息传递的方式和协议等。
Corosync是集群管理套件的一部分,通常会与其他资源管理器一起组合使用它在传递信息的时候可以通过一个简单的配置文件来定义信息传递的方式和协议等。它是一个新兴的软件,2008年推出,但其实它并不是一个真正意义上的新软件,在2002年的时候有一个项目Openais , 它由于过大,分裂为两个子项目,其中可以实现HA心跳信息传输的功能就是Corosync ,它的代码60%左右来源于Openais. Corosync可以提供一个完整的HA功能,但是要实现更多,更复杂的功能,那就需要使用Openais了。Corosync是未来的发展方向。在以后的新项目里,一般采用Corosync,而hb_gui可以提供很好的HA管理功能,可以实现图形化的管理。另外相关的图形化有RHCS的套件luci+ricci,当然还有基于java开发的LCMC集群管理工具。

三、搭建实验环境

利用mfs的实验环境
server1( mfsmaster+corosync+pacemaker)	172.25.254.1
server2( mfschunk )	                    172.25.254.2
server3(mfschunk)	                    172.25.254.3
server4( mfsmaster+corosync+pacemaker )	172.25.254.4
foundation2(client)                       172.25.254.66(真机)

在这里插入图片描述
server4上添加解析并更改启动脚本
在这里插入图片描述

systemctl daemon-reload  刷新启动脚本

在这里插入图片描述
在server1上配置yum源
高可用数据库和存储数据库
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
关闭所有集群相关服务
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
四、接下来配置集群
在server1/4上安装软件

[root@server1 ~]# yum install -y pacemaker(主程序) corosync(信号同步数据检测) pcs(命令行)
[root@server4 ~]# yum install -y pacemaker corosync pcs

server1和server4实现高可用需要免密
在这里插入图片描述
在这里插入图片描述
给生成的用户设置密码
在这里插入图片描述
在这里插入图片描述
启动pcs.d服务

[root@server4 ~]# systemctl start pcsd.service 
[root@server4 ~]# systemctl enable pcsd.service

[root@server1 ~]# systemctl start pcsd.service 
[root@server1 ~]# systemctl enable pcsd.service 

集群主机认证及配置一个集群服务(重新认证重启服务)
在这里插入图片描述
认证成功会开启两个服务

[root@server1 ~]# systemctl start corosync
[root@server1 ~]# systemctl start pacemaker.service 
[root@server1 ~]# pcs cluster enable --all  设置所有节点的集群都开机自动开启
server1: Cluster Enabled
server4: Cluster Enabled

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
查看集群状态
在这里插入图片描述
检查并解决报错

 pcs property set no-quorum-policy=ignore  投票策略
 当此节点无法投票,忽略此节点
 关闭stonith-enabled

在这里插入图片描述
创建集群资源并添加VIP

[root@server1 ~]# pcs resource standards 资源类型
lsb
ocf
service
systemd
[root@server1 ~]# pcs resource create vip ocf:heartbeat:IPaddr ip=172.25.254.100 cidr_netmask=32 op monitor  interval=30s  添加VIP

在这里插入图片描述

测试VIP是否漂移
查看集群的状态:crm_mon
关闭server1的服务
在这里插入图片描述
在server4上查看
在这里插入图片描述
在这里插入图片描述

[root@server1 ~]# pcs cluster start server1  开启服务

在这里插入图片描述
安装Apache并设置默认发布页面
不需要手动启动服务,集群会自动启动服务

[root@server1 ~]# yum install -y httpd
[root@server1 ~]# echo server1 > /var/www/html/index.html
[root@server4 ~]# yum install -y httpd
[root@server4 ~]# echo server4 > /var/www/html/index.html
[root@server1 ~]# pcs resource create apache systemd:httpd op monitor interval=1min

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
客户端测试访问VIP
在这里插入图片描述
往集群中添加存储资源以及验证高可用
首先添加解析
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在server3上添加一块硬盘大小为10G
在这里插入图片描述

[root@server3 ~]# yum install -y targetcli

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在server1上

[root@server1 ~]# yum install -y iscsi-*

在这里插入图片描述
在这里插入图片描述
分区进行格式化
在这里插入图片描述
进行挂载测试共享目录
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在server4上

[root@server4 ~]# yum install -y iscsi-*

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

[root@server4 mfs]# systemctl stop moosefs-master.service  关闭服务

注意:server1和server4的服务都是通过集群启动不需要手动开启
创建集群共享资源
继续在server1上配置

mfsdata资源名称  device=/dev/sdb1 指定挂设备 directory=/var/lib/mfs/挂载目录fstype=xfs文件系统类型
[root@server1 ~]# pcs resource create mfsdata ocf:heartbeat:Filesystem device=/dev/sdb1 directory=/var/lib/mfs/ fstype=xfs op monitor interval=30s

在这里插入图片描述
在这里插入图片描述
删除刚才添加的Apache服务
在这里插入图片描述
上图可以看到VIP、mfsdata和mfsd不在同一台主机上,方便客户端有一个统一的入口访问数据,需要把这些全都放在同一台主机上

[root@server1 ~]# pcs resource group add mfsgroup vip mfsdata mfsd 
[root@server1 ~]# pcs resource show

在这里插入图片描述
在server4上查看
在这里插入图片描述
在这里插入图片描述
测试高可用
在这里插入图片描述

[root@server4 ~]# pcs cluster stop server4 关闭
server4: Stopping Cluster (pacemaker)...
server4: Stopping Cluster (corosync)...

自动切换
在这里插入图片描述
在这里插入图片描述
server1查看
在这里插入图片描述
在这里插入图片描述
五、使用fence设备解决集群节点之间争抢资源的现象
1.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等

[root@server1 ~]# yum install -y fence-virt
[root@server1 ~]# mkdir /etc/cluster 创建一个目录 存放key
[root@server4 ~]# yum install -y fence-virt
[root@server4 ~]# mkdir /etc/cluster 创建一个目录 存放key

在真机上面搭建fence服务
fence可以控制主机的开关,在主机异常崩溃后会自动重启主机

[root@client ~]# yum search fence  查找软件包
[root@client ~]# yum install -y fence-virtd-multicast.x86_64 fence-virtd.x86_64 fence-virtd-libvirt.x86_64  安装软件

初始化fence设备,网卡选用br0,其余直接回车
在这里插入图片描述
在指定目录下面生成fence的key,并且给两个集群各发送过去一个
注意发送key的时候fence不能开启,否则server1和server2接收到的key不一样
创建一个目录/etc/cluster,生成的key将会保存在这个目录中

[root@client ~]# mkdir  /etc/cluster
[root@client ~]# cd /etc/cluster/
[root@client cluster]# dd if=/dev/urandom of=/etc/cluster/fence_xvm.key bs=128 count=1 生成key
1+0 records in
1+0 records out
128 bytes (128 B) copied, 0.00022445 s, 570 kB/s
[root@client cluster]# ls
fence_xvm.key

上传key文件到server1和server4上传key文件后开启服务

[root@client cluster]# scp fence_xvm.key server1:/etc/cluster/  
root@server1's password: 
fence_xvm.key                                                                                                                                                  
[root@client cluster]# scp fence_xvm.key server4:/etc/cluster/
root@server4's password: 
fence_xvm.key                                                                                                                                                

在server1上配置

[root@server1 cluster]# pcs stonith create vmfence fence_xvm pcmk_host_map="server1:server1;server4:server4" op monitor interval=1min_
[root@server1 cluster]# pcs property set stonith-enabled=true
[root@server1 cluster]# crm_verify -LV
[root@server1 cluster]# crm_mon

在这里插入图片描述
后续解决报错
解决报错问题:以上实验都是在为windows下的vm虚拟机里面操作,最后切换到linux真机里面没有报错
在linux系统下完成实验如下:
crm_mon

在这里插入图片描述
测试
停止server1检测能否正常切换

[root@server1 cluster]# pcs cluster stop server1

在这里插入图片描述
成功切换,再次开启server1
当前资源都在server4上,使server4异常退出,查看server1是否可以接替server4.

echo c > /proc/sysrp-trigger异常退出

在这里插入图片描述
集群服务mariadb(数据库)
清空上面的实验环境

删除
[root@server1 ~]# pcs resource delete vip
Attempting to stop: vip... Stopped
[root@server1 ~]# pcs resource delete mfd
Error: Resource 'mfd' does not exist.
[root@server1 ~]# pcs resource delete mfsd
Attempting to stop: mfsd... Stopped
[root@server1 ~]# pcs resource delete mfsdata
Attempting to stop: mfsdata... Stopped

在这里插入图片描述
安装数据库

[root@server1 ~]# yum install -y mariadb-server.x86_64 
[root@server4 ~]# yum install -y mariadb-server.x86_64 
[root@server1 ~]# mount /dev/sda1 /mnt/
[root@server1 ~]# ls /mnt/
changelog.0.mfs  metadata.crc  metadata.mfs  metadata.mfs.back.1  metadata.mfs.empty  stats.mfs
[root@server1 ~]# rm -rf *
[root@server1 ~]# ls  /mnt/
[root@server1 ~]# umount /mnt/
[root@server1 ~]# cd /var/lib/mysql/
[root@server1 mysql]# rm -rf *
[root@server1 mysql]# ls -a
.  ..
[root@server1 mysql]# mount /dev/sda1 /var/lib/mysql/
[root@server1 mysql]# chown mysql.mysql /var/lib/mysql/
[root@server1 mysql]# systemctl start mariadb.service 
[root@server1 ~]# df
[root@server1 ~]# systemctl status mariadb.service 

在这里插入图片描述

[root@server1 mysql]# systemctl stop mariadb.service  停止服务
[root@server1 mysql]# mount  /var/lib/mysql/  卸载
[root@server1 ~]# pcs resource create vip ocf:heartbeat:IPaddr2 ip=172.25.254.100 cidr_netmask=32 op monitor interval=30s  添加VIP
[root@server1 ~]# pcs resource create mysql_data ocf:heartbeat:Filesystem device=/dev/sda1 directory=/var/lib/mysql/ fstype=xfs op monitor interval=30s  添加挂载数据

在这里插入图片描述

[root@server1 ~]# pcs resource create mariadb systemd:mariadb op monitor interval=1min 设置集群自动启动服务
[root@server1 ~]# pcs resource group add mysql_group  mysql_data vip mariadb  创建一个组存放所有资源

在这里插入图片描述

测试使server1宕机server4是否可以接替

echo c > /proc/sysrp-trigger异常退出

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值