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

[经验分享] L12 MogileFS详细应用配置与说明

[复制链接]

尚未签到

发表于 2019-2-1 08:26:40 | 显示全部楼层 |阅读模式
MogileFS

  概述:
  MogileFS是一个开源的分布式文件存储系统,由LiveJournal旗下的Danga Interactive公司开发。Danga团队开发了包括 Memcached、MogileFS、Perlbal 等多个知名的开源项目。目前使用MogileFS 的公司非常多,如日本排名先前的几个互联公司及国内的yupoo(又拍)、digg、豆瓣、1号店、大众点评、搜狗和安居客等,分别为所在的组织或公司管理着海量的图片。
  MogileFS由3个部分组成:
  (1) server:主要包括mogilefsd和mogstored两个应用程序。mogilefsd实现的是tracker,它通过数据库来保存元数据信息,包括站点domain、class、host等;mogstored是存储节点(store node),它其实是个WebDAV服务,默认监听在7500端口,接受客户端的文件存储请求。在MogileFS安装完后,要运行mogadm工具将所有的store node注册到mogilefsd的数据库里,mogilefsd会对这些节点进行管理和监控。
  (2) utils(工具集):主要是MogileFS的一些管理工具,例如mogadm等。
  (3) 客户端API:MogileFS的客户端API很多,例如Perl、PHP、Java、Python等,用这个模块可以编写客户端程序,实现文件的备份管理功能等。
  存储主机(节点)
  这个是 MogileFS 存储文件存放在这些机器上,也是 mogstored 节点,也叫 Storage Server,一台存储主要都要启动一个 mogstored 服务.扩容就是增加这些机器.
  设备(device)
  一个存储节点,以就是上面的主机,可以有多个 device, 就是用来存放文件的目录(例如挂载的目录),每个设备都有一个设备id,需要在 mogstored 的配置文件中的 docroot 配置的项目 指定的目录下面创建相应的设备的目录,目录名为 $docroot/dev$id,设备是不能删除的.只能将其设备的状态的值置为dead,当一个设备 dead 之后,就真的 dead了,里面的数据也无法恢复了,且这个dead了的设备的 id 也不能再用.
  

  简单示例图:
  

  配置示例:
  192.168.0.20  trackers mariadb     (node1)
  192.168.0.21 192.168.0.22  mogstored 节点  (node2 node3)

  步骤:
  一,node1:mogilefsd ,tracker+mysql配置
  二,node2,node3:mogstored 节点配置
  三,在node1配置mogilefs添加node1,2节点 (添加主机,设备,domain,class)

  四,一些事项说明
  

  一,node1:mogilefsd,tracker+mysql配置
  1,安装mariadb
  略
  2,安装 mogiefsd
  需要的软件包:(要安装完成需要epel源)

epel源

vi /etc/yum.repos.d/epel.repo
[epel]
name=epel
mirrorlist=http://mirrors.fedoraproject.org/mirrorlist?repo=epel-$releasever&arch=$basearch
enabled=1
gpgcheck=0
  yum --nogpgcheck localinstall *.rpm


  3,授权远程访问mysql的账户

  MariaDB [(none)]> GRANT ALL ON *.* TO 'root'@'192.168.0.%' IDENTIFIED BY 'root' WITH GRANT OPTION;
  Query OK, 0 rows affected (0.22 sec)
  MariaDB [(none)]> flush privileges;
  Query OK, 0 rows affected (0.15 sec)
  4,初始化数据库 (建立mogilefs的数据库和用户)
  使用mogdbsetup --help查看信息
  [root@node1 ~]# mogdbsetup --dbhost=192.168.0.20 --dbrootuser=root --dbrootpass='root' --dbname=mogdb --dbuser=moguser --dbpass=mogpass

This will attempt to setup or upgrade your MogileFS database.
It won't destroy existing data.
Run with --help for more information.  Run with --yes to shut up these prompts.

Continue? [N/y]: y

Create/Upgrade database name 'mogdb'? [Y/n]: y

Grant all privileges to user 'moguser', connecting from anywhere, to the mogilefs database 'mogdb'? [Y/n]: y

  4,配置mogilefsd
  [root@node1 mogilefs]# cp mogilefsd.conf{,.bak}
[root@node1 mogilefs]# ls
mogilefsd.conf  mogilefsd.conf.bak  mogstored.conf

  [root@node1 mogilefs]# vim mogilefsd.conf

  daemonize = 1  #运行为后台守护进程
  pidfile = /var/run/mogilefsd/mogilefsd.pid
  db_dsn = DBI:mysql:mogdb:host=192.168.0.20
  db_user = moguser
  db_pass = mogpass
  listen = 0.0.0.0:7001
  conf_port = 7001
  query_jobs = 10    #并发响应客户端请求数
  delete_jobs = 1 #删除请求的线程数
  replicate_jobs = 5#用于做复制的线程数
  reaper_jobs = 1 #
  #fsck_jobs = 1          #文件系统检查的进程(一般不必要开)

  二,node2,node3 :mogstored 节点配置
  1,安装 mogstored
  软件包复制到node2,node3
  scp -r /mogilefs node2:/
  scp -r /mogilefs node3:/
  注意也要有epel源
  yum install *.rpm -y
  yum install perl-IO-AIO  -y ---在mogstored节点必须安装这个组件
  2,配置
  [root@node2 mogilefs]# vim /etc/mogilefs/mogstored.conf
  maxconns = 10000  #最大并发连接数
  httplisten = 0.0.0.0:7500        #http监听
  mgmtlisten = 0.0.0.0:7501        #tracter来监测mogstored健康状态的
  docroot = /var/mogdata        #文件存储的目录
  两个节点分别创建文件存储目录(最好使用新分区,这里直接使用系统目录使用)
  dev1,dev2 中 dev为固定文件名,1,2区分两个节点的设备名
  node2
  mkdir /var/mogdata/dev1 -p
  node3
  mkdir /var/mogdata/dev2 -p
  chown mogilefs.mogilefs /var/mogdata/ -R  #一定要修改权限。
  启动服务

  三,在node1配置mogilefs添加node1,2节点 (添加主机,设备,domain,class)
  MogileFS-Utils-2.19-1.el6.noarch.rpm 包有很多工具,使用这些工具配置。


  mogadm 工具使用:
  mogadm --help
  man mogadm

  监测自己,tracker是否状态正常。

  mogstats 命令连接mysql查看tracker状态
  mogstats --help
  添加mogstrore节点:
  使用添加主机方法:
  
  添加 192.168.0.21 主机,查看信息
  [root@node1 mogilefs]# mogadm --trackers=192.168.0.20:7001 host add mg1 --ip=192.168.0.21 --status=alive
