2019/07/08 miglefs集群配置(02)

在这里插入图片描述
**mogilefs的架构图,一个分布式文件系统大致上有三类组件
第一类称为trackers(跟踪器)可以理解为一个数据服务器,但实际组建并不存在元数据,所有元数据存放再后面的tracker’s database中mysql节点上
因此mogilefs依赖于mysql节点来完成数据存储的
第二类节点称为storage nodes ,称为mogstored,存储进程来负责接受存储i请求的(存储节点应该有多个,才能达到分布式目的)
同样对trackers而言,称为mogilefsd,也有多个,这样才能达到冗余目的,(避免元数据故障,造成数据不可用)
多个trackers本身是无状态的,trackers之间无需共享状态,因为能够存储在database中,因此客户端从任何一个trackers打交道,都能从datdabase中获得数据,只要database这一段没有任何问题,那么前端tracker在各个tracker之间共享,就没有问题了,而客户端需要通过API与mogilefsd打交道,mogilfsd,tracker和stroage nodes实现存储上,用的是两种协议中的某一种,HTTP和NFS默认的确是HTTP协议的,但是url非常诡异。
只需要知道mogilefs向外输出接口,API监听以后,向外输出的接口,可以使用两种,NFS或HTTP
这是一个很懒的东西,自己并没有创建很多东西,所以文件管理和存储也是基于别人协议,只不过把某一主机上提供的存储功能,通过另外一种协议,来用组织的方式,自己加以组织再去输出,仅此而已
从这个角度来讲,client要和trackers打交道,获取元数据,并于storage nodes某些node来完成数据存取,
是旁挂式的,即便前端使用http协议,如果使用nginx反代,
nginx就出现问题,tracker仅是返回元数据的,真正的数据在mogstored节点上,在storage nodes之上,因此,nginx自身基于http反代,即便对方式提供http协议,也无法完成此类工作,这就是为什么nginx要编译一个客户端专有的模块,只有这样子这个模块才能知道trackers交道以后,还能自己知道stroage nodes中的某些个来得到最终数据的,
可以理解为相当于nginx有了适配mogilefs的客户端的模块,是一个驱动
**

所以说多个角色,第一较tracker跟踪器的
是mogilfs核心组件,也是元数据节点,其实就是个调度器,将用户的请求调度到不同的storage nodes上
除此之外还有一些其他工作,比如监控完成节点文件复制,(如果文件不止一个副本,它的storage nodes之间要维持几个副本,那么如何选择副本所在节点,都是由tracker来完成的)
还有文件删除操作,需要删除元数据,也需要由tracker来完成
元数据查询也一样,有没有这个文件,也是由tracker来进行的
存储失败重置reaper,意思是,当我们存储文件的时候发生失败要尝试再重试一次,找一个新的存储节点来存储,比如用户在存储文件时,tracker告诉它去找第一个storage node,但是这个时候第一个storage node挂了,这次存储就失败了,客户端告诉tracker失败以后,要尝试再给客户端分配一个新的节点的,这个操作较reaper
monitor监控各后端存储节点的健康状态等
背后的所有并发是基于事件的逻辑来实现的,因此调用lib event库当中的epoll机制,来完成,
初次意外还有将请求负载均衡到多个query workers中然后让mogilefsd的子进程进行处理
这里都用tracker来实现,对mogile是一个核心组件基于lib event工作实现较高并发性

在这里插入图片描述
对tracnker来讲依赖于mysql来存储元数据,mysql来存储元数据就需要有数据库有表,表有结构指定字段,字段有数据类型,无法手动创建,好在mogilefs有专门的工具,mogdbsetup来初始化数据库,要确保数据库不能出现问题,要配置主从在这里插入图片描述第三个组件较mogilestored
是实际存放数据的地方,元数据在database中,而数据在存储节点上,而每一个存储节点是如何存储数据,任何存储空间要能使用
第一本地需要一块磁盘,磁盘要事先分区格式化才能使用空间,因此你的硬盘在本地输出的是一个本地文件系统,这个不能少,而且是挂载到某个路径下的,
而storage nodes无非就是把这些空间二次抽象以后,通过一个套接字向外输出,意思是说用户可以把文件通过这么个API来网络连接以后,存储到我们这个存储上,但是这个存储本地还是一个xfs还是ext4类型的文件系统而已,它只不过能将多个节点,联合成一个成体向外输出
靠trackers抽象成一个整体,把他们联合成一个整体的,因此存文件的时候找trackers,trackers节点去探测哪一个节点IO轻一点,存储轻一点
或者路由到某个节点以后,告诉客户端哪个节点,客户端再去找哪个节点,找到节点以后,就联系对方的套接字,以http为例,调用dv协议,完成文件上传,上传以后其实就是存储在本地文件系统上
在这里插入图片描述
在这里插入图片描述
怎么构建一个mogilefs集群,很显然数据节点应该不止一个,这样分布才有意义,
元数据节点 trackers应该也不止一个,因为只有一个将会成为单点
db也不止一个,至少得是一个主从,这个一挂所有服务就全挂了,因此构建一个mogilefs集群结构的时候,
首先DB应该做主从,tracker应该做多个节点,因为它也是spof,单点故障
db也是单点故障SPOF
storage,只要在存储数据时保留 两个副本,就不会成为单点

