前言:

分布式文件系统(DIstributed File System)     时值文件系统管理的物理存储资源不一定直接连接在本地

的节点上,而是通过计算机网络与节点相连,简单的来讲,就是把一些分散的(分散在局域网内的各个计算机

上)共享共享文件夹,及河道一个文件夹中(虚拟共享文件夹),对于用户来说,要访问这些共享文件夹中的数据

时,只要打开这个虚拟共享文件夹,就可以看到所有连接到虚拟共享文件夹内的共享文件夹,用户感觉不到这

些共享文件是分散在各个计算机上的,分布式文件系统的好除就是击中访问,简单操作,数据容载,以及提高

文件的存取性能。

MFS原理

MFS是一个具有容错性的网络分布是文件系统,它把数据分散在多个物理服务器上,而呈现给用户的则是一个

统一的资源,

MFS文件系统的组成:
元数据服务器(Master):在整个体系中负责管理文件系统,维护元数据

元数据日志服务器(MstaLogger):备份Master服务器的变化日志文件,文件类型为changelog_ml.*.mfs ,当

Master服务器数据丢失或者损坏时,可以从日志中获得文件,进行修复。

数据存储服务器:(Chunk Server):真正存储数据的服务器,存储文件时,会把文件分块保存,在数据服务

器之间进行复制,数据服务器越多,能使用的 ‘容量’ 就越大,可靠性就越高,性能也就越好。

客户端(Client):可以像挂载NFS一样挂载MFS文件系统,其操作都是相同的。

下面为MFS文件系统的基本组成架构:

MFS进行读写的原理图:

进行数据读取的原理图:

MFS的读取数据的过程

client需要一个数据时,首先向master server发送查询请求

管理服务器检索自己的数据,获取数据所载的可用数据存储器位置ip(port) chunkip

管理服务器旧爱嗯数据服务器的地址发送给客户端

客户端向具体的数据存储服务器发起数据获取请求

数据服务器将数据发送给客户端

进行数据写入的原理图:

MFS的写数据的过程

当客户端有数据写入请求时,首先向元数据存储服务器发送请求存储地址(元数据信息如:文件大小|份数)

管理服务器根据写文件的数据信息,到数据服务器创建新的数据块

数据服务其返回建成功的信息

元数据存储器激昂数据存储的地址返回给客户端(chunkIP | port{chunkid}):

客户端向数据存储服务器进行数据的写入

数据服务器返回给客户端写入成功的消息

客户端将此次写完成结束信号和一些信息发送到管理服务器来更新文件的长度和最后的修改时间

MFS的删除文件过程

客户端有删除操作时,首先向master发送删除信息

master定位到相应元数据信息进行删除,并将chunk server上的块的删除加入到异步清理

相应客户端删除成功的信号

MFS修改文件内容的过程:

客户端修改文件内容时,首先给master发送操作信息

master申请新的块给.swp文件

客户端关闭文件后,会向master发送关闭信息

master会检测内容是否有更新,若有,则申请新的块存放更改后的文件,删除原有的

块和.swp文件块。

若无,则停止删除.swp文件。

MFS重命名文件的过程

客户端重命名文件时,会向master发送操作请求

master直接修改元数据信息中的文件名,返回重命名完成信息。

MFS编历文件的过程

煸历文件不需要访问chunk server,当客户端有边历请求时,向master发送请求信息

master返回元数据信息

客户端接收到信息后进行显示

注意:Master记录着管理信息,比如:文件存放的路径,文件大小,文件份数,存储时间等,元数据

信息存放于内存中,会定期写入metadata mfs back文件中,定期同不到metalogger,操作实时写入chang

elog*mfs ,实时同步到matalogger中,master启动metadata mfs载入内存,重命名为metadata mfs back

文件。

文件以chunk大小存储,每个chunk最大为64M,小于64M的,该chunk的大小即为该文件的大小(验证

实际的chunk文件略大于实际文件),超过64M的文件将会被切分,每一份的(chunk)的大小以不超

