FastDFS 安装配置

本贴最后更新于 2207 天前,其中的信息可能已经时异事殊

这篇文章介绍如何搭建 FastDFS 集群
不明白什么是 FastDFS 的小伙伴可以先看看上一篇文章 FastDFS 分布式文件系统详解


安装 FastDFS

安装依赖包(在安装 FastDFS 和 Nginx 之前,需确保 gcc、gcc-c++、 libstdc++-devel、make 等依赖库和工具已经安装):
yum -y install gcc gcc-c++ libstdc++-devel pcre-devel zlib-devel wget make

安装 libfastcommon:

安装 FastDFS 必须先安装 libfastcommon 类库,否则会导致报错

  • 下载源包:
    cd /usr/local
    wget https://github.com/happyfish100/libfastcommon/archive/V1.0.7.tar.gz

  • 解压:
    tar -xvf V1.0.7.tar.gz

  • 编译安装:
    cd libfastcommon-1.0.7
    ./make.sh
    ./make.sh install

安装 FastDFS:

  • 下载 FastDFS:
    cd /usr/local
    wget https://github.com/happyfish100/fastdfs/archive/V5.05.tar.gz

  • 解压:
    tar -xvf V5.05.tar.gz

  • 编译、安装:
    cd fastdfs-5.05
    ./make.sh
    ./make.sh install

安装好之后,在/usr/bin 目录下,可以看 fdfs 开头的命令工具
作者提供的示例配置文件在/etc/fdfs 目录下,tracker 需要 tracker.conf 配置文件,storage 需要 storage.conf 配置文件。

配置 Tracker

将 tracker.conf.sample 文件复制为 tracker.conf,然后修改 tracker.conf 文件
cd /etc/fdfs
cp tracker.conf.sample tracker.conf
vim tracker.conf

这里我修改了两个配置:

##Tracker 数据和日志目录地址
base_path=/data/fastdfs
##HTTP 服务端口
http.server_port=8081

还有一些配置说明:

##配置文件是否不生效,false 为生效
disabled=false

##提供服务的端口
port=22122

##Tracker 数据和日志目录地址(这个目录需要手动创建)
base_path=/data/fastdfs

##HTTP 服务端口
http.server_port=8081

手动创建下文件目录:
mkdir /data/fastdfs

测试下启动 Tracer:
/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf start
确认是否启动成功,查看 22122 端口是否开始监听:
netstat -unltp|grep fdfs

imagepng

Tracker 服务启动成功后,也会在 base_path 下创建 data、logs 两个目录。
imagepng

配置 Storage

同样的复制示例配置文件 storage.conf.sample 后修改:
cd /etc/fdfs
cp storage.conf.sample storage.conf
vim storage.conf

这里修改了如下配置:

##Storage 数据和日志目录地址(这个目录需要手动创建)
base_path=/data/fastdfs/storage
##文件存储目录
store_path0=/data/fastdfs/storage/file
##Tracker服务器IP和端口
tracker_server=`你的Tracker服务器IP`:23000
##HTTP 服务端口 
http.server_port=8082

其它的一些配置说明:

##配置文件是否不生效,false 为生效
disabled=false

##指定此 storage server 所在 组(卷)
group_name=group1

##storage server 服务端口
port=23000

##心跳间隔时间,单位为秒 (这里是指主动向 tracker server 发送心跳)
heart_beat_interval=30

##Storage 数据和日志目录地址(这个目录需要手动创建)
base_path=/data/fastdfs/storage

##存储路径个数,需要和store_path个数匹配
store_path_count=1

##第一个存储目录,第二个存储目录起名为:store_path1=xxx,其它存储目录名依次类推...
store_path0=/data/fastdfs/storage/file

##FastDFS 存储文件时,采用了两级目录。这里配置存放文件的目录个数。 
##如果本参数只为 N(如: 256),那么 storage server 在初次运行时,会在 store_path 下自动创建 N * N 个存放文件的子目录
subdir_count_per_path=256

##tracker_server 的列表 ,会主动连接 tracker_server
##有多个 tracker server 时,每个 tracker server 写一行
tracker_server= [tracker_server ip]:23000

手动创建下文件目录:
mkdir /data/fastdfs/storage

测试启动 Storage:
这边要确保服务器端口已经开放
/usr/bin/fdfs_storaged /etc/fdfs/storage.conf start

这边一开始没有启动成功,报错解决:
查看日志: cat /data/fastdfs/storage/logs/storaged.log
imagepng
原因: 缺少目录/data/fastdfs/storage/file/data
mkdir /data/fastdfs/storage/file/data

确认是否启动成功,查看 23000 端口是否开始监听:
netstat -unltp | grep fdfs

启动 Storage 前确保 Tracker 是启动的。初次启动成功,会在 base_path 配置的路径下创建 data、 logs 两个目录。如果看到 23000 端口正常被监听后,这时候说明 Storage 服务启动成功啦

还可以验证下 Storage 是否登记到了 Tracker 服务器
运行 fdfs_monitor 查看 storage 服务器是否已经登记到 tracker 服务器: fdfs_monitor /etc/fdfs/storage.conf
如果出现 ip_addr = Active 行, 则表明 storage 服务器已经登记到 tracker 服务器。

