MFS分布式文件系统,高可用,磁盘共享,fence集群搭建

1、环境

server4:172.25.17.104mfs-master                   调度器
server5:172.25.17.105mfs-master                   调度器
server6:172.25.17.106chunkserver                 后端存储
server7:172.25.17.107

chunkserver                 后端存储

server8:172.25.17.108共享存储
foundation17.ilt.example.com:mfs-client                     测试                                  

2、配置

server4,server5:

yum源:

[rhel7.3]
name='rhel7.3'
baseurl=http://172.25.17.250/rhel7.3
gpgcheck=0

[high]
name='high'
baseurl=http://172.25.17.250/rhel7.3/addons/HighAvailability
gpgcheck=0

[mfs]
name='mfs'
baseurl=http://172.25.17.250/mfs
gpgcheck=0

mfs中的包:
moosefs-cgi-3.0.103-1.rhsystemd.x86_64.rpm
moosefs-cgiserv-3.0.103-1.rhsystemd.x86_64.rpm
moosefs-cli-3.0.103-1.rhsystemd.x86_64.rpm
moosefs-master-3.0.103-1.rhsystemd.x86_64.rpm
moosefs-metalogger-3.0.103-1.rhsystemd.x86_64.rpm
安装:
    yum install moosefs-master moosefs-metalogger moosefs-cli moosefs-cgiserv moosefs-cgi -y
    yum install pcs pacemaker corosync -y


server6

moosefs-chunkserver-3.0.103-1.rhsystemd.x86_64.rpm
yum install moosefs-chunkserver

id mfs
创建共享
vim /etc/mfs/mfshdd.cfg
    /mnt/chunk1
mkdir /mnt/chunk1g

#修改权限
    chown mfs.mfs /mnt/chunk1

添加解析:
    vim /etc/hosts
        172.25.17.100 mfsmaster       vip

systemctl start moosefs-chunkserver


server7

moosefs-chunkserver-3.0.103-1.rhsystemd.x86_64.rpm
yum install moosefs-chunkserver

id mfs
创建共享
vim /etc/mfs/mfshdd.cfg
    /mnt/chunk1
mkdir /mnt/chunk1g

#修改权限
    chown mfs.mfs /mnt/chunk1

添加解析:
    vim /etc/hosts
        172.25.17.100 mfsmaster       vip

systemctl start moosefs-chunkserver


 

foundation17.ilt.example.com:客户端

moosefs-client-3.0.103-1.rhsystemd.x86_64.rpm
yum install moosefs-client

设置挂在点
vim /etc/mfs/mfsmount.cfg
    /mnt/mfs

添加解析:
    vim /etc/hosts
        172.25.17.100 mfsmaster       vip(后边创建的vip)

mfsmount    挂载

cd /mnt/mfs
mkdir dir1
mkdir dir2

mfssetgoal -r 1 dir1/        设置副本数为1

cp /etc/passwd dir1/
mfsfileinfo dir1/passwd      查看文件详细信息,只有一个副本,在server6上


cp /etc/passwd dir2/
mfsfileinfo dir2/passwd      查看文件详细信息,两个副本,server6和server7上各一个

关掉server6上边的chunkserver
    systemctl stop moosefs-chunkserver

mfsfileinfo dir1/passwd      因为这个数据只有一份,存储在了server6上边,所以没有数据
mfsfileinfo dir2/passwd      这个数据存储了里两份,server7上的数据还在

开启server6上的chunkserver之后,数据恢复


当文件很大的时候,mfs-master会将它分成小块存储到不同的chunk-server上边
dd if=/dev/zero of=dir1/file1
mfsfileinfo dir1/file1        至少分成两块存储到不同的节点,因为只能有一个副本,所以只存一份

dd if=/dev/zero of=dir2/file2    至少分成两块,每块两个副本,存储到不同的节点,所以当一个chunkserver挂掉之后,file2数据仍然完整
mfsfileinfo dir2/file2


关掉server6上边的chunkserver
    systemctl stop moosefs-chunkserver

mfsfileinfo dir1/file1    因为这个数据只有一份,一部分存储在了server6上边,所以数据不完整
mfsfileinfo dir2/file2      这个数据存储了里两份,server7上的两个数据块都还在,所以数据是完整的

开启server6上的chunkserver之后,file1数据恢复

恢复误删的数据:
    rm -rf dir1/passwd
    mfsgettrashtime .   ###查看数据被删除后所保留的时间
    
    mdkir   /mnt/mfsmeta           进行恢复数据目录的建立
    mfsmount   -m   /mnt/mfsmeta   进行数据恢复目录的挂载
    cd /mnt/mfsmeta/trash          进入到所有删除数据存放目录
    find -name *name*              进行删除数据的查找
    mv ./004/00000004\|dir1\|passwd undel/   进行数据的恢复

3、创建mfs高可用集群

注意做好各个主机之间的解析

1)、server4和server5之间做好免密

server4:
    ssh-keygen
    ssh-copy-id server5

2)、server4和server5启动服务

cp /etc/corosync/corosync.conf.example corosync.conf
vim /etc/corosync/corosync.conf
totem {
        version: 2
        crypto_cipher: none
        crypto_hash: none
        interface {
                ringnumber: 0
                bindnetaddr: 172.25.17.0
                mcastaddr: 239.255.1.1
                mcastport: 5405
                ttl: 1
        }
}
service {
        name: pacemaker
        ver: 0
}
systemctl start corosync            心跳检测
systemctl start moosefs-master      
systemctl start pcsd                资源管理

3)、创建集群用户授权