过64M为原则,块的生成通道原则,目录循环写入(00-FF 256个目录循环,step为2),chunk文件递增生

成,大文件切分目录连续。

chunkserver上剩余的存储空间要大于1G,新的数据才会被允许写入,否则,你会看到 No space left on

device的提示,实际中,测试发现磁盘使用率到达95左右的时候,就已经不能写入了,当时可用空间为

1.9G。

文件可以有多份copy,当goal为1时,文件会被随即存储到一台chunkserver上,当goal的数大于1时,copy

会由master调度保存到不同的chunkserver上,goal的大小不要超过chunkserver的数量,否则多出的copy不

会有chunkserver去保存。

正文:

一、进行Mfs环境的构建

实验环境:

server1:172.25.68.1    作为元数据主服务器

server2:172.25.68.2    作为存储数据服务器

server3:172.25.68.3    作为存储数据服务器   进行iscsi共享磁盘的提供

server4::172.25.68.4    作为元数据备用服务器

foundation68.ilt.example.com   作为mfs的客户端

在server1上进行软件的安装:

 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 ###进行软件的安装

进行解析的添加

进行master服务的启动和端口的查看

systemctl start moosefs-master    ###进行服务的启动
netstat -antlp                    ###进行端口的查看

进行cgi服务的启动和进行

systemctl start moosefs-cgiserv     ###进行cgi的服务的开启
netstat -antlp                      ###进行端口的查看

使用浏览器进行访问

172.25.68.1:9425

在server2上进行软件的安装

yum install moosefs-chunkserver-3.0.103-1.rhsystemd.x86_64.rpm -y###进行服务的软件的安装

进行解析的添加

vim /etc/hosts            ###进行解析的添加

进行虚拟硬盘的添加和硬盘的查看

fdisk -l             ###进行硬盘状态的查看

进行虚拟硬盘的格式化

mkfs.xfs  /dev/vda           ###进行虚拟硬盘的格式化

进行数据存放目录的创建和虚拟硬盘的挂载

mkdir /mnt/chunk1    ###进行数据存放目录的建立
mount /dev/vda  /mnt/chunk1  ###进行虚拟硬盘的挂载

进行挂载在目录的所有人所有组的改变

chown mfs.mfs    /mnt/chunk1     ###进行挂载目录所有人和所有组的改变

进行配置文件的修改

vim /ryv/mfs/mfshdd.cfg             ###进行配置文件的修改

进行服务的启动和端口的查看

systemctl start moosefs-chunkserver     ###进行服务的启动

进行网页的刷新

在server3上进行和server2上相同的操作(这里不再作赘述)

进行浏览器的刷新

实现mfs高可用

server4:172.25.68.4   作为mfs的备用节点

在server4上进行软件的安装

yum install moosefs-master-3.0.103-1.rhsystemd.x86_64.rpm -y   ###进行软件的安装

进行解析的添加

vim /etc/hosts           ###进行解析的添加

进行脚本配置文件的编辑

vim /usr/lib/systemd/system/moosefs-master.service  ###进行配置文件的编辑

在server4上进行服务的启动和端口的查看

systemctl start moosefs-master    ###进行服务的启动
netstat -antlp                    ###进行端口的查看

进行yum源的配置(server1和server相同的配置)

vim /etc/yum.repo.d/yum.repo      ###进行yum源的配置
scp /etc/yun.repo.d/yum.repo  server4:/etc/yum.repo.d/yum.repo   ###进行server1和server4相配的配置

在server1和server4上进行pacemaker和corosync的安装

[root@server1 ~]# yum install -y pacemaker corosync   ###进行软件的安装
[root@server4 ~]# yum install -y pacemaker corosync   ###进行软件的安装

在server1和server4上进行免密处理

ssh-keygen             ###进行免密的设定
ssh-copy-id  server4   ###进行密钥的发送

进行资源管理工具pcs的安装

 [root@server1 ~]# yum install -y pcs  ###进行服务软件的安装[root@server4 ~]# yum install pcs -y  ###进行服务软件的安装

进行pcs服务的启动和设定开机自启动

