FastDFS 是一个开源的高性能分布式文件系统(DFS)。 它的主要功能包括:文件存储,文件同步和文件访问,以及高容量和负载平衡。

FastDFS有两个角色:跟踪服务(tracker)和存储服务(storage),跟踪服务控制,调度文件以负载均衡的方式访问;存储服务包括:文件存储,文件同步,提供文件访问接口,同时以key value的方式管理文件的元数据。

FastDFS 系统有三个角色:跟踪服务器(Tracker Server)、存储服务器(Storage Server)和
客户端(Client)。

Tracker Server: 跟踪服务器,主要做调度工作,起到均衡的作用;负责管理所有的 storage server
和 group,每个 storage 在启动后会连接 Tracker,告知自己所属 group 等信息,并保持周期性心跳。

Storage Server:存储服务器,主要提供容量和备份服务;以 group 为单位,每个 group 内可以有多台 storage server,数据互为备份。

Client:客户端,上传下载数据的服务器,也就是我们自己的项目所部署在的服务器。

 

应用场景:对4k至百MB需要存储  FastDFS最佳  如果上G  上几十G  建议使用GlusterFS镜像文件


操作系统: CentOS 6.6

FastDFS: fastdfs-5.05 、 fastdfs-nginx-module-v1.16 、libfastcommon-v1.0.7

Nginx  : nginx-1.10.1

 

安装:

  1. 安装libfastcommon

  2. 在每一台服务器上,解压libfastcommon,进入libfastcommon-master目录执行

    ./make.sh
    ./make.sh install   
    [root@dell-09 src]# pwd
    /opt/soft/soft/libfastcommon-master/src
    [root@dell-09 src]# install -m 755     libfastcommon.so /usr/lib64/
    mkdir -p /usr/include/fastcommon/
    可以看到libfastcommon.so安装到了/usr/lib64/libfastcommon.so   
    但是FastDFS主程序设置的lib目录是/usr/local/lib
    所以需要创建软链接.
    ln -s /usr/lib64/libfastcommon.so /usr/local/lib/libfastcommon.so
    ln -s /usr/lib64/libfastcommon.so /usr/lib/libfastcommon.so
    ln -s /usr/lib64/libfdfsclient.so /usr/local/lib/libfdfsclient.so
    ln -s /usr/lib64/libfdfsclient.so /usr/lib/libfdfsclient.so
       
    2.安装FastDFS主程序
    这个版本似乎已经不需要libevent依赖
    在每台服务器,解压缩FastDFS_v5.05.tar.gz,进入FastDFS目录
    执行
    ./make.sh
    ./make.sh install

配置文件:

进入FastDFS解压目录

[root@localhost FastDFS]# cd conf/
[root@localhost conf]# ls
anti-steal.jpg  client.conf  http.conf  mime.types storage.conf  storage_ids.conf  tracker.conf
[root@localhost conf]# pwd
/root/fastdfs/FastDFS/conf
[root@localhost conf]# cp -rf * /etc/fdfs/

1、修改vim /etc/fdfs/tracker.conf

 

base_path=/data/app/fastdfs

http.server_port=80

创建所需目录 mkdir -p /data/app/fastdfs

启动tracker服务:/usr/local/bin/fdfs_trackerd/etc/fdfs/tracker.conf restart

 

2、修改vim /etc/fdfs/storage.conf

base_path=/data/app/fastdfs/storage
store_path0=/data/app/fastdfs/storage
tracker_server=192.168.198.129:22122

创建目录:mkdir -p  /data/app/fastdfs/storage

启动storage服务:/usr/local/bin/fdfs_trackerd/etc/fdfs/storage.conf restart



3、修改vim /etc/fdfs/client.conf

base_path=/data/app/fastdfs/storage
tracker_server=192.168.198.129:22122

创建目录:mkdir -p  /data/app/fastdfs/storage

 

 

检验:/usr/bin/fdfs_monitor /etc/fdfs/storage.conf

 

 

加载fastdfs-nginx-module 模块

1、上传软件 master.zip、nginx1.10.1

两个软件都解压,然后编译加载模块。

[root@localhost nginx-1.10.1]# pwd
/root/fastdfs/nginx-1.10.1
[root@localhost nginx-1.10.1]# ./configure --prefix=/usr/local/nginx--pid-path=/var/run/nginx/nginx.pid --lock-path=/var/lock/nginx.lock--error-log-path=/var/log/nginx/error.log--http-log-path=/var/log/nginx/access.log --with-http_gzip_static_module--http-client-body-temp-path=/var/temp/nginx/client--http-proxy-temp-path=/var/temp/nginx/proxy--http-fastcgi-temp-path=/var/temp/nginx/fastcgi--http-uwsgi-temp-path=/var/temp/nginx/uwsgi--http-scgi-temp-path=/var/temp/nginx/scgi --add-module=/root/fastdfs/fastdfs-nginx-module-master/src

复制文件到/etc

[root@localhost src]# pwd
/root/fastdfs/fastdfs-nginx-module-master/src
[root@localhost src]# cp mod_fastdfs.conf  /etc/fdfs/

 

修改这几个地方

vim mod_fastdfs.conf

tracker_server=192.168.198.129:22122
url_have_group_name = true
store_path0=/data/app/fastdfs/storage

 

 

nginx修改:

配置 Nginx及编辑nginx.conf文件:
cd /usr/local/nginx/conf
vi nginx.conf

在配置文件中加入:
location /group1/M00 {
    root /data/fastdfs/storage/;
    ngx_fastdfs_module;
}

 

 

我们配置了group1/M00的访问,所以我们需要建立一个group1文件夹,并建立M00到data的软链接 mkdir /data/fastdfs/storage/data/group1

 ln -s /data/fastdfs/storage/data/data/fastdfs/storage/data/group1/M00

 

检验:/usr/local/nginx/sbin/nginx -V 看是否有加载模块dfs模块


 

生成测试链接:/usr/bin/fdfs_test /etc/fdfs/client.conf upload anti-steal.jpg

 

 

打开测试网页:

http://192.168.198.129/group1/M00/00/00/CsEBPVgWV1GAZ9ncAABdrZgsqUU641_big.jpg


 

note:

集群方案思路:

应用场景: 三台服务器分别做三组存储,并且需要两台tracker地址做主备关系,当一台down机后需要另外一台可以提供正常的访问连接

#注:此处不考虑存储数据安全性,如果需要保障数据不丢失,可以分别每台存储配置两组group(相同group之间数据会自动备份) ,三台服务器group分别为:

      第一台服务器:group1  group2

      第二台服务器:group1 group3

      第三台服务器:group2 group3

持续更新中……