实验环境接上一篇博客
- 在server8上也安装master,编辑域名解析,并开启服务:
systemctl start moosefs-master
- 在server1和server8上都配置高可用yum源
- 安装高可用软件:
yum install -y pacemaker corosync
- 给server1和server8做免秘登陆
- 给两个master安装资源管理工具pcs:
yum install -y pcs
- 开启并设置开机自启:
systemctl start pcsd
systemctl enable pcsd
- 设置密码,主备必须相同:
passwd hacluster
- 创建集群:
pcs cluster auth server1 server8
- 给集群起名称:
pcs cluster setup --name mycluster server4 server8
- 查看集群状态,有报错,是因为有部分服务没有开启
pcs status nodes
- 开启所有的服务:
pcs cluster start --all
- 再次查看节点信息:
pcs status nodes
- 验证corosync是否正常:
corosync-cfgtool -s
- 查看corosync状态:
pcs status corosync
- 检查配置,有报错:
crm_verify -L -V
- 更改属性,禁用STONITH:
pcs property set stonith-enabled=false
- 再次检查,没有报错:
crm_verify -L -V
- 查看状态:
pcs status
- 创建vip:
pcs resource create vip ocf:heartbeat:IPaddr2 ip=172.25.12.100 cidr_netmask=32 op monitor interval=30s
- 查看是否创建成功:
ip a
- 此时vip是在server1上,我们关闭server1后
再开启server1
- 再次查看crm_mon:此时vip在server8上,并且不会漂移。
- 再次关闭server8,则vip会飘到server1上
数据共享
- 先将之前的挂载卸掉,将master和chunkserver都关闭,将实验环境恢复
- 添加解析,在每个节点上都添加上解析
- 给server3上添加一个8g的虚拟磁盘(vda),用来共享
- 安装targetcil,并配置
- 在server1上安装iscsi,并将共享的设备写入文件
vim /etc/iscsi/initiatorname.iscsi
- 发现远程设备
- 登录
- 此时可以查看到共享出来的磁盘:
fdisk -l
- 使用共享磁盘,建立分区
- 格式化分区
- 将新建分区挂载到/mnt下
- 给/mnt写入文件
- 更改用户和用户组
- 重新将共享的磁盘挂载到/var/lib/mfs/下
- 开启master,如果成功开启,则操作正确
systemctl start moosefs-master
- 关闭master
- 在server8上,操作与server4一致,直接挂在分区就行,不用格式化
- 在master上创建mfs文件系统
- 此时查看crm_mon:vip,mfsdata,mfsd 不在一个组中
- 把vip,mfsdata,mfsd 集中在一个组中
- 当关闭backup-master之后,服务就会迁移到master上
- 当开启server8,关闭server1时,服务又会迁移到server8上
fence解决脑裂问题
- 先在客户端测试高可用
- 打开chunkserver
- 查看vip位置
- 开启master
- 在客户端进行分布式存储测试
- 先保证挂载成功,如果挂载不成功,将/mnt/mfs下的目录为空,即可挂载
- 在客户端上传大文件的同时,关闭正在提供服务的服务端
- 我们查看到文件上传成功,并没有受到影响
通过以上实验我们发现,当master挂掉之后,backup-master会立刻接替master的工作,保证客户端可以进行正常访问,但是,当master重新运行时,我们不能保证master是否会抢回自己的工作,从而导致master和backup-master同时修改同一份数据文件从而发生脑裂,此时fence就派上用场了 - 在master端安装fence服务
- 在客户端也要安装fence服务,因为我之前已安装过,所以不再赘述
- 生成一份fence密钥文件,传给服务端
- 查看主机域名
- 在master查看监控pcs status
- 创建fence集群后
- 使server8断电重启,查看监控,server8上的服务迁移到master上
- 模拟master端内核崩溃
- 查看监控,server8会立刻接管master的所有服务
- 查看监控发现,master重启成功之后,并不会抢占资源,服务依旧在backup-master端正常运行,说明fence生效