设为首页 收藏本站
查看: 1156|回复: 0

[经验分享] 企 业 级 分 布 式 存 储 应 用

[复制链接]

尚未签到

发表于 2019-2-1 08:24:41 | 显示全部楼层 |阅读模式
  一:MogileFS简介
MogileFS是一个开源的分布式文件存储系统,由LiveJournal旗下的Danga Interactive公司开发。Danga团队开发了包括 Memcached、MogileFS、Perlbal 等多个知名的开源项目。目前使用MogileFS 的公司非常多,如日本排名先前的几个互联公司及国内的yupoo(又拍)、digg、豆瓣、1号店、大众点评、搜狗和安居客等,分别为所在的组织或公司管理着海量的图片,以大众点评为例,用户全部图片均有mogileFS存储,数据量已经达到500TB级别以上。
(1)、MogileFS特性:
1,支持多节点冗余
2,可实现自动的文件复制
3,使用名称空间(命名空间),每个文件通过key来确定
4,不需要RAID,应用层可以直接实现RAID,不共享任何东西,通过“集群”接口提供服务
5,工作于应用层,没有特殊的组件要求
6,不共享任何数据,mogilefs不需要依靠昂贵的SAN来共享磁盘,每个机器只用维护好自己的磁盘
(2)、MogileFS主要由三部分构成:tracker节点,MySQL(database)节点,storage节点
1,tracker(Mogilefsd进程):是mogilefs的核心部分,它是一个调度器。MogileFSd进程就是trackers进程程序,trackers做了很多工作:Replication,Deletion,Query,Reaper,Monitor 等等,这个是基于事件的( event-based ) 父进程/消息总线来管理所有来之于客户端应用的交互(requesting operations to be performed), ,包括将请求负载平衡到多个“query workers”中,然后让 MogileFSd 的子进程去处理;
2,MySQL:用来存放mogilefs的元数据(命名空间和文件路径),是tracker来操作和管理它,可以用来mogdbsetup程序来初始化数据库,因为数据库保存了mogilefs的所有元数据,建议做成HA架构
3,storage Nodes:这个是mogilefs存储文件存放在 一些机器上,也是mogstored节点,也叫storager server,一台存储主要都要启动一个mogstored服务,扩容就是增加这些机器实际文件存放的地方
(3)、MogileFS架构:

每次文件的上传和读取,都经过前端TrackerServer服务器,trackerServer服务器受到client端的请求,查询数据库,返回
一个上传或者是读取的可用的后端StorageServer的地址,然后由client端直接操作后端StorageServer服务器。upload操
作返回就是成功或者失败的结果,read操作就是返回对应的查询数据
(4)MogileF管理的三个概念:
1,Domain(域):一个mogilefs可以有多个Domain,用来存放不同文件(大小,类型)同一个Domain内key必须唯一,不同DOmain内,key可以相同
2,每一个存储节点称为一个主机host,一个主机上可以有多个存储设备dev(单独的硬盘),每个设备都有id号,Domain+fid用来定位文件
3,class:文件属性管理,定位文件存储在不同设备上的份数
(5)、MogileFS安装方式
mogilefs安装常用两种方式,yum安装和perl程序安装
yum 安装:通常是在线安装,好处是安装方式简单,不易出错;常用的安装yum源为
epel
yum install perl-Net-Netmask perl-IO-String 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 #socket
MogileFS-Server-mogilefsd-2.46-2.el6.noarch.rpm # tracker节点
perl-MogileFS-Client-1.14-1.el6.noarch.rpm #客户端
MogileFS-Server-mogstored-2.46-2.el6.noarch.rpm #Storage存储节点
MogileFS-Utils-2.19-1.el6.noarch.rpm #主要是MogileFS的一些管理工具,例如
mogadm等。
  perl程序源码包安装:通过perl的包管理命令cpanm进行安装
yum -y install make gcc unzip perl-DBD-MySQL perl perl-CPAN perl- YAML perl-Time-HiRes
cpanm安装
wget http://xrl.us/cpanm -O /usr/bin/cpanm; sudo chmod +x
/usr/bin/cpanm
#cpanm DBD::mysql
#cpanm MogileFS::Server
#cpanm MogileFS::Utils
#cpanm MogileFS::Client
#cpanm IO::AIO
  mogilefs程序路径
