分布式存储系统 MogileFS和FastDFS

来源:互联网 发布:集装箱装柜软件 编辑:程序博客网 时间:2024/06/06 00:49

MogilesFS介绍

1、MogilesFS简介:
      MogileFS是一个开源的分布式文件系统,用于组建分布式文件集群,由LiveJournal旗下DangaInteractive公司开发,Danga团队开发了包括 Memcached、MogileFS、Perlbal等不错的开源项目:(注:Perlbal是一个强大的Perl写的反向代理服务器)。MogileFS是一个开源的分布式文件系统。
目前使用 MogileFS 的公司非常多,比如国外的一些公司,日本前几名的公司基本都在使用这个,国内所知道的使用 MogileFS 的公司有图片托管网站 yupoo又拍,digg, 土豆, 豆瓣,1 号店, 大众点评,搜狗,安居客等等网站.基本很多网站容量,图片都超过 30T 以上。
2、MogileFS特性:

  • 1 )支持多节点冗余
  • 2)可实现自动的文件复制
  • 3)使用名称空间(命名空间),每个文件通过key来确定,比如123.jpg是一个key,真正存储的位置可能是/000/000/00/01/md5hash.fid
  • 4)不需要RAID,应用层可直接实现RAID,不共享任何东西,通过”集群接口”提供服务
  • 5)工作于应用层,没有特殊的组件要求
  • 6)不用共享任何数据,MogileFS不需要依靠昂贵的SAN来共享磁盘,每个机器只用维护好自己的磁盘

3、MogileFS的架构
MogileFS主要由三部分构成:tracker节点、database节点、storage节点
1)Tracker–跟踪器,调度器
      MogileFS的核心,是一个调度器,mogilefsd进程就是trackers进程程序,trackers的主要职责有:删除数据、复制数据、监控、查询等等,这个是基于事件的( event-based ) 父进程/消息总线来管理所有来自于客户端应用的交互(requesting operations to be performed), 包括将请求负载平衡到多个”query workers”中,然后让 mogilefs的子进程去处理,mogadm,mogtool的所有操作都要跟trackers打交道,Client的一些操作也需要定义好trackers,因此最好同时运行多个trackers来做负载均衡,trackers也可以只运行在一台机器上,使用负载均衡时可以使用一些简单的负载均衡解决方案,如haproxy,lvs,nginx等,tarcker的配置文件为/etc/mogilefs/mogilefsd.conf监听在TCP的7001端口
2)Database–数据库部分
      主要用来存储mogilefs的元数据(命名空间和文件在哪里等),是trackers来操作和管理它,可以用mogdbsetup程序来初始化数据库,所有的元数据都存储在数据库中,因此,这个数据相当重要,如果数据库挂掉,所有的数据都不能用于访问,因此,建议应该对数据库做高可用
3)storage–存储节点
      这个是MogileFS存储数据的真正节点,也是mogstored节点,也叫storage server,一台存储节点要启动一个mogstored服务,扩容就是增加这些主机节点实际存放数据的地方
配置文件为/etc/mogilefs/mogstored.conf,监听在TCP的7500端口

3、MogileFS的工作原理
这里写图片描述
      客户端的请求先发给tracker节点,然后tracker节点到database节点去查询数据存储在什么位置,然后将结果反馈给客户端,客户端再根据tracker节点提供的路径去访问相应的storage节点去找到数据。tracker节点除了帮助客户端到数据库中去检索你要查找的数据,还管理storage节点,如果storage节点有损坏的,会控制storage节点进行数据自动迁移到其他节点,同时数据备份的时候也是由trackers节点来控制复制几个副本的。
4、MogileFS管理的几个概念
1、Domain:一个mogilefs可以有多个domain,用来存放不同文件(大小、类型),同一个domain内key必须唯一,不同domain内key可以是相同的
2、每个存储节点称为一个host主机,一个主机上可以有多个存储设备dev(单独的硬盘),每个设备都有一个ID号,Domain+Fid来定位文件
3、Class:文件属性管理,复制文件的最小单位不是文件,而是class,定位文件存储在不同设备上的份数,也就是定义副本的数量

