mfs文分布式文件系统——(pacemaker+corosync+pcs)实现高可用+iscsi

MooseFS文件系统介绍

MooseFS是一种分布式文件系统,MooseFS文件系统结构包括以下四种角色:

  1. 管理服务器managing server (master)
    负责各个数据存储服务器的管理,文件读写调度,文件空间回收以及恢复.多节点拷贝。
  2. 元数据日志服务器Metalogger server(Metalogger)
    负责备份master服务器的变化日志文件,文件类型为changelog_ml.*.mfs以便于在master server出问题的时候接替其进行工作。
  3. 数据存储服务器data servers (chunkservers)
    负责连接管理服务器,听从管理服务器调度,提供存储空间,并为客户提供数据传输。
  4. 客户机挂载使用client computers
    通过fuse内核接口挂接远程管理服务器上所管理的数据存储服务器,.看起来共享的文件系统和本地unix文件系统使用一样的效果。

MooseFS文件系统读写原理

MFS读数据的处理过程

1.客户端向元数据服务器发出读请求
2 .元数据服务器把所需数据存放的位置(Chunk Server的IP地址和Chunk编号)告知客户端
3 .客户端向已知的Chunk Server请求发送数据
4.Chunk Server向客户端发送数据

MFS写数据的处理过程
1.客户端向元数据服务器发送写入请求
2. 元数据服务器与Chunk Server进行交互,但元数据服务器只在某些服务器创建新的分块Chunks,创建成功后由Chunk Servers告知元数据服务器操作成功
3. 元数据服务器告知客户端,可以在哪个Chunk Server的哪些Chunks写入数据
4. 客户端向指定的Chunk Server写入数据
5. 该Chunk Server与其他Chunk Server进行数据同步,同步成功后Chunk Server告知客户端数据写入成功
6. 客户端告知元数据服务器本次写入完毕

在这里插入图片描述

实验环境:

主机 ip 节点
server1 172.25.26.1 master(主)
server2 172.25.26.2 存储节点1
server3 172.25.26.3 存储节点2
server4 172.25.26.4 master(被)
foundation26 172.25.26.250 客户端

搭建mfs分布式文件系统

1.配置master服务器(server1)

1.安装需要的软件

[root@server1 3.0.103]# yum install -y moosefs-master-3.0.103-1.rhsystemd.x86_64.rpm \
 moosefs-cli-3.0.103-1.rhsystemd.x86_64.rpm \
 moosefs-cgiserv-3.0.103-1.rhsystemd.x86_64.rpm \
 moosefs-cgi-3.0.103-1.rhsystemd.x86_64.rpm

获取这些软件,安装,
2.启动moosefs-master服务,做本地解析

[root@server1 mfs]# systemctl start moosefs-master
[root@server1 mfs]# netstat -antlp

在这里插入图片描述
查看端口。

[root@server1 mfs]# systemctl start moosefs-cgiserv.service 

在这里插入图片描述
9425端口开启。

[root@server1 mfs]# vim /etc/hosts
172.25.26.1 server1 mfsmaster

加入mfsmaster解析。
之后在浏览器进行测试
在这里插入图片描述
在浏览器输入ip:9425端口,这样,在master的配置就完成了。

2.创建存储节点(server2,server3)

1.安装moosefs-chunkserver

[root@server2 ~]# yum install -y moosefs-chunkserver-3.0.103-1.rhsystemd.x86_64.rpm

2.添加硬盘,作为存储节点

[root@server2 ~]# fdisk -l
Disk /dev/vda: 21.5 GB, 21474836480 bytes, 41943040 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

下面要给这块硬盘分区,只分一个区就行。

[root@server2 ~]# fdisk /dev/vda

在这里插入图片描述

[root@server2 ~]# fdisk -l

在这里插入图片描述

[root@server2 ~]# mkfs.xfs /dev/vda1

格式化。
3.挂载文件系统

[root@server2 mnt]# vim /etc/mfs/mfshdd.cfg

在这里插入图片描述
定义挂载点。

[root@server2 ~]# mount /dev/vda1 /mnt/chunk1/
[root@server2 chunk1]# chown mfs.mfs /mnt/chunk1/

将文件系统挂在/mnt/chunk1下,并且修改目录的所属组和所有者为mfs。
进入目录后在里面存些数据,开启 moosefs-chunkserver服务。

[root@server2 chunk1]# cp /etc/* .
[root@server2 chunk1]# systemctl start moosefs-chunkserver

创建的这个文件系统现在可以在浏览器中显示了。
在这里插入图片描述
现在已经创建好一个存储节点,在server3上创建节点时的步骤也完全一样,这里不再类述。
3.配置客户端
1.安装moosefs-client

[root@foundation26 3.0.103]# yum install -y moosefs-client-3.0.103-1.rhsystemd.x86_64.rpm

在这里插入图片描述
补齐后说明安装成功。

**2.修改文件,设置文件目录**
[root@foundation26 3.0.103]# vim /etc/mfs/mfsmount.cfg
/mnt/mfs				##在最后一行加入
[root@foundation26 3.0.103]# vim /etc/hosts
172.25.26.1 server1 mfsmaster