在这里插入图片描述
**因此这个集群该如何实现,需要自己画图,假如有三个节点构建一个mogilefs集群,首先三个节点都是存储节点,能用来存储数据
而tracker节点很轻量,所以三个节点都可以允许tracker,因此这样意味着类似无中心节点的集群,找任何一个节点都有tracker,tracker会知道自己的的数据在三个节点中的哪一个上,而这三个节点都部署了tracker,所以任何节点都是冗余的服务器,同时任何姐弟啊都有mogolilestored,所以任何一个节点都是数据服务器,
但是对tracker来讲,元数据应该放在mysql,mysql应该放在,可以尝试直接指向有冗余的mysql集群,创建个数据库即可。
一般文件不是频繁上传,对于mysql的压力就不是太大,
**在这里插入图片描述
实在不行在当前节点部署mysql,或者再找节点部署mysql,一般如果上传文件频繁不大,对文件系统压力不是太大的时候,可以再本地部署,需要做主从,还需要读写分离,还需要做一个proxy sql
前面所有的tracker,发给proxy sql,由proxysql来负责读写分离调度,因此尽量不要放在同一节点上,应该由个专门的mysql服务集群

在这里插入图片描述
演示的时候,准备三个节点tracker,每一个节点都是mogilestored,但只有一个节点装了mysql,
刚开始的时候也可以尝试只提供一个tracker,三个节点都是数据节点,一个节点是元数据节点,同时也只有一个节点存数据,甚至可以分散开来,

在这里插入图片描述
不管怎么做,就算前面三个都是tracker节点,用户请求,是做图片存储的,该如何访问,它所输出的接口,可以 是HTTP,还有NFS,如果使用的HTTP输出,它的输出逻辑很奇怪,URL很奇怪,因为数据节点每一次都有可能是某一个节点,
这个url可能是http://sn1:8080/0000/0000/0000/000000001。jpg这个对用户来讲很奇怪
用户应该看到的是ht tp://images.magedu.com/images/1.jpg ,所以需要把url映射成用户喜闻乐见的格式,而不是元数据存储的格式,要使用nginx反代来进行实现,nginx可以理解这种格式,但是向外输出是对用户友好的格式
虽然 对方是http协议,但是它的访问逻辑却是很麻烦的,要两个来回,先找元数据节点,再找数据节点,所以要给nginx补充一个模块,
这还是只是一种运用方式
mogilefs在存储数据的时候,可以通过http协议向外提供服务,因为内建的有一个web服务器,这个内建的web服务器是使用perl语言研发的。perle如果嫌弃性能差,那么可以用nginx来向外提供web服务,输出的仍然是000001这种格式,然而向整个集群种输出的url格式更加规范和统一,用户喜闻乐见,还需要使用nginx反代整个集群,而反代时需要安装模块,

在这里插入图片描述
下面就是整个mogilefs的工作逻辑
在这里插入图片描述
首先前端有个反代,自己既能找元数据服务器,又能找数据节点,可以用perlbal,nginx反代,所有的请求是元数据请求,发给tracker中的某一个节点,tracker通过数据库,获取元数据返回给客户端,客户端拿到以后再去找数据节点

在没有这个反代节点之前,它的输出,要想两个来回,访问元数据以后,能访问到数据,就只能用API了,因此我们需要自己写程序来完成数据访问,
mogilefs很体贴地提供了一组测试工具,测一下,没有问题,以后就可以用了,程序员,php还是jsp的程序通过写程序,连接到集群上来,获取数据就可以了,但是这仅是文件接口,
它的接口就是存储,只能通过API来完成文件的存取,要想来挂载,还比较麻烦,因为本来就是用户空间的服务而已,那么把整个接口输出为一个接口,输出为能与posix文件系统兼容的接口才行,这就需要一个专门的组件,fuse
FUSE可以理解为就叫文件系统,用户空间的文件系统接口,大多数的分布式文件系统,要想能够让被挂载,都必须实现FUSE功能,
mogilefs所有组件当中,应该就有一个能实现FUSE的组件
migilefs是perl语言研发的,因此部署perl的开发环境,编译安装mogilefs才可以,好在这些模块都收录进perl的模块仓库中 了,整个模块仓库叫CPAN