MogileFS安装和使用示例
准备三个主机,node1为tracker节点、database节点、storage节点,node2和node3为storage节点
1、在三个节点安装如下软件包

yum install perl-Net-Netmask perl-IO-String perl-Sys-Syslog perl-IO-AIO #先用yum安装安装环境需要的包
[root@node1 app]#ls #将如下安装包下载到本地,再用yum本地安装如下包

MogileFS-Server-2.46-2.el7.centos.noarch.rpm #核心服务
MogileFS-Server-mogilefsd-2.46-2.el7.centos.noarch.rpm #tracker节点
MogileFS-Server-mogstored-2.46-2.el7.centos.noarch.rpm #storage节点
MogileFS-Utils-2.19-1.el7.centos.noarch.rpm #mogilefs的一些管理工具,如mogadm
perl-Danga-Socket-1.61-1.el6.rf.noarch.rpm #依赖包
perl-MogileFS-Client-1.14-1.el7.centos.noarch.rpm
perl-Perlbal-1.78-1.el6.noarch.rpm

[root@node1 app]#yum localinstall ./*  -y #在三个节点上都要安装

2、在node1上操作

[root@node1 app]#yum install mariadb-server[root@node1 app]#systemctl start mariadb[root@node1 app]#ss -nlt[root@node1 app]#mogdbsetup --help #初始化数据库的命令[root@node1 app]#mogdbsetup --dbuser mogile --dbpass 123

#进行初始化数据库,会创建了一个mogilefs的数据库,同时里面有很多表,授权了一个mogile用户在任何主机都可以连接到此数据库

[root@node1 app]#vim /etc/mogilefs/mogilefsd.conf  #修改tracker的配置文件db_dsn = DBI:mysql:mogilefs:host=127.0.0.1 #指明数据库的主机db_user = mogile #授权的用户db_pass = 123 #授权的密码listen = 0.0.0.0:7001[root@node1 app]#service mogilefsd start #启动tracker服务[root@node1 app]#ss -nlt #发现监听在tcp/7001端口

3、在三个节点上对storage节点进行配置

[root@node1 app]#vim /etc/mogilefs/mogstored.conf #配置storage节点maxconns = 10000 #最大并发连接httplisten = 0.0.0.0:7500 #监听的端口mgmtlisten = 0.0.0.0:7501 #管理命令监听的端口docroot = /app/data/  #指明数据存放的目录,一般这个目录要使用单独的磁盘进行挂载,本实验就使用目录代替了,没有单独挂载磁盘[root@node1 app]#mkdir /app/data[root@node1 app]#chown mogilefs:mogilefs /app/data -R[root@node1 app]#service mogstored start #启动storage服务Starting mogstored (via systemctl):                        [  OK  ][root@node1 app]#ss -nlt #发现监听的是7500端口

4、在node1上的操作
添加主机到trackers中,这样storage节点才能被tracker节点所管理,并将主机信息注册到数据库中

[root@node1 app]#mogadm check #查看状态[root@node1 app]#mogadm host add node1 --ip=172.18.21.107 --port=7500 --status=alive #添加storage节点的主机到tracker中[root@node1 app]#mogadm host add node2 --ip=172.18.21.7 --port=7500 --status=alive[root@node1 app]#mogadm host add node3 --ip=172.18.21.100 --port=7500 --status=alive[root@node1 app]#mogadm check #此时再查看发现三个节点都被添加进来了[root@node1 app]#mogadm host list #可以查看添加的主机

5、在node1、node2、node3上的设置

[root@node1 data]#mkdir /app/data/dev1 #在三个主机上创建三个目录dev1、dev2、dev3做为存储设备,1、2、3为设备的ID号,必须唯一[root@node1 data]#chown -R mogilefs:mogilefs /app/data/dev1/ #修改权限,注意三个节点都要操作

6、在node1节点的操作,添加存储设备到集群中