主程序:/usr/bin/mogilefsd
命令行管理工具程序:/usr/bin/mogadm
主配置文件(Tracker):/etc/mogilefs/mogilefsd.conf
主配置文件(Storage Nodes):/etc/mogilefs/mogstored.conf
二、MogileFS相关配置文件讲解
(1)主配置文件(tracker)
daemonize = 1               #设置为1表示启动为守护进程
配置数据库连接相关信息:
db_dsn = DBI:mysql:mogilefs:host=127.0.0.1
db_user = username      #连接数据库的用户名
db_pass = password      #连接数据库用户名的密码
listen = 127.0.0.1:7001   #mogilefs监听地址,监听在127.0.0.1表示只允许从本机登录进行管理
query_jobs = 10              #启动多少个查询工作线程
delete_jobs = 1               #启动多少个删除工作线程
replicate_jobs = 5           #启动多少个复制工作线程
reaper_jobs = 1              #启动多少个用于回收资源的线程
maxconns = 10000        #存储系统的最大连接数.
httplisten = 0.0.0.0:7500   #可通过http访问的服务端口
mgmtlisten = 0.0.0.0:7501    #mogilefs的管理端口
docroot = /var/mogdata        #该项决定了数据的在storage上存储的实际位置,建议使用的是一个单独挂载使用的磁盘
(2)主配置文件(storage)
maxconns = 10000                   #存储系统的最大连接数
httplisten = 0.0.0.0:7500           #可通过http访问的服务端口
mgmtlisten = 0.0.0.0:7501          #mogilefs的管理端口
docroot = /var/mogdata
(3)数据库的授权:
只需一个命令即可完成:mogdbsetup

按照步骤输入即可。
tracker服务的启动:/etc/init.d/mogilefsd start
storage服务的启动:/etc/init.d/mogstored start
三、MogileFS的管理
mogstored 程序的启动将使主机本身成为一个存储的节点,mogstored 的启动后, 还需要使用 mogadm 来让当前的这个主机加入到 MogileFS 的系统中.这就是一
个存储节点.注意存储节点中还需要添加设备,每个设备有一个 uniq 的 ID 号.同样也要使用 mogadm 来加入到 MogileFS 的系统中. MogileFS 中的存储主机(节点)管理
现在加入“存储节点”到 trackers 中.告诉注册自己到 trackers.相当于为每个主机加入 MogileFS 的存储系统
  mogadm host add  --ip=127.0.0.1 --port=7500 -- status=alive   #添加主机,将主机信息注册到数据库中
  mogadm host list       #检查这个主机是否加入到 MogileFS 的系统中.
  mogadm host modify node1 --ip=123.xxx.xxx.70 --status=alive     #modify可以修改主机IP,状态
  MogileFS 中的存储设备管理
建一个目录 ( 并且需要 mount 一个硬盘给这个目录 ) 给这个"设备" 使用, 我们这的例子是使用dev1在主机中建一个目录,建目录使用 dev + ID 这种格式,记的所有系统中 ID 不能重复.也必
须和配置文件中的路径一样. 如下:
mkdir -p /data/mogdata/dev1
  一定要注意, 给相对应用的块设备 mount 到这个点, 软链也行. 不然写文件都会写到系统硬上, 其它的硬盘都是空的
mogadm device add  ID   #给"设备"加入”存储的节点“当中,相当于为每个设备加入 MogileFS 的存储系统
  mogadm device list    #检查我们加入的"设备"信息,这样就能见到上面这个设备了.还能显示加入的大小
  标记失效的设备,当硬盘坏了,设备有问题时,这时会自动在一个域内复制到最小设置的保存份数. 恢复上面一样在一次 add 设备就好了
mogadm device mark   ID dead
  建"域" mogadm domain add
  mogadm domain list    #检查"域",显示存在的域
  mogadm class add   --mindevcount=3  #在"域"中建"类",并加入最小保存份数
  MogileFS 中文件管理
我们可以简单的使用 mog 开头的系列 Linux 命令, 来进行管理, 当然也可以用 Client 的 API
来管理. 新的 MogileFS 的工具, 拆分成多个了. 下面这些命令, 都需要在
/etc/mogilefs/mogilefs.conf 中指定 trackers , 不然就需要在下面的命令都加上 –trackers
来指定.

  • 上传文件
    mogupload --domain=domainID --key= --file=
  •   查询文件
    mogfileinfo --trackers=host --domain= --key=
  •   删除指定文件
    mogdelete --domain= --key=
  •   列出所有的文件 key这个可以列出指定 domain 下面的所有的 key , 也可以指定的一个前缀, 来找特定前缀的所有文件的 key.
    moglistkeys --domain= --key_prefix=
  • 列出指定 fid 的文件
    这个 fromfid 是指 mogileFS 内部的文件 id , 这个是自增的, 你可以指定一个开始的位置, 指定显示多少文件, 这个用于查询指定时间段内上传的文件时很有用. 比如我们在 8 点上传了一个文件, 是 100 的 id, 我们可以查询到从这个之后的所有的 id 的文件.
    moglistfids --fromfid= --count=
  暂时停止服务器
  mogadm host mark  storageid down   #停止storage节点  
mogadm host mark mystorage alive   #启动storage节点
mogadm host mark  storageid dead   #彻底关闭storage节点,这时候就需要重新更换一个新的
  只读模式和耗尽(Drain) 模式
  mogadm device mark storageid 5 readonly
mogadm device mark storageid 5 drain




运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-670250-1-1.html 上篇帖子: 第四十五课 分布式系统、大型网络架构、MogileFS 基础应用 下篇帖子: mogileFS分布式文件存储解决方案
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表