在这里插入图片描述
在这里插入图片描述
mogilefs有很多组件,下载下来以后,可以手动 编译安装,perl模块的编译安装,使用perl,类似config一样。make
在这里插入图片描述
CPAN有一个客户端工具就叫做cpanm,可以使用cpanm来安装,
或者使用cpan自己的shell接口(直接使用install就能安装,会在线下载解决依赖关系,下载每一个,模块的安装)需要连接到互联网
在这里插入图片描述
cpan -i 进入交互式模式,install
在这里插入图片描述
这里会告诉对应的程序叫mogile server之类的,直接在这下载即可
在这里插入图片描述在这里插入图片描述
并不建议手动下来自己去编译,因为手动解决依赖关系非常麻烦,使用install是比较妥当的做法
建议用centos6,要用centos7 就需要编译安装,在线install

下面的源码包仅用于测试,mogstored是strorage包,moilefsd是tracker包,client是客户端包,其他是补充的,perbal是非常著名的web应用程序反代,高性能高并发反代程序,类似于nginx
在这里插入图片描述
现在打算把三个节点都当作storage node,第一个节点当tracker,但是安装使用首先需要mariadb
在这里插入图片描述
当前node1节点将会配置成一个tracker节点,123都会成为storage节点
这里先不安装

在这里插入图片描述
事实上有些包没说依赖,但是也被依赖,这两个其实是perl的模块
在这里插入图片描述
还有一个模块在epel仓库中
yum list|grep "perl.IO."

在这里插入图片描述
把perlbal反代程序删除,其他都需要
在这里插入图片描述
不行就再来一次
在这里插入图片描述
net mask、在本地epe仓库应该有
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
主配置文件,mogilefsd.conf
服务脚本 unit file /etc/rc.d/init。d/mogilefsd
mogiledbsetup初始化数据库的
mogilefsd主进程

在这里插入图片描述
创建了一个用户叫mogilefsd
在这里插入图片描述
确保这个/var/run/mogilefsd属主属组
配置之前先了解配置文件

在这里插入图片描述
DBI驱动类:mysql 后端程序:mogilefs这个服务器上数据叫什么名字:数据库服务器地址
listen 作为mogilefs自己的监听地址端口,需要修改
下面是工作的子进程数量
query-jobs 接收用户请求查询的进程数量
接收删除请求进程数量 delete-jobs
做复制的请求数量replicate-jobs
做重置的进程数量reaper-jobs

在这里插入图片描述
启动之前需要做数据库初始化
在这里插入图片描述
需要修改下mysql
在这里插入图片描述
设置不要解析主机名
在这里插入图片描述
连接mysql,可以事先先创建用户
在这里插入图片描述
如果指定了本机地址,顺带创建用户的也是本机地址,所以要一个远程地址,或者手动在数据库创建
在这里插入图片描述
如果以前有数据,就重新会被初始化
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
现在数据库初始化就完成了
在这里插入图片描述
在这里插入图片描述
手动 来启动 ,看哪里出现了问题
缺一个Perl模块

在这里插入图片描述
在这里插入图片描述
CentOS 7安装rpm包:

# yum install perl-Net-Netmask perl-IO-stringy perl-Sys-Syslog perl-IO-AIO

本地安装的rpm包:
	MogileFS-Server-2.46-2.el6.noarch.rpm            perl-Danga-Socket-1.61-1.el6.rf.noarch.rpm
	MogileFS-Server-mogilefsd-2.46-2.el6.noarch.rpm  perl-MogileFS-Client-1.14-1.el6.noarch.rpm
	MogileFS-Server-mogstored-2.46-2.el6.noarch.rpm  perl-Perlbal-1.78-1.el6.noarch.rpm
	MogileFS-Utils-2.19-1.el6.noarch.rpm

mogilefs的各种客户端工具:
http://code.google.com/p/mogilefs/wiki/Clients

数据库授权
GRANT ALL PRIVILEGES ON . TO ‘mogile’@‘127.0.0.1’ IDENTIFIED BY ‘mogile’ WITH GRANT OPTION;

FLUSH PRIVILEGES;

还差一个包,直接一起装上
在这里插入图片描述
还有问题
在这里插入图片描述
在这里插入图片描述
pid 文件之前没有正常删除,可以了
在这里插入图片描述
起了很多进程,看下脚本
在这里插入图片描述
有文件,手动停止服务看看,有文件需要手动删掉,下次启动就不会有问题了
在这里插入图片描述
删除重启
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
现在trackers安装完成
现在还没有node节点,先配置storage node

在这里插入图片描述
最大并发连接数默认10000,默认是通过http向外提供服务的,端口是7500,对于storagenode 还需要探测它的监控与否,监控性探测靠的是mgmlisten 7501
docroot 数据保存在哪里