[root@node1 data]#mogadm device add node1 1[root@node1 data]#mogadm device add node2 2[root@node1 data]#mogadm device add node3 3[root@node1 data]#mogadm device listnode1 [1]: alive                    used(G)    free(G)   total(G)  weight(%)   dev1:   alive      0.031     49.944     49.976        100node2 [2]: alive                    used(G)    free(G)   total(G)  weight(%)   dev2:   alive      0.528     49.447     49.976        100node3 [3]: alive                    used(G)    free(G)   total(G)  weight(%)   dev3:   alive      0.000      0.000      0.000        100[root@node1 data]#mogadm checkChecking trackers...  127.0.0.1:7001 ... OKChecking hosts...  [ 1] node1 ... OK  [ 2] node2 ... OK  [ 3] node3 ... OKChecking devices...  host device         size(G)    used(G)    free(G)   use%   ob state   I/O%  ---- ------------ ---------- ---------- ---------- ------ ---------- -----  [ 1] dev1            49.976      0.032     49.943   0.06%  writeable   0.0  [ 2] dev2            49.976      0.529     49.446   1.06%  writeable   N/A  [ 3] dev3            49.976      0.063     49.912   0.13%  writeable   0.0  ---- ------------ ---------- ---------- ---------- ------             total:   149.927      0.625    149.302   0.42%[root@node1 data]#cd dev1/[root@node1 dev1]#ls #发现目录中已经有东西了test-write  usage[root@node1 dev1]#cd test-write/ #此目录是tracker节点测试storage节点是否是好的,会定期往目录里面写一些东西来判断个节点是不是可用的[root@node1 test-write]#ls test-write-21  test-write-35  test-write-44  test-write-49  test-write-55  test-write-7   test-write-8   test-write-87  test-write-93test-write-23  test-write-40  test-write-47  test-write-53  test-write-64  test-write-76  test-write-84  test-write-9[root@node1 test-write]#mogadm device mark node1 1 readonly #将某个设备标记为只读状态有这几种状态(alive,dead,down,drain,readonly)

7 、如何添创建域和类在node1上的操作

[root@node1 test-write]#mogadm domain add m25 #添加一个域m25[root@node1 test-write]#mogadm domain list #我们发现只要创建一个域,就会生成一个默认的class,并且副本数量为2个 domain               class                mindevcount   replpolicy   hashtype-------------------- -------------------- ------------- ------------ ------- m25                  default                   2        MultipleHosts() NONE   [root@node1 test-write]#mogadm class --help[root@node1 test-write]#mogadm class add m25 img --mindevcount=3 #在m25域中添加一个类为在img,并指定最小的副本数量为3个[root@node1 test-write]#mogadm class add m25 doc --mindevcount=2[root@node1 test-write]#mogadm domain list #可以发现已经创建两个类了,现在就可以向这两个类中上传数据了 domain               class                mindevcount   replpolicy   hashtype-------------------- -------------------- ------------- ------------ ------- m25                  default                   2        MultipleHosts() NONE    m25                  doc                       2        MultipleHosts() NONE    m25                  img                       3        MultipleHosts() NONE   

如何上传和查询数据,在node1节点的操作

[root@node1 ~]#mogupload --help #上传[root@node1 app]#find /usr/share/ -iname *.jpg -exec cp {} ./ \; #拷贝一些图片文件到当前目录[root@node1 app]#mogupload --tracker=172.18.21.107:7001 --domain=m25 --class=img --key=night --file=night.jpg #注意这里要指定tracker,不然传不上去,要设置一个key,根据这个key才能进行查找[root@node2 0]#cd /app/data/dev2/[root@node2 dev2]#tree 0/ #在节点2上查看,发现已经存到设备目录下,注意格式是这种格式的0/└── 000    └── 000        └── 0000000002.fid[root@node1 app]#md5sum night.jpga1cb1ab93a2d2b81e7943fbc0283f83f  night.jpg[root@node2 dev2]#md5sum 0/000/000/0000000002.fid #哈希运算的结果是一样的,说明是同一个文件a1cb1ab93a2d2b81e7943fbc0283f83f  0/000/000/0000000002.fid