安装 Nginx 并配置 fastdfs-nginx-module 模块

FastDFS 通过 Tracker 服务器,将文件放在 Storage 服务器存储, 但是同组存储服务器之间需要进行文件复制, 有同步延迟的问题。

假设 Tracker 服务器将文件上传到了 192.168.51.128,上传成功后文件 ID 已经返回给客户端。此时 FastDFS 存储集群机制会将这个文件同步到同组存储 192.168.51.129,在文件还没有复制完成的情况下,客户端如果用这个文件 ID 在 192.168.51.129 上取文件,就会出现文件无法访问的错误。而 fastdfs-nginx-module 可以重定向文件链接到源服务器取文件,避免客户端由于复制延迟导致的文件无法访问错误。

下载安装包并解压:

cd /usr/local
wget http://nginx.org/download/nginx-1.14.2.tar.gz
tar -zxvf nginx-1.14.2.tar.gz

下载fastdfs-nginx-module_v1.16.tar.gz上传至服务器目录 /usr/local
下载地址: https://pan.baidu.com/s/1hs3qp84#list/path=%2F&parentPath=%2FIT%E6%96%87%E6%A1%A3%E8%B5%84%E6%96%99
上传好后解压:
tar -zxvf fastdfs-nginx-module_v1.16.tar.gz

安装之前需要先配置下软连接:
ln -sv /usr/include/fastcommon /usr/local/include/fastcommon 
ln -sv /usr/include/fastdfs /usr/local/include/fastdfs 
ln -sv /usr/lib64/libfastcommon.so /usr/local/lib/libfastcommon.so

在安装 Nginx 之前,先添加 fastdfs-nginx-module-master 模块:

cd /usr/local/nginx-1.14.2
./configure --prefix=/usr/local/nginx --add-module=/usr/local/fastdfs-nginx-module/src

成功后的输出结果:
imagepng

编译:
make

安装:
make install

查看 Nginx 版本信息:
/usr/local/nginx/sbin/nginx -V

编译的时候有个报错解决:
imagepng
修改以下 fastdfs-nginx-module 的配置文件:
vim /usr/local/fastdfs-nginx-module-master/src/config
修改项:
CORE_INCS="$CORE_INCS /usr/include/fastdfs /usr/include/fastcommon/"
重新添加模块:
cd /usr/local/nginx-1.14.2
./configure --prefix=/usr/local/nginx --add-module=/usr/local/fastdfs-nginx-module/src
重新编译:
make
编译成功。

配置

配置 fastdfs-nginx-module

复制 fastdfs-nginx-module 源码中的配置文件到/etc/fdfs 目录:
cp /usr/local/fastdfs-nginx-module/src/mod_fastdfs.conf /etc/fdfs/
修改这个配置文件:
vim /etc/fdfs/mod_fastdfs.conf

##保存日志目录
base_path=/data/fastdfs/storage  
##tracker服务连接信息
tracker_server=[tracker_server_ip]:22122
##storage服务器的端口号
storage_server_port=23000
##当前服务器的group名
group_name=group1
##文件url是否有group名
url_have_group_name=true
##存储路径个数,需要和store_path个数匹配
store_path_count=1
##存储路径,必须和storage.conf中配置的store_path0路径一致
store_path0=/data/fastdfs/storage/file
##设置组的个数
group_count=0

复制 FastDFS 的部分配置文件到/etc/fdfs 目录:
cp /usr/local/fastdfs-5.05/conf/http.conf /usr/local/fastdfs-5.05/conf/mime.types /etc/fdfs

配置 nginx

编辑 nginx 的配置文件:
vim /usr/local/nginx/conf/nginx.conf

##将server段中的listen端口号修改为8080
listen  8080;

##在server段中添加:
location ~/group[0-9]/M00 {
	root /data/fastdfs/data;
	ngx_fastdfs_module;
}

启动 nginx: /usr/local/nginx/sbin/nginx
确认 nginx 是否启动成功: netstat -unltp | grep nginx
这个时候打开浏览器,访问 8080 端口的页面,可以看到 nginx 的欢迎页。

测试上传

需要配置下 client.conf 文件

cp /etc/fdfs/client.conf.sample /etc/fdfs/client.conf

修改以下参数:

##日志存放路径
base_path=/data/fastdfs

tracker_server=[tracker服务器ip]:22122
http.tracker_server_port=8080

测试上传一个文件:
/usr/bin/fdfs_upload_file /etc/fdfs/client.conf /data/7418.jpg
返回:
imagepng

使用浏览器访问:
http://[tracker服务器ip]:8080/group1/M00/00/00/rBPhW1wKFbWASYfCAACOupBwVaA219.jpg

imagepng

有看到上传的图片,说明搭建成功啦~~!


参考:

官方网站
配置文档
参考资料
架构之路搭建 FastDFS 分布式文件系统

  • FastDFS

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

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

    Linux 是一套免费使用和自由传播的类 Unix 操作系统,是一个基于 POSIX 和 Unix 的多用户、多任务、支持多线程和多 CPU 的操作系统。它能运行主要的 Unix 工具软件、应用程序和网络协议,并支持 32 位和 64 位硬件。Linux 继承了 Unix 以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。

    946 引用 • 943 回帖

相关帖子

欢迎来到这里!

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

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