MFS集群的高可用
- 实验目的:实现mfsmaster的高可用,原本只有server2一台master这样的话master是单点。现在增加server4,实现mfsmaster的高可用。
- 实验环境:
主机 | 角色 |
---|---|
server2 | MFS Master |
server3 | MFS Chunkserver |
server9 | MFS Chunkserver |
server10 | MFS Client |
server4 | MFS Master |
- 步骤一:在server4上安装moosefs-master,在server2和server4上安装高可用套件,然后安装pacemaker等相关软件(在server2和server4上都进行安装)
vim /etc/yum.repos.d/dvd.repo
yum install -y pacemaker pcs psmisc policycoreutils-python
启动pcs的后台程序
systemctl enable --now pcsd.service
-
步骤二:对高可用集群的相关设置
设置高可用集群密码
在server2上做认证
设置集群,加入相关节点
启动集群
注意:在启动集群时,会启动心跳服务corosync和集群的资源管理器pacemaker
-
步骤三:为集群配置fence
注意:这里在做校验时,发现了错误,这是由于我们没有设置STONITH,
STONITH: A common node fencing mechanism. Used to ensure data integrity by powering off “bad” nodes
查看使用方法
注意:接下来要做的事情就是,让我们的fence代理,可以像libvirtd工具一样来进行对虚拟机的管理,因为在后面的实验过程中,我们需要将虚拟机管理的命令发送给虚拟机管理器(而不是像原来那样用鼠标来操控图形界面) -
步骤四:在真机classroom上安装fence代理,创建key
初始化:
注意:在做初始化时,如果在libvirt和listeners后没有出现available backends和available listeners那么需要检查有没有安装fence-virtd-libvirt和fence-virtd-multicast,如果没有安装那么fence_virtd在启动时会报错
创建key,并且在server2和server4上创建/etc/cluster目录
systemctl start fence_virtd.service #启动服务
注意;key一定要在服务启动之前创建,否则无效,需要重启服务才有效
- 步骤五:在master上查看fence设备,然后进行主机名和域名的映射
进行主机名和域名的映射
注意:这里做映射的原因是:我们在宿主机上创建虚拟机时所设置的名称为domainname,而虚拟机内部的名称为其自身的主机名,有可能我们的domainname和虚拟机的hostname不一致,所以需要做映射,因为fence代理操作虚拟机,就像是libvirt操作虚拟机一样是在=宿主机上=来进行操作的,而我们的domainname和hostname不一定相同,所以需要做映射,这样fence在操作虚拟机就可以通过映射在宿主机上操作对应的虚拟机
- 步骤六:测试,通过fence来重启虚拟机
再次测试:将server4的网络停掉,然后观察
注意:如果没有fence设备,将可能造成脑裂,因为当server4的网络断掉之后,那么server4和server2都将认为是对方出现了问题,会竞相争抢接管资源,这样就造成了脑裂;但是当有fence时就不会出现这个问题,当server4出现问题时,不会再发送信息给fence,但是server2依旧会发送信息给fence,所以fence会检测到server4出现了问题,它直接将server4重启,然后再接管资源
还有一种情况就是内核崩溃,fence也会重启集群中出现问题的主机
- 步骤七:为集群添加VIP
为集群添加共享存储
- 实验环境同上,让server3为集群提供存储
- 步骤一:在server3上添加一块10G的磁盘,安装软件进行配置
fdisk -l
yum install -y targetcli
systemctl start target
- 步骤二:在master节点上进行配置
yum install -y iscsi-*
在server2上进行如下操作:
yum install -y iscsi-*
通过共享存储同步两个节点的数据
- 步骤三:关闭所有的mfs相关的服务。然后挂在刚格式化的共享磁盘到mfs存储信息的目录下
- 步骤四:测试服务能否正常开启
测试服务能否正常开启
先在server4上测试
systemctl stop moosefs-master
umount /dev/sdb1
然后再在server2上进行测试
添加vip的解析,同样测试服务能否正常开启
- 步骤五:将挂载交于高可用集群来做
然后将vip的解析写入所有安装了mfs相关服务的主机上
将挂载交于集群来做
pcs resource describe ocf:heartbeat:Filesystem #查看该模块的使用方法
-
步骤六:为集群添加group,将所有的资源固定在一个节点上
首先为集群创建一个mfsservice
注意:我们可以看见所有的资源没有在一个节点上
接下来将所有的集群资源固定在一个节点上,在创建时所写的顺序也就是集群启动资源时的顺序
测试打开所有的chunkserver
-
步骤七:当mfsmaster被意外终止时,集群不能够自动启动服务,需要手动来修改配置文件,然后才可以启动服务
手动将master进程杀掉,造成异常
ps ax
在两个master节点主机(server2和server4上都做)
systemctl daemon-reload
- 步骤八:测试,将当前vip所在的主机的网络停掉后,集群资源能不能自动迁移到另外一台集群主机上
但是存在一个问题,当server4的网络出现问题时,fence会将server4进行重启,当server4完全启动后,又会将集群的资源抢夺到自己主机上
那么我们设置让集群中的故障主机重启后,不再抢夺集群资源来进行管理
再进行测试,损坏server4的内核