如何查询,在node1上的操作

[root@node1 app]#mogfileinfo --tracker=172.18.21.107:7001 --domain=m25 --key=night #在一个域内key必须是唯一的- file: night     class:                  img  devcount:                    1    domain:                  m25       fid:                    2       key:                night    length:               569714 - http://172.18.21.7:7500/dev2/0/000/000/0000000002.fid #告诉我们如何可以查到这个数据可以输入这个网址下载下来就可以看到刚才上传的图片了[root@node1 app]#moglistkeys --tracker=172.18.21.107:7001 --domain=m25 #查看这个域内的所有keynight[root@node1 app]#vim /etc/mogilefs/mogilefs.conf  #可以创建一个配置文件指明trackers是谁就不用每次输入命令的时候指定了trackers=172.18.21.107:7001[root@node1 app]#moglistkeys --domain=m25night                        [root@node1 app]#mogdelete --domain=m25 --key=night #删除指定的文件[root@node1 app]#mogupload --domain=m25 --class=img --key=puppy --file=puppy.jpg[root@node1 app]#mogfileinfo --domain=m25 --key=puppy- file: puppy     class:                  img  devcount:                    1    domain:                  m25       fid:                    3       key:                puppy    length:                 3461 - http://172.18.21.100:7500/dev3/0/000/000/0000000003.fid用于查询指定时间段内上传的文件时很有用. 比如我们在 8 点上传了一个文件, 是 100 的 id, 我们可以查询到从这个之后的所有的 id 的文件 用这个命令 moglistfids --fromfid=<file_id> --count=<数量>MariaDB [mogilefs]> select * from file; #进入数据库中也可以查看一些信息+-----+------+-------+--------+---------+----------+| fid | dmid | dkey  | length | classid | devcount |+-----+------+-------+--------+---------+----------+|   3 |    1 | puppy |   3461 |       1 |        1 ||   4 |    1 | sky   |   2964 |       2 |        1 |+-----+------+-------+--------+---------+----------+MariaDB [mogilefs]> select * from domain;+------+-----------+| dmid | namespace |+------+-----------+|    1 | m25       |+------+-----------+MariaDB [mogilefs]> select * from class;+------+---------+-----------+-------------+----------+------------+| dmid | classid | classname | mindevcount | hashtype | replpolicy |+------+---------+-----------+-------------+----------+------------+|    1 |       1 | img       |           3 |     NULL | NULL       ||    1 |       2 | doc       |           2 |     NULL | NULL       |+------+---------+-----------+-------------+----------+------------+[root@node1 app]#mogadm host mark node1 down #也可以将主机设置为down状态[root@node1 app]#mogadm host list node1 [1]: down  IP:       172.18.21.107:7500node2 [2]: alive  IP:       172.18.21.7:7500node3 [3]: alive  IP:       172.18.21.100:7500[root@node1 app]#mogadm host mark node1 alive[root@node1 app]#mogupload --domain=m25 --class=doc --key=sky --file=sky.jpg[root@node1 app]#mogfileinfo --domain=m25 --key=sky- file: sky     class:                  doc  devcount:                    1    domain:                  m25       fid:                    4       key:                  sky    length:                 2964 - http://172.18.21.100:7500/dev3/0/000/000/0000000004.fid

MogileFS的只读模式和耗尽(Drain) 模式
如果你想要冻结设备上所有的文件,你要使用只读模式就行了。这将停掉 MogileFS 存放新文件到这个设备上,但它也将阻止删除文件,代替的删除的操作是会给这些内容放到队列中等待为您标记为’alive’着或’drain’。

 mogadm device mark node1 1 readonly mogadm device mark node2 2 drain

FastDFS