server4和server5:
server4和server5的用户名和密码保持一致
    echo westos | passwd --stdin hacluster

4)、认证

pcs cluster auth server4 server5

5)、创建集群

pcs cluster setup --name mycluster server4 server5

6)、启动集群,会有报错

pcs cluster start --all
pcs status        查看集群状态

7)、解决报错

    crm verify -LV
重新查看集群状态
    pcs status 
查看集群节点信息:
    pcs status nodes

#检查配置,有报错
    crm_verify -L -V
#更改属性,禁用STONITH
    pcs property set stonith-enabled=false
#再次检查,没有报错
    crm_verify -L -V
#查看状态
    pcs status
#查看corosync是否正常
    corosync-cfgtool -s
#查看corosync状态
    pcs status corosync

8)、创建vip

##创建vip,pacemaker会自动部署服务到节点
    pcs resource create vip ocf:heartbeat:IPaddr2 
ip=172.25.17.100 cidr_netmask=32 op monitor interval=30s

#查看,创建成功
    ip a

#查看监控
    crm_mon    

9)、测试

浏览器中访问vip:172.25.17.100:9425,查看监控

关掉master节点服务,vip自动漂移
    pcs cluster stop master节点域名

在slave节点上查看监控
    crm_mon
   
在slave节点上查看ip
    ip a
故障恢复
    pcs cluster start 故障节点的服务
查看监控
    crm_mon

到此MFS的高可用就配置好了,当master出故障时,backup-master会立刻接替master的工作,保证客户端可以正常得到服务。但master恢复时不会与backup_MFSmaster竞争资源,保证了用户服务的稳定性。

4、磁盘共享

server8:

[root@server8 mfs]# yum install -y targetcli
[root@server8 mfs]# systemctl start target
[root@server8 mfs]# targetcli
/> cd backstores/block 
/backstores/block> create my_disk1 /dev/vda
/backstores/block> cd ../../iscsi 
/iscsi> create iqn.2019-08.com.example:server8
/iscsi> cd iqn.2019-08.com.example:server8/tpg1/luns 
/iscsi/iqn.20...er2/tpg1/luns> create /backstores/block/my_disk1
/iscsi/iqn.20...er2/tpg1/luns> cd ../acls 
/iscsi/iqn.20...er2/tpg1/acls> create iqn.2019-08.com.example:client
/iscsi/iqn.20...er2/tpg1/acls> exit

server4,server5:格式化只需要执行一次

yum install -y iscsi-*	安装iscsi的客户端
vim /etc/iscsi/initiatorname.iscsi
	InitiatorName=iqn.2019-08.com.example:client
iscsiadm -m discovery -t st -p 172.25.17.108	查找共享设备
iscsiadm -m node -l	登陆共享设备

查看共享磁盘
fdisk -l

创建分区并且格式化
fdisk /dev/sdb
mkfs.xfs /dev/sdb1

挂载
mount /dev/sdb1 /mnt/
cd /var/lib/mfs/
cp -p * /mnt/
cd /mnt/
ls
    changelog.10.mfs  changelog.3.mfs  metadata.crc  metadata.mfs.back.1  stats.mfs
    changelog.1.mfs   changelog.9.mfs  metadata.mfs  metadata.mfs.empty
cd /var/lib/mfs/
ls
    changelog.10.mfs  changelog.3.mfs  metadata.crc  metadata.mfs.back.1  stats.mfs
    changelog.1.mfs   changelog.9.mfs  metadata.mfs  metadata.mfs.empty
chown mfs.mfs /mnt/
cd
umount /mnt/
mount /dev/sdb1 /var/lib/mfs/
systemctl start moosefs-master

创建集群的存储资源

server4:
创建集群存储资源:
    pcs resource create mfsdata ocf:heartbeat:Filesystem device=/dev/sdb1 directory=/var/lib/mfs fstype=xfs op monitor interval=30s

创建集群的mfs启动:
    pcs resource create mfsd systemd:moosefs-master op monitor interval=1min
 
创建集群资源工作组,让集群资源工作在一个节点上如vip,filesystem等
    pcs resource group add mfsgroup vip mfsdata mfsd

测试:发现所有资源全部工作在server4上边

pcs cluster stop server4                      关掉server4,查看高可用

5、添加fence

server4,server5安装fence-virt
    mkdir /etc/cluster
    yum install -y fence-virt
    pcs stonith list    列出stonith设备

foundation17.ilt.example.com:客户端
     yum install -y fence-virtd
     fence_virtd -c
	Interface [virbr0]: br0       ##注意br0需要修改,其余回车即可
    随即截取一个密钥,注意密钥名是不能随意的
    dd if=/dev/urandom of=fence_xvm.key bs=128 count=1
        1+0 records in
        1+0 records out
        128 bytes (128 B) copied, 0.000241822 s, 529 kB/s
    ls
    fence_xvm.key

    scp fence_xvm.key server4:/etc/cluster/
    scp fence_xvm.key server5:/etc/cluster/

    systemctl start fence_virtd.service
    如果无法开启fence,那么可能是你缺少了几个模块
    yum install -y fence-virtd-libvirt.x86_64 fence-virtd-multicast.x86_64  fence-virtd-serial.x86_64

server4:添加fence
    pcs stonith create vmfence fence_xvm pcmk_host_map="server4:server4,server5:server5" op monitor interval=1min
                                            注意这里的映射关系是虚拟机的名字(qcow2文件名和主机名
    pcs property set stonith-enabled=true    开启stonith设备

测试;

server4奔溃掉:
    echo c > /proc/sysrq-trigger
server5:
    pcs status        查看状态

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值