同样的,要做master的本地解析。
3.查看目录

[root@foundation26 mfs]# mfsmount

在这里插入图片描述mfsmaster:9421已经挂载到了/mnt/mfs目录。

4.在/mnt/mfs下创建目录,进行测试

[root@foundation26 mfs]# mkdir dir1
[root@foundation26 mfs]# mkdir dir2
[root@foundation26 mfs]# mfsgetgoal dir1/
dir1/: 2
[root@foundation26 mfs]# mfsgetgoal dir2/
dir2/: 2

在目录中写文件时,会在两个节点都进行保存

[root@foundation26 mfs]# ls
dir1  dir2
[root@foundation26 mfs]# mfssetgoal -r 1 dir1/
dir1/:
 inodes with goal changed:                       1
 inodes with goal not changed:                   0
 inodes with permission denied:                  0
[root@foundation26 mfs]# mfsgetgoal dir1/
dir1/: 1

设置dir1目录在存储时只在一个节点上保存数据。
在这里插入图片描述
当在dir1上存文件时,保存了一个,而dir2保存了两份。
在这里插入图片描述
在这里插入图片描述

在往目录中存大文件时,是分块存储的,文件写入dir1内在存储节点存分了4块,每一块是64M,这里存了200M的文件所以分为了4块。在dir2中因为在两个节点都有一份,所以有8份,这样的好处是,当某一个存储节点挂了,还可以保存数据的完整性。

[root@server2 ~]# systemctl stop moosefs-chunkserver.service 

关闭一个存储节点。
在这里插入图片描述
在客户端查看,dir2目录的数据完整,dir1的数据已经不完整了。

客户端数据的恢复

如果不小心删除了目录中的数据,该怎么恢复呢?
在这里插入图片描述
模拟删除数据。

[root@foundation26 dir1]# cd /mnt/mfsmeta/
[root@foundation26 mfsmeta]# ls
[root@foundation26 mfsmeta]# mfsmount -m /mnt/mfsmeta/ 
mfsmaster accepted connection with parameters: read-write,restricted_ip

在这里插入图片描述
再次进入目录查看。

在这里插入图片描述
查找数据。
在这里插入图片描述
恢复。
在这里插入图片描述
查看passwd文件恢复成功。

实现master节点主被高可用(pacemaker+corosync+pcs)

在主master(server1)

1.配置高级yum源

[root@server1 ~]# vim /etc/yum.repos.d/rhel7.3.repo 
[rhel7.3]
name=rhel7.3
baseurl=http://172.25.26.250/rhel7.3
gpgcheck=0

[HighAvailability]
name=HighAvailability
baseurl=http://172.25.26.250/rhel7.3/addons/HighAvailability
gpgcheck=0

[ResilientStorage]
name=ResilientStorage
baseurl=http://172.25.26.250/rhel7.3/addons/ResilientStorage
gpgcheck=0
[root@server1 ~]# yum reppolist

2.安装软件

[root@server1 ~]# yum install -y pacemaker corosync pcs

3.设置ssh免密

[root@server1 ~]# ssh-keygen

在这里插入图片描述
生成密钥

[root@server1 ~]# ssh-copy-id server4

给server4发送密钥。

[root@server1 ~]# systemctl start pcsd
[root@server1 ~]# systemctl enable pcsd.service 

开启服务。

[root@server1 ~]# passwd hacluster

在这里插入图片描述在这里插入图片描述
设置cluster用户密码。

在master(server4)

同样,配置高级yum源,下载软件。

[root@server4 3.0.103]# yum install -y pacemaker corosync pcs
[root@server4 3.0.103]# systemctl start pcsd
[root@server4 3.0.103]# systemctl enable pcsd

安装后开启服务。

[root@server4 3.0.103]# rpm -ivh moosefs-master-3.0.103-1.rhsystemd.x86_64.rpm

在这里插入图片描述

[root@server4 ~]# vim /usr/lib/systemd/moosefs-master.service
[Unit]
Description=MooseFS Master server
Wants=network-online.target
After=network.target network-online.target

[Service]
Type=forking
ExecStart=/usr/sbin/mfsmaster -a
ExecStop=/usr/sbin/mfsmaster stop
ExecReload=/usr/sbin/mfsmaster reload
PIDFile=/var/lib/mfs/.mfsmaster.lock
TimeoutStopSec=1800
TimeoutStartSec=1800
Restart=no

[Install]
WantedBy=multi-user.target
[root@server4 3.0.103]# systemctl daemon-reload
[root@server4 3.0.103]# passwd hacluster

在这里插入图片描述
同样的,要配置cluster用户密码。

创建集群

[root@server4 3.0.103]# pcs cluster auth server1 server4

在这里插入图片描述

[root@server4 3.0.103]# pcs cluster setup --name mycluster server1 server4

在这里插入图片描述
创建集群,并给集群命名。

[root@server4 3.0.103]# pcs cluster start --all
[root@server4 3.0.103]# pcs status nodes

在这里插入图片描述
开启服务查看节点状态。

[root@server1 ~]# corosync-cfgtool -s