[root@node1 mogilefs]# mogadm --trackers=192.168.0.20:7001 host list
mg1 [1]: alive
  IP:       192.168.0.21:7500
添加 192.168.0.22 主机,查看信息
[root@node1 mogilefs]# mogadm --trackers=192.168.0.20:7001 host add mg2 --ip=192.168.0.22 --status=alive
[root@node1 mogilefs]# mogadm --trackers=192.168.0.20:7001 host list
mg1 [1]: alive
  IP:       192.168.0.21:7500

mg2 [2]: alive
  IP:       192.168.0.22:7500

  添加设备方法:

  mogadm --trackers=192.168.0.20:7001 device add mg1 1
  mogadm --trackers=192.168.0.20:7001 device add mg2 2
  mogadm --trackers=192.168.0.20:7001 device list  #查看



  添加domain

  添加class

  使用命令测试:

  mogupload上传
  mogfetch  下载
  
  [root@node1 mogilefs]# mogupload   #使用方法
Usage: /usr/bin/mogupload --trackers=host --domain=foo --key='/hello.jpg' --file='./hello.jpg'
You have new mail in /var/spool/mail/root
[root@node1 mogilefs]# mogupload --trackers=192.168.0.20:7001 --domain=images --key='/1.jpg' --file=/abc.jpg  #上传本地图片/abc.jpg 访问路径为/1.jpg
  
[root@node1 mogilefs]# mogfileinfo
Usage: /usr/bin/mogfileinfo --trackers=host --domain=foo --key='/hello.jpg'
[root@node1 mogilefs]# mogfileinfo --trackers=192.168.0.20:7001 --domain=images --key='/1.jpg'
- file: /1.jpg
     class:              default
  devcount:                    2
    domain:               images
       fid:                    2
       key:               /1.jpg
    length:                15299
- http://192.168.0.21:7500/dev1/0/000/000/0000000002.fid
- http://192.168.0.22:7500/dev2/0/000/000/0000000002.fid   #保存的两个副本


在node2和node3节点查看mogdata目录:




  至此,简单配置完成。
  四,一些事项说明
  客户端访问url和冗余负载均衡
  客户端可以直接访问:



  Nginx 做为 MogileFS 的前端客户端
我们使用 Nginx 来获取文件,做前端的查询代理时需要使用到mogilefs的这个模块.可以下载这个模块编译进 Nginx 就行了.直接使用 ./configure –add-module= 这个参数就可以了.
最新的这个模块的下载地址是:https://github.com/vkholodkov/nginx-mogilefs-module
使用这个需要考虑到网站原来的 url 是什么样的.比如:

http://www.a.com/uploads/front_page/A6B00135E24AB17E043B9B5453762438.png
这个 URL 中的 UUID 是 A6B00135E24AB17E043B9B5453762438.png.这时我们使用这个做 key 来存成 MogileFS 中就行.
再结合 rewrite,只要 key 在 url 里有,就能直接代理到后端的 mogilefs.象如下的写法,会直接取 A6B00135E24AB17E043B9B5453762438.png 来做查询用的 key.

location  ~ ([^\/]+)$ {
        mogilefs_tracker 192.168.1.xxx:7001;
        mogilefs_domain img;
        mogilefs_methods GET;
        mogilefs_noverify on;

        mogilefs_pass {
                proxy_pass $mogilefs_path;
                proxy_hide_header Content-Type;
                proxy_buffering off;
        }
}



  负载均衡:

  如果使用了多个 tracker 的话,要配置使用多个 tracker 来进行负载均衡和备份.可以直接配置 tracker 为 upstrame:

upstream online_mogilefs {
  server 10.0.0.1:7001;
  server 10.0.0.2:7001;
}
然后后面配置 tracker 的连接时,直接加上就行了

mogilefs_tracker online_mogilefs;
如果你还想配置使用 mogilefs 的 Nginx 上传,使用其中的 put 功能然后就不要安装客户端上传送,就需要打个补丁.
上面的配置其实也是一样,关键对于上传的配置,需要给方法修改为
mogilefs_methods PUT DETEL;




运维网声明 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-670252-1-1.html 上篇帖子: mogileFS分布式文件存储解决方案 下篇帖子: 分布式文件系统之——mogilefs
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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