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

[经验分享] FastDFS、nginx配置手记

[复制链接]

尚未签到

发表于 2015-9-10 09:58:06 | 显示全部楼层 |阅读模式
  第一部分   FastDFS介绍
  
  1.FastDFS是什么
  
      FastDFS是一款类Google FS的开源分布式文件系统,它用纯C语言实现,支持Linux、FreeBSD、AIX等UNIX系统。它只能通过 专有API对文件进行存取访问,不支持POSIX接口方式,不能mount使用。
      准确地讲,Google FS以及FastDFS、mogileFS、 HDFS、TFS等类Google FS都不是系统级的分布式文件系统,而是应用级的分布式文件存储服务。
      FastDFS的作者是余庆,现在淘宝网Java中间件团队从事Java基础平台研发工作。
  以上文字引用自<<程序员>> 文章 <<分布式文件系统FastDFS架构剖析>>http://www.programmer.com.cn/tag/fastdfs-架构/

  2.FastDFS的体系结构
DSC0000.jpg

  3.FastDFS工作过程
  
  1. Client询问Tracker server上传到的Storage server;
  2. Tracker server返回一台可用的Storage server,返回的数据为该Storage server的IP地址和端口;
  3. Client直接和该Storage server建立连接,进行文件上传,Storage server返回新生成的文件ID,文件上传结束。

DSC0001.jpg

  1. Client询问Tracker server可以下载指定文件的Storage server,参数为文件ID(包含组名和文件名);
  2. Tracker server返回一台可用的Storage server;
  3. Client直接和该Storage server建立连接,完成文件下载。
  
DSC0002.jpg

  FastDFS从V1.20开始,支持通过HTTP协议下载文件。
  1.用户浏览器访问Tracker server内置的Web Server,URL中包含文件ID(包含组名和文件名);
  2.Tracker server将这个HTTP请求redirect到一台可用的Storage server的Web Server上(可以是apache或nginx);
  3.用户浏览器直接与Storage server的Web Serverr建立连接,完成文件下载。
DSC0003.jpg

  
  
  第二部分   FastDFS+nginx_module配置手记
  
  1.系统环境
  
  最小化安装的 CentOS 5.6 x86_64
