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

[经验分享] [转]分布式文件系统 MogileFS 安装手册

[复制链接]

尚未签到

发表于 2015-9-9 14:16:22 | 显示全部楼层 |阅读模式
  一、【理论知识】
MogileFS 是一个分布式文件存储的解决方案,它能够做到不需要特殊的核心组件、无单点失败、自动的文件复制、比RAID好多了、传输中立,无特殊协议(客户端可以通过NFS或HTTP来和MogileFS通信)、简单的命名空间、不用共享任何东西、不需要RAID、不会碰到文件系统本身的不可知情况 等等优点。
相关知识和安装方面的问题可以去看官方的wiki:http://mogilefs.pbwiki.com/。(有可能被GFW了,请使用代理或者安装一个Firefox的gladder插件来访问)
[ Mogilefs分为几部分 ]
1. 数据库(MySQL)部分
你可以用mogdbsetup程序来初始化数据库。数据库保存了Mogilefs的所有元数据,你可以单独拿数据库服务器来做,也可以跟其他程序跑在一起,数据库部分非常重要,类似邮件系统的认证中心那么重要,如果这儿挂了,那么整个Mogilefs将处于不可用状态。因此最好是HA结构。
2. 存储节点
mogstored程序的启动将使本机成为一个存储节点。启动时默认去读/etc/mogilefs/mogstored.conf ,具体配置可以参考配置部分。mogstored启动后,便可以通过mogadm增加这台机器到cluster中。一台机器可以只运行一个 mogstored作为存储节点即可,也可以同时运行其他程序。
3. trackers(跟踪器)
mogilefsd即trackers程序,类似mogilefs的wiki上介绍的,trackers做了很多工作,Replication ,Deletion,Query,Reaper,Monitor等等。mogadm,mogtool的所有操作都要跟trackers打交道,Client的一些操作也需要定义好trackers,因此最好同时运行多个trackers来做负载均衡。trackers也可以只运行在一台机器上,也可以跟其他程序运行在一起,只要你配置好他的配置文件即可,默认在/etc/mogilefs/mogilefsd.conf。
4. 工具
主要就是mogadm,mogtool这两个工具了,用来在命令行下控制整个mogilefs系统以及查看状态等等。
5. Client
Client实际上是一个Perl的pm,可以写程序调用该pm来使用mogilefs系统,对整个系统进行读写操作。

[ 概念定义 ]
可以参考官方wiki的这儿,简单说一下
domain:最高域,在一个域下key是唯一的。
class:包含在domain中,可以针对每一个class定义保存的份数。
key:对文件的唯一标识。
file:文件。
[ 适用性 ]
由于Mogilefs不支持对一个文件的随机读写,因此注定了只适合做一部分应用。比如图片服务,静态HTML服务。
即文件写入后基本上不需要修改的应用,当然你也可以生成一个新的文件覆盖上去。

二、【安装Perl和相关包】
[ 安装环境 ]
操作系统:RHEL 4 (AS 4)
Perl版本:Perl v5.8.8
注意:请确保你的Perl版本为大于 v5.8.8,不然可能安装会有问题,另外,本文所有操作都是在一台机器上完成,可能多台机器上稍微有些不同,请自行调整
[ MySQL ]
安装前请安装好MySQL,如果MySQL Server和MogileFS不是一台机器,请在MogileFS机器安装好MySQL Client,本文假设MySQL Client安装在:/usr/local/mysql 目录,安装完客户端后请建立一个软链接:
ln -s /usr/local/mysql/lib/libmysqlclient.so.15 /usr/lib/libmysqlclient.so.15
[ Perl包安装 ]
因为MogileFS需要使用很多相关的Perl包,请逐一按照一下次序安装,本文采用的是比较笨,比较简单的安装方法,逐个把包下载回来本机手工安装,没有使用cpan的包安装方式。
要下载包,请在http://search.cpan.org中输入包名,然后下载,一般提供的是最新版,如果版本跟下面不一致,请以最新版为准。
为方便使用,本文包下载地址列表:(不保证您阅读本文的时候有效)
http://search.cpan.org/CPAN/authors/id/J/JH/JHI/BSD-Resource-1.2901.tar.gz
http://search.cpan.org/CPAN/authors/id/B/BR/BRADFITZ/Sys-Syscall-0.22.tar.gz
http://search.cpan.org/CPAN/authors/id/J/JH/JHI/Time-HiRes-1.9715.tar.gz
http://search.cpan.org/CPAN/authors/id/M/MS/MSERGEANT/Danga-Socket-1.59.tar.gz
http://search.cpan.org/CPAN/authors/id/M/MU/MUIR/modules/Net-Netmask-1.9015.tar.gz
http://search.cpan.org/CPAN/authors/id/M/ML/MLEHMANN/IO-AIO-3.07.tar.gz
http://search.cpan.org/CPAN/authors/id/D/DO/DORMANDO/Perlbal-1.71.tar.gz
http://search.cpan.org/CPAN/authors/id/S/SO/SOENKE/String-CRC32-1.4.tar.gz
http://search.cpan.org/CPAN/authors/id/B/BR/BRADFITZ/Gearman-1.09.tar.gz
http://search.cpan.org/CPAN/authors/id/B/BR/BRADFITZ/Gearman-Client-Async-0.94.tar.gz
http://search.cpan.org/CPAN/authors/id/B/BR/BRADFITZ/Gearman-Server-1.09.tar.gz
http://search.cpan.org/CPAN/authors/id/T/TI/TIMB/DBI-1607.tar.gz
http://search.cpan.org/CPAN/authors/id/C/CA/CAPTTOFU/DBD-mysql-4.008.tar.gz
http://search.cpan.org/CPAN/authors/id/B/BR/BRADFITZ/MogileFS-Client-1.08.tar.gz
http://search.cpan.org/CPAN/authors/id/D/DO/DORMANDO/mogilefs-server-2.20.tar.gz
http://search.cpan.org/CPAN/authors/id/P/PM/PMQS/IO-Compress-Base-2.015.tar.gz
http://search.cpan.org/CPAN/authors/id/P/PM/PMQS/Compress-Raw-Zlib-2.015.tar.gz
http://search.cpan.org/CPAN/authors/id/P/PM/PMQS/IO-Compress-Zlib-2.015.tar.gz
http://search.cpan.org/CPAN/authors/id/P/PM/PMQS/Compress-Zlib-2.015.tar.gz
http://search.cpan.org/CPAN/authors/id/D/DS/DSKOLL/IO-stringy-2.110.tar.gz
http://search.cpan.org/CPAN/authors/id/P/PM/PMQS/Compress-Raw-Zlib-2.015.tar.gz

