[环境] 搭建 FastDFS 最小文件系统(一台机)

本贴最后更新于 2180 天前,其中的信息可能已经沧海桑田

文章写好有段时间了,如果有任何问题,欢迎留言,我会更正。
😄


1.什么是 FastDFS

  FastDFS 是用 c 语言编写的一款开源的分布式文件系统。FastDFS 为互联网量身定制,充分考虑了冗余备份、负载均衡、线性扩容等机制,并注重高可用、高性能等指标,使用 FastDFS 很容易搭建一套高性能的文件服务器集群提供文件上传、下载等服务。

2.FastDFS 架构

  FastDFS 架构包括 Tracker server 和 Storage server。客户端请求 Tracker server 进行文件上传、下载,通过 Trackerserver 调度最终由 Storage server 完成文件上传和下载。
  Trackerserver 作用是负载均衡和调度,通过 Trackerserver 在文件上传时可以根据一些策略找到 Storageserver 提供文件上传服务。可以将 tracker 称为追踪服务器或调度服务器。
  Storageserver 作用是文件存储,客户端上传的文件最终存储在 Storage 服务器上,Storage server 没有实现自己的文件系统而是利用操作系统 的文件系统来管理文件。可以将 storage 称为存储服务器。

2.1 Tracker 集群

  FastDFS 集群中的 Tracker server 可以有多台,Tracker server 之间是相互平等关系同时提供服务,Tracker server 不存在单点故障。客户端请求 Tracker server 采用轮询方式,如果请求的 tracker 无法提供服务则换另一个 tracker。

2.2 Storage 集群

  Storage 集群采用了分组存储方式。storage 集群由一个或多个组构成,集群存储总容量为集群中所有组的存储容量之和。一个组由一台或多台存储服务器组成,组内的 Storage server 之间是平等关系,不同组的 Storageserver 之间不会相互通信,同组内的 Storageserver 之间会相互连接进行文件同步,从而保证同组内每个 storage 上的文件完全一致的。一个组的存储容量为该组内存储服务器容量最小的那个,由此可见组内存储服务器的软硬件配置最好是一致的。
  采用分组存储方式的好处是灵活、可控性较强。比如上传文件时,可以由客户端直接指定上传到的组也可以由 tracker 进行调度选择。一个分组的存储服务器访问压力较大时,可以在该组增加存储服务器来扩充服务能力(纵向扩容)。当系统容量不足时,可以增加组来扩充存储容量(横向扩容)。

2.3 Storage 状态收集

  Storage server 会连接集群中所有的 Tracker server,定时向他们报告自己的状态,包括磁盘剩余空间、文件同步状况、文件上传下载次数等统计信息。

3 开始搭建

3.1 FastDFS-tracker 安装

3.1.1 下载

  tracker 和 storage 使用相同的安装包,https://github.com/happyfish100/FastDFS.

  下面用到与 fastdfs 相关的包,都可以在 https://github.com/happyfish100 找到

3.1.2 gcc

  FastDFS 是 C 语言开发,建议在 linux 上运行,本教程使用 Centos6.4 作为安装环境。

  安装 FastDFS 需要编译,编译依赖于 gcc 环境,如果没有 gcc 环境,需要安装 gcc:

  sudo yum install gcc-c++

3.1.3 libevent

  FastDFS 依赖 libevent 库,需要安装:

  sudo yum -y install libevent

3.1.4 libfastcommon

  libfastcommon 是 FastDFS 官方提供的,libfastcommon 包含了 FastDFS 运行所需要的一些基础库。

  将 libfastcommonV1.0.7.tar.gz 解压,执行以下命令

  tar -zxvf libfastcommonV1.0.7.tar.gz

  cd libfastcommon-1.0.7

  ./make.sh

  ./make.sh install /usr/local

注意:如果后面遇到问题,可以试下这里,如果没问题就不需要理会。

libfastcommon.so 安装好后会自动将库文件拷贝至/usr/lib64 下,由于 FastDFS 程序引用 usr/lib 目录所以需要将/usr/lib64 下的库文件拷贝至/usr/lib 下。