[root@server4 ~]# systemctl start pcsd       ###进行服务的启动
[root@server4 ~]# systemctl enable pcsd     ###进行服务的开机自启动
[root@server1 ~]# systemctl start pcsd
[root@server1 ~]# systemctl enable pcsd

进行hacluster密码的设定

[root@server1 ~]# passwd hacluster
[root@server4 ~]# passwd hacluster

进行集群的创建和启动

pcs cluster auth server1 server4
pcs cluster setup --name mycluster server1 server4   ###设定集群的服务
pcs cluster start --all       ###进行集群的启动

进行集群状态的查看

corosync-cfgtool -s
pcs status corosync    ###进行集群状态的查看

进行安全地检查

crm_verify -L -V   ###进行安全检查

进行报错的解决和再次进行安全检查

pcs property set stonith-enabled=false    ###设定stonith为false
crm_verify  -L -V   ###进行安全性的检查

进行资源的添加(vip)

[root@server1 ~]# pcs resource create vip ocf:heartbeat:IPaddr2 ip=172.25.68.100 cidr_netmask=32 op monitor interval=30s    ###进行资源vip的添加
pcs resource show                ###进行资源的查看

进行资源的查看和集群状态的查看

pcs status           ###进行集群状态的查看

进行监控的查看

crm_mon       ###进行节点的状态查看

实现高可用

在server1上进行ip的查看

ip a     ###进行ip地址的查看

关闭server的节点服务,查看vip是否发生漂移

pcs cluster stop server1             ###在集群中进行server1节点的关闭
ip a                                 ###进行ip地址的查看

发现vip发生了漂移,可实现高可用

实现数据的共享

在所有的节点中进行解析的添加

vim /etc/hosts              ###进行解析的添加

给server3进行虚拟硬盘的添加(作为共享磁盘来使用)

进行添加硬盘的查看

fdisk -l                ###进行共享磁盘的查看

在server3上进行targercli 软件的安装

 yum install -y targetcli   ###进行软件的安装

在server3上进行相应的配置

targetcli     ###进行共享设备的设定

在server1和server4上进行iscsi的安装

yum install iscis-*   -y    ###进行iscsi软件和组件的安装

在server1上进行共享硬盘配对的设定

vim /etc/iscsi/initiatorname.iscsi    ###设定共性硬盘配对的编辑

在server1上进行共享设备的发现和使用

 iscsiadm -m discovery -t st -p 172.25.68.3  ###进行共享硬盘的发现  iscsiadm -m node -l     ###进行共享硬盘的使用

进行共享磁盘的查看和分区的建立和进行格式化

fdisk -l            ###及形共享磁盘的查看
fdisk  /dev/sdb     ###进行共享磁盘分区的建立

进行分区的格式化和共享磁盘的挂载

mkfs.xfs /dev/sdb1    ###进行共享磁盘分区的格式化
mount /dev/sdb1 /mnt/ ###进行共享设备的挂载

进行数据的拷贝,保证元数据全部存放到共享磁盘中