在这里插入图片描述
查看集群的状态。

[root@server1 ~]# pcs status corosync

在这里插入图片描述

[root@server1 ~]# pcs property set stonith-enabled=false
[root@server1 ~]# crm_verify -L -V

在这里插入图片描述

[root@server1 ~]# pcs resource create vip ocf:heartbeat:IPaddr2 ip=172.25.26.126 cidr_netmask=32 op monitor interval=30s

在这里插入图片描述
添加vip,当服务在这个节点挂了,vip迁移到另一台主机。

[root@server1 ~]# crm_mon

在这里插入图片描述
查看状态。
在这里插入图片描述
关闭server1的pcs cluster。
在这里插入图片描述
在server4中查看,vip漂移成功。

iscsi存储共享

给所有主机配置本地解析

[root@server1 ~]# vim /etc/hosts
172.25.26.1 server1 mfsmaster
172.25.26.2 server2
172.25.26.3 server3
172.25.26.4 server4

关闭服务

[root@server1 ~]# systemctl stop moosefs-master
[root@server2 ~]# systemctl stop moosefs-chunkserver
[root@server3 ~]# systemctl stop moosefs-chunkserver

在server2添加一块硬盘,做共享存储

[root@server2 ~]# fdisk -l

在这里插入图片描述

[root@server2 ~]# yum install -y targetcli
[root@server2 ~]# systemctl start target

创建共享磁盘

[root@server2 ~]# targetcli 
Warning: Could not load preferences file /root/.targetcli/prefs.bin.
targetcli shell version 2.1.fb41
Copyright 2011-2013 by Datera, Inc and others.
For help on commands, type 'help'.

/> cd backstores/block 
/backstores/block> create my_disk1 /dev/vda
Created block storage object my_disk1 using /dev/vda.
/backstores/block> cd ..
/backstores> cd ..
/> cd iscsi
/iscsi> create iqn.2019-05.com.example:server2
Created target iqn.2019-05.com.example:server2.
Created TPG 1.
Global pref auto_add_default_portal=true
Created default portal listening on all IPs (0.0.0.0), port 3260.
/iscsi> cd iqn.2019-05.com.example:server2/
/iscsi/iqn.20...ample:server2> cd tpg1/luns 
/iscsi/iqn.20...er2/tpg1/luns> create /backstore/block/my_disk1
storage object or path not valid
/iscsi/iqn.20...er2/tpg1/luns> create /backstores/block/my_disk1
Created LUN 0.
/iscsi/iqn.20...er2/tpg1/luns> cd ..
/iscsi/iqn.20...:server2/tpg1> cd acls 
/iscsi/iqn.20...er2/tpg1/acls> create iqn.2019-05.com.example:client
Created Node ACL for iqn.2019-05.com.example:client
Created mapped LUN 0.
/iscsi/iqn.20...er2/tpg1/acls> cd


/iscsi/iqn.20...er2/tpg1/acls> cd ..
/iscsi/iqn.20...:server2/tpg1> cd ..
/iscsi/iqn.20...ample:server2> cd ..
/iscsi> cd ..
/> ls

在这里插入图片描述
在这里插入图片描述
在server1:
安装软件,并修改配置文件。

[root@server1 3.0.103]# yum install -y iscsi-*
[root@server1 3.0.103]# vim /etc/iscsi/initiatorname.iscsi 
InitiatorName=iqn.2019-05.com.example:client

发现设备并登陆。

[root@server1 3.0.103]# iscsiadm -m discovery -t st -p 172.25.26.2
[root@server1 3.0.103]# iscsiadm -m node -l

在这里插入图片描述
查看是否共享文件系统。

[root@server1 3.0.103]# fdisk -l

在这里插入图片描述
可以查看到共享文件系统。

[root@server1 ~]# fdisk /dev/sdb

在这里插入图片描述
分一个默认分区。

[root@server1 ~]#  mkfs.xfs /dev/sdb1

在这里插入图片描述
格式化。

[root@server1 ~]# mount /dev/sdb1 /mnt
[root@server1 ~]# chown mfs.mfs /mnt

查看是否可以正常使用。

[root@server1 ~]# fdisk -l

在这里插入图片描述在server4:
和server1一样,令server4可以发现共享设备。

[root@server4 ~]#  fdisk -l

在这里插入图片描述

继续在server1配置:

创建mfs文件系统。

[root@server1 ~]# pcs resource create mfsdata ocf:heartbeat:Filesystem device=/dev/sdb1 directory=/var/lib/mfs fstype=xfs op monitor interval=30s
[root@server1 ~]# pcs resource show

在这里插入图片描述

[root@server1 ~]# pcs resource create mfsd systemd:moosefs-master op monitor interval=1min
[root@server4 ~]# crm_mon

在这里插入图片描述

[root@server1 ~]# pcs resource group add mfsgroup vip mfsdata mfsd

把vip,mfsdata,mfsd 集中在一个组中

[root@server1 ~]#  pcs cluster stop server1

当server1中服务关闭后,服务迁移。
在这里插入图片描述

配置fence

猜你喜欢

转载自blog.csdn.net/qq_41961805/article/details/90314963