原创

FastDFS集群安装

温馨提示:
本文最后更新于 2022年01月18日,已超过 1,077 天没有更新。若文章内的图片失效(无法正常加载),请留言反馈或直接联系我

FastDFS集群规划

 FastDFS集群安装-图片1 

跟踪服务器1:192.168.248.30 node1

跟踪服务器2:192.168.248.31 node2

存储服务器1:192.168.248.30 node1

存储服务器2:192.168.248.31 node2

操作系统:CentOS 7.4

用户:root

数据目录:/opt/fastdfs/storage-data

安装包如下:

libfastcommon-master.zip 下载地址:https://github.com/happyfish100/libfastcommon

FastDFS_v5.07.tar.gz 下载地址 https://sourceforge.net/projects/fastdfs/files/FastDFS%20Server%20Source%20Code/FastDFS%20Server%20with%20PHP%20Extension%20Source%20Code%20V5.07/

fastdfs-nginx-module_v1.16.tar.gz 下载地址 https://sourceforge.net/projects/fastdfs/files/FastDFS%20Nginx%20Module%20Source%20Code/

nginx-1.13.8.tar.gz 下载地址 http://nginx.org/download/

   
 

一、安装集群节点

在所有跟踪服务器和存储服务器节点上执行以下操作(tracker1、tracker2、storage1、storage2)

   
 

1.安装所需的依赖包

yum install make cmake gcc gcc-c++

   
 

2.安装libfatscommon

cd /opt/soft

unzip libfastcommon-master.zip

cd libfastcommon-master
编译、安装
./make.sh

./make.sh install

   
 

3.安装FastDFS

cd /opt/soft

tar -zxf FastDFS_v5.07.tar.gz

cd FastDFS

编译、安装
./make.sh

./make.sh install

   
 

二、配置跟踪节点(tracker1和tracker2)

说明:每个节点执行相同的操作

1.复制tracker样例配置文件,并重命名

cd /etc/fdfs/

cp tracker.conf.sample tracker.conf

   
 

2.修改tracker.conf配置文件

vim tracker.conf

# 修改的内容如下:

disabled=false # 启用配置文件
port=22122 # tracker服务器端口(默认22122)
base_path=/opt/fastdfs/tracker # 存储日志和数据的根目录

   
 

说明:

其它参数保留默认配置, 具体配置解释可参考官方文档说明:http://bbs.chinaunix.net/thread-1941456-1-1.html

服务器防火墙关闭或者开放tracker服务端口22122

   
 

3.创建base_path指定的目录

mkdir -p /opt/fastdfs/tracker

   
 

4.启动tracker服务器

/etc/init.d/fdfs_trackerd start #也可以用systemctl start fdfs_trackerd

FastDFS集群安装-图片2

初次启动,会在/opt/fastdfs/tracker目录下生成logs、data两个目录:

FastDFS集群安装-图片3

   
 

检查FastDFS Tracker Server是否启动成功:ps -ef | grep fdfs_trackerd

FastDFS集群安装-图片4

   
 

5.停止tracker服务器

/etc/init.d/fdfs_trackerd stop #也可以用systemctl stop fdfs_trackerd

FastDFS集群安装-图片5

6.设置tracker服务开机启动

chkconfig fdfs_trackerd on

chkconfig --list fdfs_trackerd

fdfs_trackerd         0:关        1:关        2:开        3:开        4:开        5:开        6:关

   
 

三、配置存储节点(storage1和storage2)

说明:每个节点执行相同的操作

1.复制storage样例配置文件,并重命名

cd /etc/fdfs/

cp storage.conf.sample storage.conf

2.编辑配置文件

vim storage.conf

# 修改的内容如下:
disabled=false # 启用配置文件
port=23000 # storage服务端口
group_name=group1 # 组名(第一组为group1,第二组为group2,依次类推...)
base_path=/opt/fastdfs/storage-info # 数据和日志文件存储根目录
store_path0=/opt/fastdfs/storage-data # 第一个存储目录,第二个存储目录起名为:store_path1=xxx,其它存储目录名依次类推...
store_path_count=1 # 存储路径个数,需要和store_path个数匹配
tracker_server=192.168.248.30:22122 # tracker服务器IP和端口
tracker_server=192.168.248.31:22122 # tracker服务器IP和端口
http.server_port=8888 # http访问文件的端口

说明:

其它参数保留默认配置, 具体配置解释可参考官方文档说明:http://bbs.chinaunix.net/thread-1941456-1-1.html

服务器防火墙关闭或者开放tracker服务端口23000

   
 

3.创建基础数据目录

mkdir -p /opt/fastdfs/storage-data

mkdir -p /opt/fastdfs/storage-info

   
 

4.启动storage服务器