包安装次序:(务必按照本次序进行)
BSD-Resource-1.2901.tar.gz
Sys-Syscall-0.22.tar.gz

Time-HiRes-1.9715.tar.gz
Danga-Socket-1.57.tar.gz

Net-Netmask-1.9015.tar.gz
IO-AIO-3.07tar.gz (本包要求Perl v5.8.8以上)
Perlbal-1.71.tar.gz

String-CRC32-1.4.tar.gz
Gearman-1.07.tar.gz
Gearman-Client-Async-0.93.tar.gz
Gearman-Server-1.08.tar.gz

#make test 有可能会有一个错误,不用管它
DBI-1.607.tar.gz
DBD-mysql-4.008.tar.gz
#以下命令假设MySQL服务器是在本机
perl Makefile.PL  –testhost=localhost –testuser=root –mysql_config=/usr/local/mysql/bin/mysql_config

IO-Compress-Base-2.015.tar.gz
IO-Compress-Zlib-2.015.tar.gz
Compress-Raw-Zlib-2.015.tar.gz
Compress-Zlib-2.015.tar.gz
IO-stringy-2.110.tar.gz

MogileFS-Client-1.08.tar.gz
mogilefs-server-2.20.tar.gz
MogileFS-Utils-2.13.tar.gz
一定要按以上顺序安装,解压缩,生成Makefile,测试,安装 这样的步骤来执行,命令是:
# tar zxvf xxxxx.tar.gz
# cd xxxxx
# perl Makefile.PL
# make
# make test
# make install
这样就安装成功了,注意make test的错误提示,如果不是很严重的错误提示,基本可以忽略继续下一步。

三、【配置MogileFS】
以下操作除非明确指定,不然是以root用户来运行,当然,你也可以使用自己的帐户来执行(除了一些特权操作),另外 10.15.6.28 是本机IP,本试验只使用了一台机器。如果配置过程不太顺利,请反复检查后反复试验。

1. 创建数据库(初始化)
可以预先在数据库服务器上建立好一个叫做 mogilefs 的数据库,便于进行下面的步骤.
#mogdbsetup --dbhost=10.15.6.28 --dbname=mogilefs --dbuser=root
--dbhost 是数据库主机地址, --dbname是数据库名,--dbuser是访问该数据库的用户,如果有密码请加上--dbpass选项,最好访问数据库的是超级用户root或者具有很高权限的新建数据库用户,因为MogileFS需要一些比较高权限的初始化操作。