tracker server:   192.168.3.220
storage server:   192.168.3.226
  
  2.环境准备[所有服务器上操作]
  
  为了速度,配置使用sohu的源
  cd /etc/yum.repo.d/
  wget http://mirrors.sohu.com/help/CentOS-Base-sohu.repo
  
  安装EPEL源
  rpm -ihv http://download.fedora.redhat.com/pub/epel/5/x86_64/epel-release-5-4.noarch.rpm
  
  安装开发工具和编译nginx所需的开发包
  yum groupinstall "Development Tools"
  yum install libevent-devel.x86_64 pcre-devel.x86_64  zlib-devel.x86_64
  
  3.在tracker上的操作[安装tracker server]
  [iyunv@tracker]# wget http://fastdfs.googlecode.com/files/FastDFS_v3.05.tar.gz
  [iyunv@tracker]# tar xvzf FastDFS_v3.05.tar.gz
  [iyunv@tracker]# cd FastDFS
  [iyunv@tracker]# vi make.sh
      将如下两行前边的"#"删除
      WITH_HTTPD=1
      WITH_LINUX_SERVICE=1
  [iyunv@tracker]# ./make.sh
  [iyunv@tracker]# ./make.sh install
  [iyunv@tracker]# vi /etc/fdfs/tracker.conf
      修改/etc/fdfs/tracker.conf,主要修改以下两处,如有其他调整,可参考文档自行调整,默认的配置也可以工作。
  
      # the base path to store data and log files
      base_path=/home/tracker     ====> 放置data和log的目录
  
      ##include http.conf   ====>   #include http.conf    这里一定要注意!是 #include,不是include!!!
  
  [iyunv@tracker]# mkdir -p /home/tracker

  启动tracker服务
  [iyunv@tracker]#  /etc/init.d/fdfs_trackerd start

  确认8080,22122端口已经监听
  [iyunv@tracker]# netstat -nl|grep -E '8080|22122'
  tcp        0      0 0.0.0.0:22122               0.0.0.0:*                   LISTEN     
  tcp        0      0 0.0.0.0:8080                0.0.0.0:*                   LISTEN     
  
  4.在storage上的操作
  [iyunv@storage]# wget http://fastdfs.googlecode.com/files/FastDFS_v3.05.tar.gz
  [iyunv@storage]# wget http://fastdfs.googlecode.com/files/fastdfs-nginx-module_v1.10.tar.gz
  [iyunv@storage]# wget http://nginx.org/download/nginx-1.0.11.tar.gz
  [iyunv@storage]# tar xvzf FastDFS_v3.05.tar.gz
  [iyunv@storage]# cd FastDFS
  [iyunv@storage]# ./make.sh
  [iyunv@storage]# ./make.sh install
  
  [iyunv@storage]# tar xvzf nginx-1.0.11.tar.gz
  [iyunv@storage]# tar xvzf fastdfs-nginx-module_v1.10.tar.gz
  [iyunv@storage]# cd nginx-1.0.11
  [iyunv@storage]# ./configure --prefix=/usr/local/nginx --add-module=/root/fastdfs-nginx-module/src
  [iyunv@storage]# make
  [iyunv@storage]# make install
  
  [iyunv@storage]# vi /etc/fdfs/storage.conf
      修改/etc/fdfs/storage.conf,主要修改以下几处,如有其他调整,可参考文档自行调整,默认的配置也可以工作。
  
      # the name of the group this storage server belongs to
      group_name=group1 ====> 此台storage server所属的服务器组名
   
      # the base path to store data and log files
      base_path=/home/storage ====> 放置data和log的目录
   
      # store_path#, based 0, if store_path0 not exists, it's value is base_path
      # the paths must be exist
      store_path0=/home/storage ====> 放置文件的目录
  
      # tracker_server can ocur more than once, and tracker_server format is
      #  "host:port", host can be hostname or ip address
      tracker_server=192.168.3.220:22122 ====> tracker server的ip和端口,此处可以写多个tracker server,每行一个
  
      #HTTP settings
      http.disabled=true    ====> 关闭内置的web server

      # the port of the web server on this storage server
      http.server_port=80    ====> web server的端口改成80
  
  [iyunv@storage]# cp /root/fastdfs-nginx-module/mod_fastdfs.conf /etc/fdfs/
  [iyunv@storage]# vi /etc/fdfs/mod_fastdfs.conf

      # the base path to store log files
      base_path=/home/storage ====> 放置log的目录

      # FastDFS tracker_server can ocur more than once, and tracker_server format is
      #  "host:port", host can be hostname or ip address
      tracker_server=192.168.3.220:22122 ====> tracker server的ip和端口,此处可以写多个tracker server,每行一个
  
      # the group name of storage server
      group_name=group1 ====> 此台storage server所属的服务器组名
  
      # if uri including group name
      # default value is false
      url_have_group_name = true ====> 在URL中包含group名称
  
      # store_path#, based 0, if store_path0 not exists, it's value is base_path
      # the paths must be exist
      store_path0=/home/storage ====> 放置文件的目录

  [iyunv@storage]# mkdir -p /home/storage

  在nginx的server配置段中增加M00的location声明
  [iyunv@storage]# vi /usr/local/nginx/conf/nginx.conf
      location /group1/M00 {
  root /home/storage/data;
  ngx_fastdfs_module;
      }
  
  创建M00目录的软连接
  [iyunv@storage]# ln -s /home/storage/data  /home/storage/data/M00
  
  启动storage服务
  [iyunv@storage]#  /etc/init.d/fdfs_storaged start

  启动nginx
  [iyunv@tracker]#  /usr/local/nginx/sbin/nginx

  确认8080,22122端口已经监听
  [iyunv@storage]# netstat -nl|grep -E '80|23000'
  tcp        0      0 0.0.0.0:23000               0.0.0.0:*                   LISTEN     
  tcp        0      0 0.0.0.0:80                0.0.0.0:*                   LISTEN     
  
  5.在tracker上的操作[作为client测试]
  
  修改/etc/fdfs/client.conf文件,主要修改以下几处,如有其他调整,可参考文档自行调整,默认的配置也可以工作。
      # the base path to store log files
      base_path=/tmp
  
      # tracker_server can ocur more than once, and tracker_server format is
      #  "host:port", host can be hostname or ip address
      tracker_server=192.168.3.220:22122
  
  创建一个用于测试的文件demofile.txt
  [iyunv@tracker]# vi demofile.txt
    内容就一行字:  dddddddddd
  
  使用自带的fdfs_test上传文件测试。
  [iyunv@tracker]# /usr/local/bin/fdfs_test /etc/fdfs/client.conf upload demofile.txt
  This is FastDFS client test program v3.05
  
  Copyright (C) 2008, Happy Fish / YuQing
  
  FastDFS may be copied only under the terms of the GNU General
  Public License V3, which may be found in the FastDFS source kit.
  Please visit the FastDFS Home Page http://www.csource.org/
  for more detail.
  
  [2012-01-20 14:36:04] INFO - base_path=/tmp, connect_timeout=30, network_timeout=60, tracker_server_count=1, anti_steal_token=0, anti_steal_secret_key length=0
  
  tracker_query_storage_store_list_without_group:
  server 1. group_name=group1, ip_addr=192.168.3.226, port=23000
  
  group_name=group1, ip_addr=192.168.3.226, port=23000
  storage_upload_by_filename
  group_name=group1, remote_filename=M00/00/00/wKgD4k8ZC1SNK-NYAAAAC3lx3Rk484.txt
  source ip address: 192.168.3.226
  file timestamp=2012-01-20 14:36:04
  file size=11
  file crc32=2037505305
  file url: http://192.168.3.220:8080/group1/M00/00/00/wKgD4k8ZC1SNK-NYAAAAC3lx3Rk484.txt
  storage_upload_slave_by_filename
  group_name=group1, remote_filename=M00/00/00/wKgD4k8ZC1SNK-NYAAAAC3lx3Rk484_big.txt
  source ip address: 192.168.3.226
  file timestamp=2012-01-20 14:36:04
  file size=11
  file crc32=2037505305
  file url: http://192.168.3.220:8080/group1/M00/00/00/wKgD4k8ZC1SNK-NYAAAAC3lx3Rk484_big.txt
  
  6.使用浏览器打开上传的文件
  
  我们在浏览器中输入http://192.168.3.220:8080/group1/M00/00/00/wKgD4k8ZC1SNK-NYAAAAC3lx3Rk484.txt
DSC0004.jpg

  可以看到,访问的地址已经被redirect到了storage server的IP(192.168.3.226)了。

运维网声明 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-111815-1-1.html 上篇帖子: [zz]FastDFS php 扩展模块安装 下篇帖子: FastDFS安装
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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