在这里插入图片描述
建议把文件放在专门的路径下,属主属组需要是mogilefs
在这里插入图片描述
创建文件路径,data下也可以创建dev1deve2之类当设备来使用,一般而言是一个节点一个设备,因为是需要做快照做冗余的,冗余 在创建设备副本来实现的,所以把每个节点的存储空间当设备,一个节点上可以有多个分区,单独被挂载,每一个分区可以当做一个设备,一般而言一个分区只做一个设备来用,所以在第一个节点上应该有一个dev1的目录,第二个节点上有dev2的目录,第三个节点有一个dev3的目录,才能识别成三个设备的
必须要修改管理员设置的最大的连接数
在这里插入图片描述最大并发数是10000,但是最大打开文件数只有1024个
在这里插入图片描述
在这里插入图片描述
ulimit -n 65536设定最多打开65535个文件
可能少一个模块。但是kill掉以后,启动成功
没有说不能缺少模块只是说已经被监听了

在这里插入图片描述
确实已经启动起来
在这里插入图片描述
ctrl +c 进终止,说明服务启动是没有问题的
在这里插入图片描述
但是用脚本起不来
你所配置的数量超限了,65535有点多

在这里插入图片描述
去掉65535
在这里插入图片描述
在这里插入图片描述
用户名mogilefs +软硬件包含+notfile
在这里插入图片描述
代表当前是20000个
在这里插入图片描述
之前虽然报错但是已经运行起来了
在这里插入图片描述
依然失败
在这里插入图片描述
启动之后没有创建这个文件来
在这里插入图片描述
依然是脚本的问题
在这里插入图片描述
查看脚本有没有创建文件的地方,虽然pid不在,但是已经启动服务了,可以忽略,实际上应该是systemctl的问题
在这里插入图片描述
老是去找PID文件,但是实际上这个程序不会创建pid文件,服务已经正常运行
在这里插入图片描述
在这里插入图片描述
那么修改服务脚本,开始的时候顺便创建文件
在这里插入图片描述
kill掉mogfilefsd,启动也探测不到文件,说明前面的命令是失败的
在这里插入图片描述
kill掉进程,看下哪一步有问题
在这里插入图片描述
老是重定向到systemctl,复制到本地运行试试
在这里插入图片描述
这次就成功了
在这里插入图片描述
脚本其实没问题,跟systemctl有关
在这里插入图片描述
复制到其他节点上去
在这里插入图片描述
先要同步时间ntp
在这里插入图片描述
先解决依赖关系
yum install perl-Net-Netmask perl-IO-stringy perl-Sys-Syslog perl-IO-AIO
在这里插入图片描述
直接安装本地目录下的所有rpm包
在这里插入图片描述
还需要创建目录
在这里插入图片描述
把配置文件复制过去
在这里插入图片描述
先不启动tracker,现在没必要,把服务脚本拷贝到当前目录,在当前目录启动
在这里插入图片描述
现在对于mogilefs来讲 ,三个数据节点是ok,但你的tracker节点还不知道。,所有的数据节点需要tracker添加以后才能知道
在这里插入图片描述
moadm把我们的存储节点添加进来

基本操作
MogileFS 的管理

mogstored 程序的启动将使主机本身成为一个存储的节点,mogstored 的启动后,
还需要使用 mogadm 来让当前的这个主机加入到 MogileFS 的系统中.这就是一个存储节点
.注意存储节点中还需要添加设备,每个设备有一个 uniq 的 ID 号.同样也要使用 mogadm 来加入到 MogileFS 的系统中.

注意,下面的命令中,如果没有配置照我前面 “设置 MogileFS 中的管理工具的接口” 来配置管理接口的地址的话
,都要加一个 –trackers=<tracker_ip>:7001 才能正常.

MogileFS 中的存储主机(节点)管理
现在加入“存储节点”到 trackers 中.告诉注册自己到 trackers.相当于为每个主机加入 MogileFS 的存储系统

1
mogadm host add <storage_node_name> --ip=127.0.0.1 --port=7500 --status=alive
注,如果配置了前面的管理工具的地址,就简单多了

1
mogadm host add <storage_node_name> --ip=127.0.0.1 --port=7500 --status=alive
检查这个主机是否加入到 MogileFS 的系统中.

1
mogadm host list
使用 mogadm 来修改 MogileFS 中主机的信息,修改的时候,一定要加上状态 –status=alive,不然不能修改

1
mogadm host modify storage_node_name --ip=123.xxx.xxx.70 --status=alive

在这里插入图片描述
check检查环境是否ok
在这里插入图片描述
host列出host主机
把节点加进来,使用host add
添加的时候默认不可用,需要可用

在这里插入图片描述
在这里插入图片描述
存储空间是需要加进来的
在这里插入图片描述
在这里插入图片描述
未完待续,未执行
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值