/etc/init.d/fdfs_storaged start #也可以用systemctl start fdfs_storaged

FastDFS集群安装-图片6

初次启动,会在/opt/fastdfs/storage-info目录下生成logs、data两个目录:

FastDFS集群安装-图片7

检查FastDFS storage Server是否启动成功:ps -ef | grep fdfs_storage

FastDFS集群安装-图片8

   
 

5.停止storage服务器

/etc/init.d/fdfs_storaged stop #也可以用systemctl stop fdfs_storaged

FastDFS集群安装-图片9

6.设置storage服务开机启动

chkconfig fdfs_storaged on

chkconfig --list fdfs_storaged

fdfs_trackerd         0:关        1:关        2:开        3:开        4:开        5:开        6:关

   
 

四、文件上传测试

1.修改tracker服务器client.conf配置文件(tracker1和tracker2)

cd /etc/fdfs/

cp client.conf.sample client.conf

vi /etc/fdfs/client.conf

# 修改的内容如下:

base_path=/fastdfs/tracker #tracker的base_path设置的路径
tracker_server=192.168.248.30:22122 #tracker1 server的ip地址和端口
tracker_server=192.168.248.31:22122 #tracker2 server的ip地址和端口

   
 

2> 执行文件上传命令

fdfs_upload_file /etc/fdfs/client.conf /opt/soft/fastdfs.jpg

返回以下ID号,说明文件上传成功:

group1/M00/00/00/wKj4H1pUgHaAI1WqAABC4xj8qpM842.jpg

   
 

五、配置nginx为storage server提供http访问接口

存储节点安装Nginx和fastdfs-nginx-module模storage1和storage2

说明:每个节点执行相同的操作

1.fastdfs-nginx-module作用说明

FastDFS 通过 Tracker 服务器,将文件放在 Storage 服务器存储,但是同组存储服务器之间需要进入文件复制流程,有同步延迟的问题。假设 Tracker 服务器将文件上传到了 192.168.248.30,上传成功后文件 ID已经返回给客户端。此时 FastDFS 存储集群机制会将这个文件同步到同组存储 192.168.248.31,在文件还没有复制完成的情况下,客户端如果用这个文件 ID 在 192.168.248.31上取文件,就会出现文件无法访问的错误。而 fastdfs-nginx-module 可以重定向文件连接到源服务器(192.168.248.30)上取文件,避免客户端由于复制延迟导致的文件无法访问错误。

   
 

2.安装nginx和fastdfs-nginx-module模块

安装nginx所需的依赖包
yum install pcre-devel zlib-devel

编译安装nginx(添加fastdfs-nginx-module模块)
cd /opt/soft/

tar -zxf fastdfs-nginx-module_v1.16.tar.gz

tar -zxf nginx-1.13.8.tar.gz

cd nginx-1.13.8

./configure --prefix=/opt/fastdfs/nginx --add-module=/opt/soft/fastdfs-nginx-module/src/

Make

############################如果出现以下这个错误:############################

/opt/soft/fastdfs-nginx-module/src//common.c:21:25: 致命错误:fdfs_define.h:没有那个文件或目录

#include "fdfs_define.h"

^

编译中断。

make[1]: *** [objs/addon/src/ngx_http_fastdfs_module.o] 错误 1

make[1]: 离开目录"/opt/soft/nginx-1.13.8"

make: *** [build] 错误 2

解决:

执行以下命令,然后重新make

ln -s /usr/include/fastcommon /usr/local/include/fastcommon

ln -s /usr/include/fastdfs /usr/local/include/fastdfs

make install

   
 

3.复制 fastdfs-nginx-module 源码中的配置文件到/etc/fdfs 目录,并修改

cp /opt/soft/fastdfs-nginx-module/src/mod_fastdfs.conf /etc/fdfs/

vi /etc/fdfs/mod_fastdfs.conf

# 修改的内容如下:

connect_timeout=10 #超时时间
base_path=/opt/fastdfs/storage-info #保存日志目录

tracker_server=192.168.248.30:22122 #tracker服务器的IP地址以及端口号

tracker_server=192.168.248.31:22122
storage_server_port=23000 #storage服务器的端口号

group_name=group1 #第一组storage的组名
url_have_group_name=true #文件 url 中是否有 group 名
store_path0=/fastdfs/storage #存储路径
group_count=1 #设置组的个数,这里只使用了group1

[group1]
group_name=group1
storage_server_port=23000
store_path_count=1
store_path0=/opt/fastdfs/storage-data

   
 

如果有多个组,第二组的mod_fastdfs.confg配置与第一组的配置只有group_name不同:

group_name=group2

   
 

4.配置nginx.conf文件(Nginx简洁版样例)

vim /opt/fastdfs/nginx/conf/nginx.conf

#user nobody;
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 8888;
server_name localhost;