2. tracker配置
新建tracker配置文件 /etc/mogilefsd.conf ,写入以下文件内容:(请去掉#后面的注意信息)
db_dsn DBI:mysql:mogilefs #数据库配置
db_user mogile #数据库用户
db_pass 123123 #数据库密码
conf_port 6001 #tracker端口
listener_jobs 5

db_dsn指向的是你数据库的位置,如果你数据库不在同一个机器上,请改为:
db_dsn DBI:mysql:mogilefs:127.0.0.1

由于mogilefsd不能用root用户启动.所以添加mogile用户
# adduser mogile
在配置下面以前先启动 trackers server
# su mogile
# mogilefsd -c /etc/mogilefsd.conf --daemon
3. Storage Server 配置
说明:以下命令假设你的 Perl 的包文件都在 /usr/lib/perl5/5.8.8 目录,如果不是,请自行修改。
用mogadm工具将storage server加到数据库中:
# mogadm --lib=/usr/lib/perl5/5.8.8 --trackers=10.15.6.28:6001 host add mogilestorage --ip=10.15.6.28 --port=7500 --status=alive
(由于本文是在一台机器上配,故trackers的地址和ip地址是一样的)
用下面命令来检测是否成功:
# mogadm --lib=/usr/lib/perl5/5.8.8 --trackers=10.15.6.28:6001 host list
加入一个设备到你的storage server:
# mogadm -lib=/usr/lib/perl5/5.8.8 -trackers=10.15.6.28:6001 device add mogilestorage 1
用下面命令来检测是否成功:
# mogadm --lib=/usr/lib/perl5/5.8.8 --trackers=10.15.6.28:6001 device list
Device ID 是唯一的,一旦创建将无法删除,只能mark为dead. 所以,如果你某个磁盘坏了,你mark为dead, 后来又修好了,
那么你必须重新格式化并命名为新的device id, 不支持将device从dead变为alive.

新建Storage配置文件: /etc/mogstored.conf 内容是: (请去掉#后面的注意信息)
httplisten=0.0.0.0:7500 #HTTP监听端口
mgmtlisten=0.0.0.0:7501 #MongileFS监听端口
docroot=/opt/mogdata #数据存储物理路径

建立存放数据的路径:(必须使用root权限才能创建)
# mkdir -p /opt/mogdata/dev1
说明:mogadm 参数的用法请参考 http://search.cpan.org/~dormando/MogileFS-Utils/mogadm
4. 运行MogileFS
启动 Storage Server
# mogstored -c /etc/mogstored.conf --daemon
如果没有启动Trackers,请启动 Trackers
# su mogile
$ mogilefsd -c /etc/mogilefsd.conf --daemon
查看你所有的服务都起来没有
# ps -ef | grep mogilefsd
# ps -ef | grep mogstored

四、【MogileFS使用测试】
生成domain
# mogadm --lib=/usr/lib/perl5/5.8.8 --trackers=10.15.6.28:6001 domain add testdomain

加一个 class 到domain
# mogadm --lib=/usr/lib/perl5/5.8.8 --trackers=10.15.6.28:6001 class add testdomain testclass

写一个perl文件试一下test.pl
   1. #=======================================
   2. use MogileFS::Client;
   3. my $mogfs = MogileFS::Client->new(domain=>'testdomain', hosts=>['10.0.22.184:6001'], root=>'/home/xiehl/mogdata',);
   4. my $fh = $mogfs->new_file("file_key", "testclass");
   5. die $fh unless $fh->print($mogfs->readonly);
   6. my $content = "file.txt";
   7. @num = $mogfs->store_content("file_key","testclass",$content);
   8. print "@num \n";
   9. my $file_contents = $mogfs->get_file_data("file_key");
  10. print "$file_contents \n";
  11. #$mogfs->delete("file_key");
  12. $fh->print($file_contents);
  13. @urls = $mogfs->get_paths("file_key");
  14. print "@urls \n";
  15. #=======================================
执行脚本
# perl test.pl
本文返回的内容是:(可能你返回的内容会不同,格式类似就行)
8
SCALAR(0×9ddaaa8)
http://10.15.6.28:7500/dev1/0/000/000/0000000008.fid
在浏览器里输入:http://10.15.6.28:7500/dev1/0/000/000/0000000008.fid,将会看到输出:
file.txt
能够访问我们存储的数据,配置成功!

五、【附加内容】
[ MySQL检测代码 ]
如果需要检测你的DBI和MySQL Client是否安装正常,可以使用一下数据库测试代码来检测能否正常连接到MySQL:
   1. #=======================================
   2. #!/usr/bin/perl
   3. # DBI is perl module used to connect to the database
   4. use DBI;
   5.
   6. # hostname or ip of server (for local testing, localhost should work)
   7. $config{’dbServer’} = "localhost";
   8. $config{’dbUser’} = "root";
   9. $config{’dbPass’} = "";
  10. $config{’dbName’} = "test";
  11. $config{’dataSource’} = "DBI:mysql:$config{’dbName’}:$config{’dbServer’}";
  12.
  13. # Connect to MySQL
  14. my $dbh = DBI->connect($config{’dataSource’},$config{’dbUser’},$config{’dbPass’}) or
  15. die "Can’t connect to $config{’dataSource’}<br>$DBI::errstr";
  16.  print "Connected successfully<br>";
  17. $dbh->disconnect();
  18. #=======================================
  19.  
[ 相关参考 ]
mogilefs 最新版本安装: http://www.wuei.net/?p=33
Mogilefs学习: http://blog.chifeng.name/?p=220
mogileFS的工作方式: http://www.sunnyu.com/?p=32
mogileFS分布式文件存储解决方案: http://www.sunnyu.com/?p=10

[ 扩展阅读 ]
编译mogileFS的php模块: http://www.sunnyu.com/?p=78
mogileFS体系结构分析: http://www.sunnyu.com/?p=31
mogileFS体系结构分析: http://www.sunnyu.com/?p=30

运维网声明 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-111572-1-1.html 上篇帖子: MogileFS 的介绍 下篇帖子: 分布式文件系统 MogileFS 安装手册
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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