一 、FastDFS的特性

  • 1、分组存储,灵活简洁、对等结构,不存在单点
  • 2、 文件ID由FastDFS生成,作为文件访问凭证。FastDFS不需要传统的name server
  • 3、和流行的web server无缝衔接,FastDFS已提供apache和nginx扩展模块
  • 4、大、中、小文件均可以很好支持,支持海量小文件存储
  • 5、 支持多块磁盘,支持单盘数据恢复
  • 6、 支持相同文件内容只保存一份,节省存储空间
  • 7、 存储服务器上可以保存文件附加属性
  • 8、 下载文件支持多线程方式,支持断点续传

这里写图片描述
这里写图片描述

FastDFS架构:
这里写图片描述
FastDFS架构解读:
1、只有两个角色,tracker server和storage server,不需要存储文件索引信息
2、所有服务器都是对等的,不存在Master-Slave关系
3、存储服务器采用分组方式,同组内存储服务器上的文件完全相同(RAID 1)
4、不同组的storage server之间不会相互通信
5、由storage server主动向tracker server报告状态信息,tracker server之间通常不会相互通信
FastDFS上传和下载流程
上传流程:
1、client询问tracker上传到的storage;
2、tracker返回一台可用的storage;
3、client直接和storage通信完成文件上传,storage返回文件ID。
下载流程:
4、client询问tracker下载文件的storage,参数为文件ID(组名和文件名);
5、tracker返回一台可用的storage;
6、client直接和storage通信完成文件下载。

FastDFS同步机制
      采用binlog文件记录更新操作,根据binlog进行文件同步
同一组内的storage server之间是对等的,文件上传、删除等操作可以在任意一台storage server上进行;
文件同步只在同组内的storage server之间进行,采用push方式,即源服务器同步给目标服务器;
源头数据才需要同步,备份数据不需要再次同步,否则就构成环路了;
上述第二条规则有个例外,就是新增加一台storage server时,由已有的一台storage server将已有的所有数据(包括源头数据和备份数据)同步给该新增服务器。
这里写图片描述

FastDFS核心组件
Tracker:调度器,负责维持集群的信息,例如各group及其内部的
storage node,这些信息也是storage node报告所生成;每个storage
node会周期性向tracker发心跳信息;
storage server:以group为单位进行组织,任何一个storage server
都应该属于某个group,一个group应该包含多个storage server;在
同一个group内部,各storage server的数据互相冗余;

FastDFS运行机制
如何在组中挑选storage server:
1、rr;
2、以ip为次序,找第一个,即IP地址较小者;
3、以优先级为序,找第一个;
如何选择磁盘(存储路径):
1、rr;
2、剩余可用空间大者优先;
生成FID:
由源头storage server ip、创建时的时间戳、大小、文件的校验码和一个随机数进行hash计算后生成;最后基于base64进行文本编码,转换为可打印字符;
groupID/MID/H1ID/H2ID/file_name
groupID:组编号
MID:存储路径(存储设备)编号
H1ID/H2ID:目录分层
file_name:文件名,不同于用户上传时使用文件名,而是由服务器生成hash文件名;
服务器IP、文件创建时的时间戳、文件大小、文件名和扩展名;
文件同步:
每个storage server在文件存储完成后,会将其信息存于binlog, binlog不包含数据,仅包含文件名等元数据信息,相当于mogilefs的mysql一样只存储元数据信息;binlog可用于同步;

安装使用FastDFS
1、需要安装的软件包如下

[root@node1 app]#ls 

fastdfs-5.0.11-1.el7.centos.x86_64.rpm #主程序
fastdfs-debuginfo-5.0.11-1.el7.centos.x86_64.rpm #debug先关的包
fastdfs-server-5.0.11-1.el7.centos.x86_64.rpm #提供tracker和storage节点的服务
fastdfs-tool-5.0.11-1.el7.centos.x86_64.rpm #工具包
libfastcommon-1.0.36-1.el7.centos.x86_64.rpm #下面四个是依赖的包
libfastcommon-devel-1.0.36-1.el7.centos.x86_64.rpm
libfdfsclient-5.0.11-1.el7.centos.x86_64.rpm
libfdfsclient-devel-5.0.11-1.el7.centos.x86_64.rpm
nginx-1.10.2-1.el7.centos.x86_64.rpm #使用nginx做为web界面需要用到的包
nginx-all-modules-1.10.2-1.el7.centos.noarch.rpm
nginx-filesystem-1.10.2-1.el7.centos.noarch.rpm
nginx-mod-http-geoip-1.10.2-1.el7.centos.x86_64.rpm
nginx-mod-http-image-filter-1.10.2-1.el7.centos.x86_64.rpm
nginx-mod-http-perl-1.10.2-1.el7.centos.x86_64.rpm
nginx-mod-http-xslt-filter-1.10.2-1.el7.centos.x86_64.rpm
nginx-mod-mail-1.10.2-1.el7.centos.x86_64.rpm
nginx-mod-stream-1.10.2-1.el7.centos.x86_64.rpm

