MFS
MooseFS是一个分布式存储的框架,其具有如下特性:
(1)通用文件系统,不需要修改上层应用就可以使用(那些需要专门api的dfs很麻烦!)。
(2)可以在线扩容,体系架构可伸缩性极强。(官方的case可以扩到70台了!)
(3)部署简单。
(4)高可用,可设置任意的文件冗余程度(提供比raid1+0更高的冗余级别,而绝对不会影响读或者写的性能,只会加速!)
(5)可回收在指定时间内删除的文件(“回收站”提供的是系统级别的服务,不怕误操作了,提供类似oralce 的闪回等高级dbms的即时回滚特性!)
(6)提供netapp,emc,ibm等商业存储的snapshot特性。(可以对整个文件甚至在正在写入的文件创建文件的快照)
(7)google filesystem的一个c实现。
(8)提供web gui监控接口。
MFS部署
环境:rhel7.3
Server1 master 172.25.24.1
Server2 chunk 172.25.24.2
Server3 chunk 172.25.24.3
Server1
yum install -y moosefs-cgi-3.0.97-1.rhsysv.x86_64.rpm moosefs-cgiserv-3.0.97-1.rhsysv.x86_64.rpm moosefs-master-3.0.97-1.rhsysv.x86_64.rpm
vim /etc/hosts
172.25.24.1 server1 mfsmaster
/etc/init.d/moosefs-master start
netstat -antlp | grep mfsmaster
Server2
vim /etc/hosts
172.25.24.1 server1 mfsmaster
yum install -y moosefs-chunkserver-3.0.97-1.rhsysv.x86_64.rpm
vim /etc/mfs/mfshdd.cfg
mkdir /mnt/chunk1
chown mfs.mfs /mnt/chunk1
/etc/init.d/moosefs-chunkserver start
Server3 步骤同server2,需要添加解析
客户端;
yum install -y moosefs-client-3.0.97-1.rhsystemd.x86_64.rpm
vim /etc/hosts
172.25.24.1 server1 mfsmaster
vim /etc/mfs/mfsmount.cfg
mkdir /mnt/mfs
mfsmount #挂载
cd /mnt/mfs/
mkdir dir1 dir2
mfsgetgoal dir1
mfsgetgoal dir2
mfssetgoal -r 1 dir1
cp /etc/passwd dir1/
mfsfileinfo dir1/passwd
cp /etc/fstab dir2/
mfsfileinfo dir2/fstab
关闭server3上moosefs-chunkserver
cat命令查看不了,会一直卡在那里
cat dir1/passwd
当打开server3上的moosefs-chunkserver时,又可以查看了
Server1开启moosefs-cgiserv
/etc/init.d/moosefs-cgiserv start
浏览器访问 server1 ip:9425/mfs.cgi
找回已删除文件
rm -fr /mnt/mfs/dir1/passwd
mkdir /mnt/mfsmeta
mfsmount -m /mnt/mfsmeta/
cd /mnt/mfsmeta
cd trash/
find -name *passwd*
cd 004/
mv 00000004\|dir1\|passwd undel
MFS高可用
环境:
server1 172.25.4.1 mfsmaster pacemake corosync
server2 172.25.4.2 mfschunkserver
server3 172.25.4.3 mfschunkserver
server4 172.25.4.4 mfsmaster pacemake corosync
vip 172.25.4.100
物理机 172.25.4.250 mfsclient
一、提前准备好所需要的安装包
将安装包放在3.0.97目录下,发送给四台虚拟机
scp -r 3.0.97 server1:
scp -r 3.0.97 server4:
cd 3.0.97
scp moosefs-chunkserver-3.0.97-1.rhsysv.x86_64.rpm server2:
scp moosefs-chunkserver-3.0.97-1.rhsysv.x86_64.rpm server3:
二、在物理机和四台虚拟机中安装mfs相关软件
1、在server1中:
cd 3.0.97
yum install -y moosefs-cgi-3.0.97-1.rhsysv.x86_64.rpm moosefs-master-3.0.97-1.rhsysv.x86_64.rpm moosefs-cgiserv-3.0.97-1.rhsysv.x86_64.rpm moosefs-cli-3.0.97-1.rhsysv.x86_64.rpm
/etc/init.d/moosefs-master start
添加本地解析
vim /etc/hosts
172.25.4.1 server1 mfsmaster
/etc/init.d/moosefs-cgiserv start #启动服务
2、server2中:
yum install -y moosefs-chunkserver-3.0.97-1.rhsysv.x86_64.rpm
创建存储目录:
cd /etc/mfs
mkdir /mnt/chunk1
chown mfs.mfs /mnt/chunk1/
vim mfshdd.cfg
添加以下参数:
/mnt/chunk1
添加本地解析
vim /etc/hosts
172.25.4.1 server1 mfsmaster
/etc/init.d/moosefs-chunkserver start
3、在server3中:
yum install -y moosefs-chunkserver-3.0.97-1.rhsysv.x86_64.rpm
建立节点存储目录:
cd /etc/mfs
mkdir /mnt/chunk2
chown mfs.mfs /mnt/chunk2/
vim mfshdd.cfg
末尾添加如下内容:
/mnt/chunk2
添加本地解析
vim /etc/hosts
172.25.4.1 server1 mfsmaster
/etc/init.d/moosefs-chunkserver start
4、在物理机中:
yum install -y moosefs-client-3.0.97-1.rhsystemd.x86_64.rpm
cd /etc/mfs
vim mfsmount.cfg
在最后一行添加
/mnt/mfs
mkdir /mnt/mfs
添加本地解析
vim /etc/hosts
172.25.4.1 server1 mfsmaster
mfsmount
df
cd /mnt/mfs
mkdir dir1
5、在server4中:
cd 3.0.97
yum install -y moosefs-cgi-3.0.97-1.rhsysv.x86_64.rpm moosefs-master-3.0.97-1.rhsysv.x86_64.rpm moosefs-cgiserv-3.0.97-1.rhsysv.x86_64.rpm moosefs-cli-3.0.97-1.rhsysv.x86_64.rpm
/etc/init.d/moosefs-master start
添加本地解析
vim /etc/hosts
172.25.4.1 server1 mfsmaster
/etc/init.d/moosefs-cgiserv start
三、配置共享存储
1、在172.25.4.2配置存储共享
在server2添加一块虚拟磁盘,并安装scsi
yum install -y iscsi-*
查看共享磁盘信息
fdisk -l
编辑共享磁盘配置文件完成后开启服务
vim /etc/tgt/targets.conf
<target iqn.2018-10.com.example:server.target1>
backing-store /dev/vdb
</target>
/etc/init.d/tgtd start
2、在server1和server4安装iscsi,同样操作
yum install -y iscsi-*
yum install -y iscsi-*
server1主master登陆到共享磁盘
iscsiadm -m discovery -t st -p 172.25.4.2
iscsiadm -m node -l
对此盘进行分区格式化
fdisk -cu /dev/sda
mkfs.ext4 /dev/sda1
配置挂载共享目录
mount /dev/sda1 /mnt
cd /var/lib/mfs
cp -p * /mnt/
chown mfs.mfs /mnt/
ll /mnt/
cd
umount /mnt/
mount /dev/sda1 /var/lib/mfs/
ll -d /var/lib/mfs/
umount /var/lib/mfs/
在server4登陆磁盘并挂载查看共享目录
iscsiadm -m discovery -t st -p 172.25.4.2
iscsiadm -m node -l
fdisk -l
mount /dev/sda1 /var/lib/mfs/
ls /var/lib/mfs/
此时共享目录已经配置完毕
由于mfsmaster ip要飘移,所以结合vip
3、接下来我们在server1和server4安装部署pacemake和corosync
yum install -y pacemaker corosync crmsh-1.2.6-0.rc2.2.1.x86_64.rpm pssh-2.3.1-2.1.x86_64.rpm
安装完成后,配置corosync,以插件形式运行pacemaker,并开启corosync服务
配置corosync
cd /etc/corosync
cp corosync.conf.example corosync.conf
vim corosync.conf
修改文件内容:
bindnetaddr: 172.25.4.0 #集群工作的网段
末尾添加:
service { #启动corosync完成后,直接启动pacemaker
name: pacemaker
ver: 0
}
完成后直接将配置文件发送到server4,两台机器在本地解析加入vip指定mfsmaster,并删掉server1后的mfsmaster
server1和server4启动corosync
/etc/init.d/corosync start
完成可以查看集群
crm
configure
show
关闭stonith
property stonith-enabled=false
commit
bye
crm_verify -LV
加入vip
crm
configure
primitive vip ocf:heartbeat:IPaddr2 params ip=172.25.4.100 cidr_netmask=32 op monitor interval=1min
commit
ip addr
crm_mon #监控查看vip的加入
忽略投票规则(不然一个节点down,整个服务宕机)
crm
configure
show
property no-quorum-policy=ignore
commit
添加共享存储文件
crm
configure
primitive mfsdata ocf:heartbeat:Filesystem params device=/dev/sda1 directory=/var/lib/mfs fstype=ext4 op monitor interval=1min
commit
修改mfs启动脚本(修改start函数,保证在异常状态下关闭master后服务仍能正常启动),并将这三个绑在一个组内,确保统一飘移
vim /etc/init.d/moosefs-master
start() {}中
$prog start >/dev/null 2>&1 && success || $prog -a >/dev/null
2>&1
或者
$prog start >/dev/null 2>&1 && success || $prog -a &> /dev/null && success
scp /etc/init.d/moosefs-master server4:/etc/init.d/
crm
configure
primitive mfsmaster lsb:moosefs-master op monitor interval=30s
group mfsgroup vip mfsdata mfsmaster
commit
监控查看
4、添加fence
在server1和server4查看有无fence_xvm,如果没有添加fence_xvm
用fence实现,避免master突然crash而down掉,由于此时已经添加了fence设备,所以将刚才关闭的stonith开启
stonith_admin -I
yum install -y fence-virt
stonith_admin -I
用172.25.4.250来控制,查看key目录,将172.25.4.250的key发送到server1和server4的此目录下
stonith_admin -M -a fence_xvm
在物理机中:
cd /etc/cluster
scp fence_xvm.key server1:/etc/cluster/
scp fence_xvm.key server4:/etc/cluster/
systemctl status fence_virtd.service
开启stonith
crm
configure
property stonith-enabled=true
commit
bye
添加fence服务
crm
configure
primitive vmfence stonith:fence_xvm params pcmk_host_map="server1:vm1;server4:vm4" op monitor interval=1min
commit