# FastDFS 文件访问配置(fastdfs-nginx-module模块)
location ~/group([0-9])/M00 {

root /opt/fastdfs/storage-data/data;

ngx_fastdfs_module;
}

error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}

注意:

listen 8888 端口值要与/etc/fdfs/storage.conf 中的 http.server_port=8888 相对应,因为 http.server_port 默认为 8888,如果想改成 80,则要对应修改过来。

Storage 对应有多个 group 的情况下,访问路径带 group 名,如:http://xxxx/group1/M00/00/00/xxx, 对应的 Nginx 配置为:

location ~/group([0-9])/M00 {

root /opt/fastdfs/storage-data/data;

ngx_fastdfs_module;
}

   
 

如下载时如发现老报 404,将nginx.conf第一行user nobody;修改为user root;后重新启动。

防火墙关闭或者打开Nginx的 8888 端口

   
 

5.复制FastDFS源文件目录中HTTP相关的配置文件到/etc/fdfs目录

cp /opt/soft/FastDFS/conf/http.conf /etc/fdfs/

cp /opt/soft/FastDFS/conf/mime.types /etc/fdfs/

   
 

6.创建数据存放目录的软链接

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

   
 

7.启动Nginx

/opt/fastdfs/nginx/sbin/nginx
ngx_http_fastdfs_set pid=xxx # fastdfs-nginx-module进程ID

重启 Nginx 的命令为:/usr/local/nginx/sbin/nginx -s reload

设置Nginx开机启动:

vi /etc/rc.local
# 加入
/opt/nginx/sbin/nginx

rc.local添加执行权限

chmod +x /etc/rc.d/rc.local # centos7

   
 

8.通过浏览器访问测试时上传的文件

http://192.168.248.30:8888/group1/M00/00/00/wKj4H1pUgHaAI1WqAABC4xj8qpM842.jpg

http://192.168.248.31:8888/group1/M00/00/00/wKj4H1pUgHaAI1WqAABC4xj8qpM842.jpg

访问结果如下:

FastDFS集群安装-图片10

注意:千万不要使用 kill -9 命令强杀 FastDFS 进程,否则可能会导致 binlog 数据丢失。

   
 

常用命令

tarcker服务:

1 重启tracker_server:

  /etc/init.d/fdfs_trackerd restart

或者:systemctl restart fdfs_trackerd

   
 

2 停止tracker_server:

  /etc/init.d/fdfs_trackerd stop

或者:systemctl stop fdfs_trackerd

   
 

3.启动tracker_server

  /etc/init.d/fdfs_trackerd start

或者:systemctl start fdfs_trackerd

   
 

storage服务:

1 重启storage_server:

  /etc/init.d/fdfs_storagere start

或者:systemctl restart fdfs_storage

   
 

2 停止storage_server:

  /etc/init.d/fdfs_storage stop

或者:systemctl stop fdfs_storage

   
 

3.启动storage_server

  /etc/init.d/fdfs_storages tart

或者:systemctl start fdfs_storage

   
 

查看tracker_server及storage_server状态

fdfs_monitor /etc/fdfs/client.conf

   
 

se_connection_pool=0, g_connection_pool_max_idle_time=3600s, use_storage_id=0, storage server id count: 0

   
 

server_count=2, server_index=0

   
 

tracker server is 192.168.248.30:22122

   
 

group count: 1

   
 

Group 1:

group name = group1

disk total space = 45030 MB

disk free space = 33668 MB

trunk free space = 0 MB

storage server count = 2

active server count = 2

storage server port = 23000

storage HTTP port = 8888

store path count = 1

subdir count per path = 256

current write server index = 0

current trunk file id = 0

   
 

删除一个storage

fdfs_monitor /etc/fdfs/client.conf delete group1 192.168.248.30

   
 

文件上传fdfs_upload_file

fdfs_upload_file /etc/fdfs/client.conf /opt/soft/fastdfs.jpg

fdfs_test /etc/fdfs/client.conf upload /opt/soft/fastdfs.jpg

   
 

查看文件fdfs_file_info

fdfs_file_info /etc/fdfs/client.conf group1/M00/00/00/wKj4H1pUgHaAI1WqAABC4xj8qpM842.jpg

   
 

文件下载fdfs_download_file

fdfs_download_file /etc/fdfs/client.conf group1/M00/00/00/wKj4H1pUgHaAI1WqAABC4xj8qpM842.jpg /opt/fastdfs.jpg

   
 

文件删除fdfs_delete_file

fdfs_delete_file /etc/fdfs/client.conf group1/M00/00/00/wKj4HlpUVc6AVAZDAAAAAAAAAAA411.txt

   
 

   
 

FastDFS集群安装-图片11

正文到此结束
本文目录