3.1.5 tracker 编译安装

  tar -zxvf FastDFS_v5.05.tar.gz

  cd FastDFS

  ./make.sh

  ./make.sh install /usr/local

  安装成功将安装目录下的 conf 下的文件拷贝到/etc/fdfs/下。

  sudo cp conf/* /etc/fdfs/

3.1.6 配置

  安装成功后进入/etc/fdfs 目录:

  vi tracker.conf

  修改其中内容:

  base_path = /home/yuqing/FastDFS  

  改为:

  base_path=/home/FastDFS

  这里需要注意,没有 /home/FastDFS 这个目录需要创建

  sudo mkdir -p /home/FastDFS

3.1.7 启动

  执行以下命令启动

  fdfs_trackered /etc/fdfs/tracker.conf restart

  第一次启动并没有任何提示,可以进入/home/FastDFS/logs 下查看日志

  设置开机自动启动:

  sudo vi /etc/rc.d/rc.local

  添加以下内容:

  fdfs_trackerd /etc/fdfs/tracker.conf restart

3.2 FastDFS-storage 安装

  在同一台机子上继续装 storage,编译方法同 tracker,

3.2.1 配置

  下面讲下配置

  sudo vi /etc/fdfs/storage.conf

  修改以下内容:

  group_name=group1

  base_path=/home/yuqing/FastDFS 改为: base_path=/home/FastDFS

  store_path0=/home/yuqing/FastDFS  改为: store_path0=/home/FastDFS/fdfs_storage    (这里需要注意,如果fdfs_storage没有创建,需要手工创建)

  tracker_server=192.168.36.129:22122  #配置tracker服务器ip

3.2.2 启动

  fdfs_storaged /etc/fdfs/storage.conf restart

  设置开机自动启动

  sudo vi /etc/rc.d/rc.local

  添加以下内容:

  fdfs_storaged /etc/fdfs/storage.conf restart

3.3 上传图片测试

  sudo vi /etc/fdfs/client.conf

  修改以下内容:

  base_path=/home/FastDFS

  tracker_server=192.168.36.129:22122

  修改完后,使用以下命令上传图片

  fdfs_test /etc/fdfs/client.conf upload /home/llq/Pictures/loading.gif

  执行后,会打印出以下内容:

  http://192.168.36.129/group1/M00/00/00/wKgkgVqzrQiAaI71AAAqm9RPKXs429.gif

  使用浏览器访问此 url,能正常显示图片则为搭建成功。

3.4 FastDFS 和 nginx 整合

  由于我们只有一台服务器,所以就在 storage 上安装 nginx。

3.4.1 FastDFS-nginx-module

  下载好包后,执行以下命令:

  unzip fastdfs-nginx-module-master.zip

  cd fastdfs-nginx-module-master/src

  将 FastDFS-nginx-module/src 下的 mod_fastdfs.conf 拷贝至/etc/fdfs/下

  cp mod_fastdfs.conf /etc/fdfs/

  修改 conf 内容:

  vi /etc/fdfs/mod_fastdfs.conf

  修改以下内容:

  base_path=/home/FastDFS

  tracker_server=192.168.36.129:22122

  url_have_group_name = true

  store_path0=/home/FastDFS/fdfs_storage

  将 libfdfsclient.so 拷贝至/usr/lib 下

  cp /usr/lib64/libfdfsclient.so /usr/lib/

  创建 nginx/client 目录

  sudo mkdir -p /var/temp/nginx/client

  重新配置 nginx,添加模块,然后编译

  ./configure --prefix=/usr/local/nginx --add-module=/home/llq/developer/fastdfs-nginx-module-master/src

  make

  make install

  添加 nginx 相应的 conf 文件

  cd /usr/local/nginx/conf

  vi nginx.conf

  添加以下内容:

  include vhost/*.conf;

  进入 vhost,添加配置文件

  cd vhost

  vi nginx-fdfs.conf

    server {  
      listen 80;  
      server_name 192.168.36.129;  
      location /group1/M00/ {  
          ngx_fastdfs_module;  
      }  
    }  

添加好之后,重启 nginx

sudo /usr/local/nginx/sbin/nginx -s reload

出现以下字样则成功:

ngx_http_fastdfs_set pid=13534

  • FastDFS

    FastDFS 是用 C 语言编写的一款开源分布式文件系统。FastDFS 为互联网量身定制,充分考虑了冗余备份、负载均衡、线性扩容等机制,并注重高可用、高性能等指标,使用 FastDFS 很容易搭建一套高性能的文件服务器集群提供文件上传、下载等服务。

    17 引用 • 10 回帖 • 1 关注
  • CentOS

    CentOS(Community Enterprise Operating System)是 Linux 发行版之一,它是来自于 Red Hat Enterprise Linux 依照开放源代码规定释出的源代码所编译而成。由于出自同样的源代码,因此有些要求高度稳定的服务器以 CentOS 替代商业版的 Red Hat Enterprise Linux 使用。两者的不同在于 CentOS 并不包含封闭源代码软件。

    238 引用 • 224 回帖
  • NGINX

    NGINX 是一个高性能的 HTTP 和反向代理服务器,也是一个 IMAP/POP3/SMTP 代理服务器。 NGINX 是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的,第一个公开版本 0.1.0 发布于 2004 年 10 月 4 日。

    311 引用 • 546 回帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...