[root@node1 app]#yum  localinstall ./* #安装软件包本次实验node1节点提供tracker和storage服务,node2和node3只提供storage服务[root@node1 app]#cd /etc/fdfs/ [root@node1 fdfs]#ls #发现有很多示例anti-steal.jpg  client.conf.sample  http.conf  mime.types  storage.conf.sample  storage_ids.conf.sample  tracker.conf.sample

2、在node1节点上配置tracker节点

[root@node1 fdfs]#cp tracker.conf.sample tracker.conf.sample.bak[root@node1 fdfs]#mv tracker.conf.sample tracker.conf[root@node1 fdfs]#vim tracker.confbase_path=/app/fastdfs/tracker #设置tracker的存储路径store_group=magedu #设置一个存储组[root@node1 fdfs]#mkdir -pv /app/fastdfs/tracker #在node1节点上创建tracker的数据目录[root@node1 fdfs]#mkdir /app/fastdfs/storage #创建storage的存储目录在node2和node3节点上只创建storage的存储目录[root@node2 app]#mkdir /app/fastdfs/storage -pv[root@node3 app]#mkdir /app/fastdfs/storage -pv

3、在三个节点上对storage进行配置

[root@node1 fdfs]#cp storage.conf.sample storage.conf.sample.bak[root@node1 fdfs]#mv storage.conf.sample storage.conf[root@node1 fdfs]#vim storage.confgroup_name=magedubase_path=/app/fastdfs/storage #storage的基础路径,用于存储日志等store_path0=/app/fastdfs/storage #storage的存储路径,这个必须设置,可以和上面的在同一个目录下 tracker_server=172.18.21.107:22122 #指明tracker主机[root@node1 fdfs]#service fdfs_trackerd start  #在node1节点上启动tracker和storage服务Starting fdfs_trackerd (via systemctl):                    [  OK  ][root@node1 fdfs]#service fdfs_storaged start Starting fdfs_storaged (via systemctl):                    [  OK  ][root@node1 fdfs]#ss  -nltp #发现tracker监听的端口是22122,storage监听的端口是23000[root@node2 fdfs]#service fdfs_storaged start #在node2和node3节点上启动storage服务Starting fdfs_storaged (via systemctl):                    [  OK  ][root@node2 fdfs]#service fdfs_storaged start[root@node2 fdfs]#ss -nlt #发现23000端口已经打开

4、配置客户端的配置文件,在node1节点设置

[root@node1 ~]#cd /etc/fdfs/[root@node1 fdfs]#lsanti-steal.jpg      http.conf   storage.conf             storage_ids.conf.sample  tracker.conf.sample.bakclient.conf.sample  mime.types  storage.conf.sample.bak  tracker.conf[root@node1 fdfs]#cp client.conf.sample client.conf.bak[root@node1 fdfs]#mv client.conf.bak client.conf[root@node1 fdfs]#vim client.confbase_path=/app/fastdfs/trackertracker_server=172.18.21.107:22122[root@node1 fdfs]#fdfs_monitor /etc/fdfs/client.conf #可以查看存储节点的状态信息

5、文件的上传和查看操作