cp /var/lib/mfs/*  /mnt            ###将元数据存放到共享磁盘中

进行挂载目录所有人和所有组的修改

chown mfs.mfs    /mnt    ###进行挂载目录所有人和所以组的修改
umount /mnt              ###进行共享磁盘的卸载
mount /dev/sdb1  /var/lib/mfs   ###进行共享设备挂载在元数据存方的位置

在server4上进行和server1相同的动作(不做赘述,不需要在进行格式化和分区)

在server1和server4中进行服务的启动,查看刚才配置是否正确

systemctl start moosefs-master   ###进行服务的启动

如果服务启动失败,需要进行system配置文件的修改,具体操作如下:

vim /usr/lib/systemd/system/moosefs-master.service  ###进行systemctl 启动脚本的编辑
systemctl daemon-reloa                       ###进行重新加载
systemctl start moosefs-master               ###再次启动服务

在server1和server4上进行服务的关闭(后面使用集群进行启动)

systemctl stop moosefs-master   ###进行服务的关闭

进行系统文件资源的创建

pcs resource create   mfsdata  ocf:heartbeat:Filesystem device=/dev/sdb1 directory=/var/lib/mfs fstype=xfs op monitor interval=30s###进行资源的添加
crm_mon                     ###进行监控的查看

进行mfs资源的添加

pcs resource create mfsd systemd:moosefs-master op monitor interval=1min###进行资源的添加
crm_mon                   ###进行监控的查看

这时我们会发现vip和所添加的服务不在一个节点上(如上,vip 在server

4而且服务在server1上),,用户进行访问时,访问不到正确的服务,因此我

们需要将vip和服务绑定到一个组上,防止漂移

将服务和vip绑定到一个组上

pcs resource group add mfsgroup vip mfsdata mfsd   ###将服务和vip绑定到一个组上
crm_mon                 ###进行监控的查看

进行测试

将server4的节点进行关闭

pcs cluster stop server4   ###将server4上的节点进行关闭
crm_mon                    ###进行监控的查看

进行fence的配置

在客户端进行fence-virtd软件的安装和fency_xvm.key的生成

yum install fence_virtd                  ###进行软件的安装
mkdir /etc/cluster                       ###进行fence_xvm.key存放目录的创建
fence_virtd -c                           ###进行fence_xvm.key文件的生成

将生成的fence_xvm.key发送给server1和server4

[root@server1 ~]# mkdir /etc/cluster    ###进行存放fence_xvm.key文件存放目录的建立
[root@server4 ~]# mkdir /etc/cluster
[root@foundation68 cluster]# scp fence_xvm.key root@172.25.68.1:/etc/cluster/
[root@foundation68 cluster]# scp fence_xvm.key root@172.25.68.4:/etc/cluster/
systemctl start fence_virtd                  ###进行服务的启动

在server1和server4上进行设备的查看

stonith_admin -I     ###进行可用设备的查看

注意的是:如果没有发现设备(fence_xvm)可进行使用yum install fence-virt* -y进行软件的安装

在server1和server4上都要进行安装

进行资源的添加:

pcs stonith create vmfence fence_xvm pcmk_host_map="server1:server1;    server4:server4" op monitor interval=1min   ###进行资源的添加,并且添加监控
pcs status              ###进行集群状态的查看

注意的是:vmfence一般都处于运行节点的对立节点中

使server1内核崩溃,server1会进行自动启动,server4上线

root@server1 ~]# echo c > /proc/sysrq-trigger  ###模拟内核崩溃

进行集群状态的查看

在浏览器上进行验证:

在浏览器上输入 172.25.68.100:9425进行浏览访问

在实验中遇到的问题:

当高可用集群配置完毕,fence添加成功之后,进行浏览器访问vip的9425端口时,发现chunkserver没有工作,

在server2和server3上进行chunkserver的启动发现报错,报错如下:

 MATOCS_MASTER_ACK - wrong meta data id (files .metaid:5CE2...ster

解决方法:在server2上进入到/var/lib/mfs   删除文件chunkserverid.mfs, (如果环境不同,建议备份该文件),进入到

所挂载的目录,(即数据真正所保存的文件夹),ls -a 进行所有文件的查看,删除隐藏文件.metaid文件,再进行

服务的重新启动即可。server3和server2进行相同的操作。在浏览器上再次进行网页的刷新即可。

Pacemaker+Corosync+Mfs+Iscsi+Fence实现高可用和Fence管理相关推荐

  1. 利用pcs+pacemaker+corosync实现(HA)高可用集群

    实验环境搭建 创建一台操作系统是rhel7.6的虚拟机node,配置好网络仓库,解析,网卡设置,关闭火墙和selinux后封装 克隆node虚拟机,虚拟机域名为node1,node2,node3,主机 ...

  2. 【高可用HA】Centos7.0下通过Corosync+pacemaker+pcs+drbd实现mariadb的高可用

    作者:吴业亮 博客:https://wuyeliang.blog.csdn.net/ 一.操作系统配置 1.1.准备: 两个节点ha-node1和ha-node2均按照centos7.0系统,每个节点 ...

  3. Corosync+Pacemaker+DRBD实现Mysql服务的高可用

    一.Corosync概述 请点击查看详细介绍 1.什么是AIS和OpenAIS? AIS是应用接口规范,是用来定义应用程序接口(API)的开放性规范的集合,这些应用程序作为中间件为应用服务提供一种开放 ...

  4. corosync/openais+pacemaker+drbd+web实现web服务高可用集群

    1. drbd简介: Distributed Replicated Block Device(DRBD)是一个用软件实现的.无共享的.服务器之间镜像块设备内容的存储复制解决方案. 数据镜像:实时.透明 ...

  5. mfs分布式存储+master端高可用

    2019独角兽企业重金招聘Python工程师标准>>> MFS 文件系统结构: 包含 4 种角色: 管理服务器 managing server (master) 元数据日志服务器 M ...

  6. mysql drbd pacemaker_corosync+pacemaker+mysql+drbd 实现mysql的高可用

    # 接上版 链接:http://xiong51.blog.51cto.com/5239058/1929054 ########### node1 mysql安装开始 ################# ...

  7. corosync + pacemaker + drbd 实现mysql存储的高可用(一)

    规划:     vip                      172.16.45.2     node1.yue.com            172.16.45.11     node2.yue ...

  8. pacemaker+nginx+iscsi实现的nginx服务远程储存高可用

    文章目录 scsi iscsi iscsi储存配置 添加虚拟磁盘(服务端) targetcli的安装(服务端) 配置iscsi共享存储输出(服务端) 客户端的配置 装包: 添加认证名称 进行扫描 注册 ...

  9. corosync+pacemaker高可用

    简介   说到高可用,我们可能会用heartbeat和keepalived,也可能会用corosync+pacemaker,但他们之间有什么区别呢?我们在此主要谈下heartbeat和corosync ...

最新文章

  1. 腾讯技术工程 | 腾讯数据平台部总监刘煜宏:这5大产品平台,展示了腾讯大数据的核心能力...
  2. PHP7 学习笔记(七)如何使用zephir编译一个扩展记录
  3. Duilib教程-非DUI控件
  4. Django复习:模型与管理网站
  5. iOS开发 mac证书无法展开
  6. WCF NetTcpBinding Transport安全模式(7) ClientCredentialType证书验证模式---- ChainTrust验证模式...
  7. 电子标签有哪些封装方式
  8. 计算机用户拒绝访问权限,解决局域网内拒绝访问无访问权限的问题
  9. OpenSSL 把cer证书链以及key文件生成keystore,tomcat https配置
  10. 概率统计Python计算:标准正态分布分位点计算
  11. 微信小程序开发学习小结之tabBar组件
  12. 如何让孩子算20以内的加法更快
  13. 新宝综述拉升大阳包阴沪指收复3600点
  14. 本以为java语言很难学,其实就学完下面这些知识,就能理解了
  15. 战双帕弥什qq登录服务器未响应是什么意思,战双帕弥什渠道账号登录失败怎么办...
  16. 实现Web端指纹登录
  17. 泰克示波器MDO3014波形频率分析FFT功能使用方法
  18. a标签与link标签的区别
  19. 二元函数可微与可导的关系_函数连续、可导与可微之间的关系
  20. 缩减运算符,就是多输入门电路,见图

热门文章

  1. 《CrowdDetection:Detection in Crowded Scenes: One Proposal, Multiple Predictions》论文笔记
  2. BO Session Kill
  3. 一些标签属性--aria-label--rel属性
  4. 连接 mysql 数据库的正确方法是_连接 MySQL 数据库的正确方法是
  5. 特征选择过滤法-方差过滤、F检验、互信息法
  6. linux下查看cpu峰值,linux下查看CPU信息
  7. python有道-Python3基础 访问在线的有道词典
  8. 东华大学计算机专业分数线,2019年东华大学各专业录取分数线
  9. CR2格式批量转换JPG(美图看看)
  10. 关于信息搜集的部分介绍