一.MFS简介
MFS:MooseFS
- 是一个具备冗余容错功能的分布式网络文件系统,它将数据分别存放在多个物理服务器或单独磁盘或分区上,确保一份数据有多个备份副本。对于访问的客户端或者用户来说,整个分布式网络文件系统集群看起来就像一个资源一样。
使用场景
- 存在的优势:
- MFS是基于FUSE(用户空间文件系统)机制的,所以支持含有FUSE的操作方式的系统
- MFS部署简单并提供Web界面的方式进行管理与监控,同其他分布式操作系统一样,支持在线扩容,并进行横向扩展
- MFS还具有可找回误操作删除的文件,相当于一个回收站,方便业务进行定制
- 同时MooseFS对于海量小文件的读写要比大文件读写的效率高的多
- 存在的问题:
- MFS的主备架构情况类似于MySQL的主从复制,从可以扩展,主却不容易扩展
- 随着MFS体系架构中存储文件的总数上升,Master Server对内存的需求量会不断增大
- Master Server存在单点问题,官方解决方式是把数据信息从Master Server同步到Metalogger Server上,Master Server一旦出问题Metalogger Server可以恢复升级为Master Server,但是需要恢复时间,解决方式属于冷备。目前,也可以通过第三方的高可用方案(peachmaker+moosefs)来解决 Master Server 的单点问题
二.MFS安装部署
需要准备: 三台虚拟机server1、2、3和本机的真实主机,server1负责master、server2、3负责数据存储,真实主机负责客户端client。
1.server1(master)配置
安装moosefs-master、moosefs-cgiserv

yum install -y moosefs-master-3.0.115-1.rhsystemd.x86_64.rpm moosefs-cgiserv-3.0.115-1.rhsystemd.x86_64.rpm
配置本地解析:
vim /etc/hsots
 启动服务:
systemctl start moosefs-master
systemctl start moosefs-cgiserv.service
netstat -antlp

 firefxo上查看图形mfs管理界面: 
2.server2配置
在server2安装mfs-chunkserver:
yum install -y moosefs-chunkserver.x86_64
 修改配置文件,添加挂载目录:
cd /etc/mfs
vim mfshdd.cfg
/mnt/chunk1
 创建挂载目录:
mkdir /mnt/chunk1
为虚拟机添加虚拟硬盘vdb :  硬盘分区vdb1 :  格式化vdb1 :  将vdb1挂载到chunk1,并修改目录所有者: 
添加master解析:  启动msf服务:
systemctl start moosefs-chunkserver
此时可以在matser 上看到server2 : 
3.server3配置
安装mfs-chunkserver:
yum install -y moosefs-chunkserver.x86_64
创建挂载目录:
mkdir /mnt/chunk2
chown mfs.mfs /mnt/chunk2/
修改配置文件,添加挂载目录:
cd /etc/mfs
vim mfshdd.cfg
/mnt/chunk2
添加master解析:  启动msf服务:
systemctl start moosefs-chunkserver
查看存储目录:  在master查看server3:  
4.真机配置
安装mfs-client:
yum install moosefs-client-3.0.115-1.rhsystemd.x86_64.rpm -y
编辑配置文件,指向挂载目录:
cd /etc/mfs/
vim mfsmount.cfg
/mnt/mfs
 配置解析:
vim /etc/hosts
 创建mfs目录,挂载mfs:
mkdir /mnt/mfs
 在server1查看端口指向:  在mfs 目录下创建 dir1 dir2 目录:
mkdir /mnt/mfs/dir1
mkdir /mnt/mfs/dir2
将dir1设定到mfs文件系统进行访问,获取副本数设定:  上传文件,查看文件信息:
 
三.删除文件恢复
将源数据挂载到客户端
mkdir /mnt/mfsmeta
mfsmount -m /mnt/mfsmeta/
删除文件:
cd ../../mfs/dir1
ls
rm -fr passwd
 恢复文件:
mv '00000004|dir1|passwd' undel/
pwd
cd /mnt/mfs/dir1
 查看恢复文件: 
四.chunk标签
原理:MFS可以根据chunk标签更改文件存储方式
在server4上创建chunk3,步骤同上。
编辑server2/3/4 主配,添加标签:
vim /etc/mfs/mfschunkserver.cfg
server2:LABELS = A S
server3:LABELS =A B H S
server4:LABELS = A H
systemctl reload moosefs-chunkserver.service
 真机端:
需要在文件所在目录进行
mfsscadmin create -C 2AS -K AS,BS -A AH,BH -d 7 classABSH
mfssetsclass -r classABSH fstab
mfsfileinfo fstab
 在master查看存储策略: 热数据时期在AS,AS存放 温数据时期转存到在AS,BS 7天后转存至AH,BH  
五.iscsi实现master备份
1.server3配置iscis共享磁盘
创建共享虚拟磁盘 
安装iscsi:
yum install -y targetcli
systemctl start target
targetcli
配置共享:   
2.server1获取共享磁盘
安装iscis:
yum install -y iscsi-*
cd /etc/iscsi/
修改配置文件:
vim /etc/iscis/initiatorname.iscs
 连接server3:
iscsiadm -m discovery -t st -p 172.25.3.3
iscsiadm -m node -l
 此时可以查看共享磁盘:  创建分区,格式化并挂载:
fdisk /dev/sda
mkfs.xfs /dev/sda1
mount /dev/sda1 /mnt
 查看文件,并将master文件复制到iscsi的挂载目录中:
cd /var/lib/mfs/
ls
cp -p * /mnt/
cd /mnt/
ls
ll
chown mfs.mfs /mnt/ -R
umount /mnt/

3.server2+iscis实现master备份
安装mfs-master:
yum install -y moosefs-master.x86_64
安装iscsi相关:
yum install -y iscsi-*
设置连接配置:
vim /etc/iscis/initiatorname.iscs
 连接server3:
iscsiadm -m discovery -t st -p 172.25.3.3
iscsiadm -m node -l
查看共享磁盘并挂载:
fdisk -l
mount /dev/sda1 /var/lib/mfs/
启动server2上master:
cd /var/lib/mfs/
ls
systemctl start moosefs-master
完成master备份
4.故障解决
在挂载sda1 至server2 后,启动master会出现异常  启动失败,原因:master启动时,/var/lib/mfs/metadata.mfs必须存在,而启动后会变为metadata.mfs.back,需要将back文件恢复为mfs文件  修复文件
mfsmaster -a

六.iscis+pacemarker实现MFS高可用
在上一节基础上,安装高可用插件pacemarker实现MFS高可用,即双机热备。 设置集群操作前两个master关闭所有mfs服务并关闭开机自启
1.添加高可用组件安装仓库
server1/2:
vim /etc/yum.repos.d/dvd.repo

安装模块:
yum install -y pacemaker pcs psmisc policycoreutils-python
2.免密登陆
设置server1与server2免密登陆
ssh-keygen
ssh-copy-id server2
修改server1和server2均设定需要认证的用户和密码
echo westos | passwd --stdin hacluster

3.集群搭建
pcs认证:
pcs cluster auth server1 server2

设置server1和server2组成mycluster集群
pcs cluster setup --name mycluster server1 server2
 设置启动及开启自启:  查看状态:  设定后警告取消
pcs property set stonith-enabled=false
 添加vip模块
pcs resource create vip ocf:heartbeat:IPaddr2 ip=172.25.3.100 op monitor interval=30s
pcs status
 添加mfsdata模块
pcs resource create mfsdata ocf:heartbeat:Filesystem device="/dev/sda1" directory="/var/lib/mfs" fstype=xfs op monitor interval=30s
 查看状态成功后,会按照状态提示挂载到某个master主机上,此处自动挂载到server1上  遇到问题: 启动master后,强制结束进程,master不能正常启动   原因是启动时,需要metadata.mfs 而启动后会改为metadata.mfs.back,强制结束进程无法恢复此文件。
所以需要修改启动脚本:
vim /usr/lib/systemd/system/moosefs-master.service
 reload后启动master成功  添加mfsmaster模块:

查看pcs状态  发现vip、mfsdata、mfsmaster不在同一个主机中, 解决方案,创建mfsgroup 分组,将模块填入:
pcs resource group add mfsgroup vip mfsdata mfsmaster
 修改所有server的解析  完成后client端查看文件dir2/fstab 和dir1/passwd  down掉server2  vip mfsdata mfsmaster均迁移到server1中  再次查看文件,没有受到影响  重启server2,没有影响,证明高可用实现  
七.fence实现故障重启
真实主机client客户端安装fence
yum install -y fence-virtd*
配置fence_virtd,需要根据提示设定,其中网络连接设定为本机的桥接br0
mkdir /etc/cluster/
fence_virtd -c
 成功后配置写入文件/etc/fence_virt.conf  生成认证钥匙
dd if=/dev/urandom of=fence_xvm.key bs=128 count=1
启动服务,查看端口
systemctl restart fence_virtd.service
netstat -anulp|grep :1229
 创建cluster目录: 
scp fence_xvm.key root@172.25.3.1:/etc/cluster
scp fence_xvm.key root@172.25.3.2:/etc/cluster
在配置好双机热备份的两个主机server1、2安装fence
yum install -y fence-virt.x86_64
ssh server2 yum install -y fence-virt.x86_64
查看fence安装的模块  创建fence_xvm 名为vmfence 建立主机名与domain name之间的映射
pcs stonith create vmfence fence_xvm pcmk_host_map="server1:vm1;server2:vm2" op monitor interval=60s
查看状态:  之前设定关闭的stonith现在打开,才可以使用fence
pcs property set stonith-enable==true
测试: 关闭网卡br0
ip link set down eth0
关闭网卡后 server1 会自动重启,master会转移至server2
故障排除: 关闭网卡后,server1 会自动重启,重启时,所有服务会跳到server2,等重启结束后,会跳回server1。 解决方法:
pcs resource defaults resource-stickiness=100
|