L12 MogileFS详细应用配置与说明

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查看信息

[[email protected] ~]# 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

[[email protected] mogilefs]# cp mogilefsd.conf{,.bak}
[[email protected] mogilefs]# ls
mogilefsd.conf  mogilefsd.conf.bak  mogstored.conf

[[email protected] 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,配置

[[email protected] 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 主机,查看信息

[[email protected] mogilefs]# mogadm --trackers=192.168.0.20:7001 host add mg1 --ip=192.168.0.21 --status=alive
[[email protected] mogilefs]# mogadm --trackers=192.168.0.20:7001 host list
mg1 [1]: alive
  IP:       192.168.0.21:7500
添加 192.168.0.22 主机,查看信息
[[email protected] mogilefs]# mogadm --trackers=192.168.0.20:7001 host add mg2 --ip=192.168.0.22 --status=alive
[[email protected] 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  下载


[[email protected] 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
[[email protected] mogilefs]# mogupload --trackers=192.168.0.20:7001 --domain=images --key=‘/1.jpg‘ --file=/abc.jpg  #上传本地图片/abc.jpg 访问路径为/1.jpg

[[email protected] mogilefs]# mogfileinfo
Usage: /usr/bin/mogfileinfo --trackers=host --domain=foo --key=‘/hello.jpg‘
[[email protected] 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;

时间: 2024-12-11 11:05:31

L12 MogileFS详细应用配置与说明的相关文章

搭建coreseek(sphinx+mmseg3)详细安装配置+php之sphinx扩展安装+php调用示例

http://blog.csdn.net/e421083458/article/details/21529969 常用的命令 ps -ef|grep searchd 如果你开了search服务后,你命令比如 indexer search 后面都需要带上 --rotate ./indexer --all ./searchd 至于其它什么命令 看手册 collect2: ld returned 1 exit status make[2]: *** [indexer] Error 1 make[2]:

[转载,感觉写的非常详细]DUBBO配置方式详解

[转载,感觉写的非常详细]DUBBO配置方式详解 原文链接:http://www.cnblogs.com/chanshuyi/p/5144288.html DUBBO 是一个分布式服务框架,致力于提供高性能和透明化的 RPC 远程服务调用方案,是阿里巴巴 SOA 服务化治理方案的核心框架,每天为 2,000+ 个服务提供 3,000,000,000+ 次访问量支持,并被广泛应用于阿里巴巴集团的各成员站点. Dubbo采用全spring配置方式,透明化接入应用,对应用没有任何API侵入,只需用Sp

详细说明 配置 Sublime Text 开发node.js(windows)包括sub2和sub3的区别

1.先安装Sublime Text  2或者3皆可 2.下载 sublime Text 的nodejs插件 得到那个zip包(后面会介绍用Package Control安装) 3.下载后解压 直接改名为nodejs(一定是这个名字,否则sub2里编辑default文件会报错) 放到 Preferences-->浏览程序包Browse Packages所在的文件夹. 4.打开刚才的nodejs文件夹 找到根目录里面的 Nodejs.sublime-build文件 如下 { "cmd"

windows 下android react native详细安装配置过程

写在前面: 在网上搜了很多安装配置文档,感觉没有一个真的跟我安装的过程一模一样的,东拼拼西凑凑,总算是装好了,我不会告诉你,断断续续,我花了两天时间...一到黑屏报错就傻眼,幸好在react群里遇到了热心的同行,还有同事的帮助...废话就到这里了,此处只是记录我自己装载的过程,系统环境各种不一样,可能或多或少有差异. 我的电脑,windows7 64位之前已经装了eclipise,java,jdk,所以,有些安装文档上面的java的jdk和c++,我电脑上并不需要. 这里我还是都粘贴上来. 参考

MogileFS系统简单配置实例

实验原理: MogileFS是一个开源的分布式文件系统,用于组建分布式文件集群,由LiveJournal旗下DangaInteractive公司开发,Danga团队开发了包括 Memcached.MogileFS.Perlbal等不错的开源项目:(注:Perlbal是一个强大的Perl写的反向代理服务器). MogileFS是一个开源的分布式文件系统.主要特性包括:应用层的组件.无单点故障.自动文件复制.具有比RAID更好的可靠性.无需RAID支持等……核心角色如下: Tracker节点:借助数

Oracle 11g详细安装配置教程

最近开始学习Oracle数据库了,根据我的理解Oracle数据库是一种强大.复杂.高性能的数据库,而且价格不菲,使用都是中大型企业,土豪专用.学习一种数据库的入门工作就是先安装这种数据库,鉴于大批道友安装时出现问题,特将我安装数据库的流程做成详细的图文教程. 材料:Oracle 11g 下载地址:http://pan.baidu.com/s/1c1vd3H2 根据电脑的位数解压对应的压缩包到同一个文件夹 点击解压好的文件中的setup.exe,下面开始进图详解  一.安装 我用的server20

IDEA、Eclipse的详细安装配置及Tomcat服务集成介绍

说到开发工具,我们大家都知道每一个开发语言对会对应多个比较合适自己的开发工具,好的开发工具可以帮助提高写代码的效果及排错,比如拿java来说吧~最早及现在用的人最多的想必应该是eclipse了吧~那具体功能怎么样呢,对我一个新手来说没有资格评价了,最近看见有人用IDEA工具来编写代码,而且还说到IDEA工具比eclipse的效率高,而且好,于是我在网上找了一些关于idea和eclipse的对比文档,查看后,多少对idea有些触动,之前就会使用eclipse,可idea不会使用,所以就慢慢学吧~通

ubuntu12上部署Django1.8.4+uwsgi+nginx超级详细流程配置到云服务器

环境: 系统:ubuntu12,系统自带默认有python2.7 框架:Django1.8.4,需要python2.7以上才能支持 前言: 用户浏览器发送http请求->nginx(静态文件js,直接返回静态文件)->uWSGI(动态请求,nginx与uWSGI是通过socket传送交流的)->Django应用程序,所以其实没有nginx,只需要uWSGI也是可以的,只不过使用nginx可以更加好的做到负载均衡 一.静态文件处理 1.1.在Django的编写调试阶段,setting中所都

Centos7下Apache详细安装配置及证书申请SSL配置介绍

首先说到Centos大家都已经非常熟悉了,所以我们也就不多介绍关于Centos具体发展了,我们首先知道在Centos7之前版本命令和ReadHat的命令完全一样的,可Centos从6.0版本升级到Centos7版本之后,命令及功能上有了很大的变化,最明显的差别就是从安装的操作界面及操作命令上已经有很大变化了,更不用说功能上的变化了,比如centos6.x版本的iptalbes到centos7的firewall的变化,当然,变化了很多,我也就不多说了,今天呢,主要给大家介绍一下再Centos7下A