[root@node1 fdfs]#lsanti-steal.jpg  client.conf.sample  mime.types    storage.conf.sample.bak  tracker.confclient.conf     http.conf           storage.conf  storage_ids.conf.sample  tracker.conf.sample.bak[root@node1 fdfs]#fdfs_upload_file /etc/fdfs/client.conf anti-steal.jpg magedu/M00/00/00/rBIVZFoykVmAQZm7AABdrZgsqUU790.jpg#注意上传时要指明客户端的配置文件[root@node2 00]#cd /app/fastdfs/storage/data/00/00/ #每个节点的此目录下都有这个文件,说明同步成功[root@node2 00]#lsrBIVZFoykVmAQZm7AABdrZgsqUU790.jpg[root@node1 data]#fdfs_file_info /etc/fdfs/client.conf magedu/M00/00/00/rBIVZFoykVmAQZm7AABdrZgsqUU790.jpg #查看文件source storage id: 0source ip address: 172.18.21.100 #说明刚开始时是传到node3节点的,然后node3节点去push这个文件到其他的节点file create timestamp: 2017-12-14 22:57:29file size: 23981file crc32: 2553063749 (0x982CA945)[root@node1 data]#fdfs_test /etc/fdfs/client.conf upload /root/anaconda-ks.cfg  #上传测试[root@node1 data]#fdfs_upload_file /etc/fdfs/client.conf  /root/anaconda-ks.cfg #上传文件magedu/M00/00/00/rBIVB1oylFSADeGrAAAHXGXWizs514.cfg[root@node1 data]#fdfs_download_file /etc/fdfs/client.conf magedu/M00/00/00/rBIVB1oylFSADeGrAAAHXGXWizs514

FastDFS实现nginx代理
1、在node1节点安装nginx的相关包,注意要安装nginx-1.10版本,不
然可能没有ngx_fastdfs_module模块,如果之前已经安装nginx及相应
的依赖包,最好先卸载了
[root@node1 app]#cd /app
[root@node1 app]#ls #将nginx-1.10.2版本的nginx及相应的依赖包下载到本地

nginx-1.10.2-1.el7.centos.x86_64.rpm #注意版本要统一都是1.10.2的版本
nginx-all-modules-1.10.2-1.el7.centos.noarch.rpm #下面这些都是nginx的依赖包
nginx-filesystem-1.10.2-1.el7.centos.noarch.rpm
nginx-mod-http-geoip-1.10.2-1.el7.centos.x86_64.rpm
nginx-mod-http-image-filter-1.10.2-1.el7.centos.x86_64.rpm
nginx-mod-http-perl-1.10.2-1.el7.centos.x86_64.rpm
nginx-mod-http-xslt-filter-1.10.2-1.el7.centos.x86_64.rpm
nginx-mod-mail-1.10.2-1.el7.centos.x86_64.rpm
nginx-mod-stream-1.10.2-1.el7.centos.x86_64.rpm
[root@node1 app]#yum install ./nginx*

2、修改nginx的配置文件

[root@node1 app]#vim /etc/nginx/nginx.conf  location /magedu/M00 { #表示匹配以 /magdu/M00开头的uri          root /app/fastdfs/storage; #指明数据存储的目录            ngx_fastdfs_module;         }[root@node1 fdfs]#nginxngx_http_fastdfs_set pid=14594[root@node1 fdfs]#ss -nlt

3、修改fastdfs_module配置文件的设置

[root@node1 fdfs]#vim /etc/fdfs/mod_fastdfs.conf url_have_group_name = true #是否允许访问的url中包含组名store_path0=/app/fastdfs/storage #指明storage节点存储数据的目录tracker_server=172.18.21.107:22122 #指明tracker节点group_name=magedu #指明组名

4、测试

[root@node1 fdfs]#fdfs_upload_file /etc/fdfs/client.conf /app/sunset.jpg #上传一个文件magedu/M00/00/00/rBIVa1ozvNWAJLHkAAAKwLGLsZc035.jpg访问如下网站就可以看到存储的图片http://172.18.21.107/magedu/M00/00/00/rBIVa1ozvNWAJLHkAAAKwLGLsZc035.jpg
原创粉丝点击