FastDFS系列(一):基本服务器搭建
FastDFS系列(二):SpringBoot集成FastDFS
FastDFS系列(三):FastDFS防盗链
前言
相关术语
安装准备
基本服务器构建
编译和安装
配置
测试
Nginx配置
FastDFS是阿里巴巴余庆老师用C语言开发的一个开源的高性能分布式文件系统。它的主要功能包括:文件存储,文件同步和文件访问(文件上传和文件下载),它可以解决高容量和负载均衡问题。FastDFS应该满足基于照片共享站点和视频共享站点之类的文件的网站的要求。
FastDFS具有两个角色:跟踪服务器( tracker )和存储服务器( storage )。跟踪服务器( tracker )负责文件访问的调度和负载平衡。存储服务器( storage )的功能是文件管理,包括:文件存储,文件同步,提供文件访问界面。
跟踪服务器和存储服务器可以包含一台或多台服务器。跟踪服务器(或存储服务器)集群的服务器可以随时添加到集群中或从集群中删除,而不会影响在线服务,新增和删除的服务器会动态的添加/删除。
存储服务器按文件卷/组( group )进行组织以获得高容量。存储系统包含一个或多个卷,这些卷的文件相互独立。整个存储系统的容量等于所有卷容量的总和。一个文件卷包含一个或多个存储服务器,这些服务器之间的文件相同。文件卷中的服务器相互备份,并且所有这些服务器都在负载均衡中。将存储服务器添加到卷中时,该卷中已存在的文件会自动复制到该新服务器,复制完成后,系统会将此服务器添加到集群中,并对当前系统提供存储服务。
当整个存储容量不足时,你可以添加一个或多个卷以扩展存储容量。为此,你需要添加一个或多个存储服务器。
当上传大量的图片或者文件时,FastDFS可以配合FastDHT做去重处理,然后通过软连接指向唯一图片地址。
FastDFS返回的地址类似: 组名( group ) / 磁盘( M00 ) / 目录( 00 ) / 文件名 ( xxxxxxxxxxxxxxxxxx.jpg )
GitHub地址:https://github.com/happyfish100/fastdfs
Tracker Server:跟踪服务器,主要做调度工作,在访问上起负载均衡的作用。记录storage server的状态,是连接Client和Storage server的枢纽。
Storage Server:存储服务器,文件和meta data都保存到存储服务器上
group:组,也可称为卷。同组内服务器上的文件是完全相同的 文件标识:包括两部分:组名和文件名(包含路径)
meta data:文件相关属性,键值对(Key Value Pair)方式
文件 | 描述 |
fastdfs-6.05.tar.gz | fastDFS服务器包 |
libfastcommon-1.0.43.tar.gz | fastDFS依赖的C公共库 |
fastdfs-nginx-module-1.22.tar.gz | fastDFS的nginx依赖,解决延迟同步问题 |
nginx-1.18.0.tar.gz | nginx服务器 |
yum -y install gcc automake autoconf libtool make
yum -y install gcc gcc-c++
tar -zvxf libfastcommon-1.0.43.tar.gz -C /home/install/
cd /home/install/libfastcommon-1.0.43/
./make.sh
./make.sh install
tar -zvxf fastdfs-6.05.tar.gz -C /home/install/
cd /home/install/fastdfs-6.05/
./make.sh
./make.sh install
cd /home/install/fastdfs-6.05/conf
cp ./* /etc/fdfs/
这里配置的文件主要有五个:client.conf,storage.conf,tracker.conf,http.conf, mime.types
client.conf:主要为本地服务器测试的配置文件,配置相关命令测试上传文件
storage.conf:存储配置文件,主要定义存储文件的位置等存储服务器的信息,集群中可以配置多个
tracker.conf:追踪配置文件,主要定义文件访问和调度的信息,集群中可以多个
http.conf:http访问配置文件,主要是配合nginx做相关的访问配置
mime.types:媒体类型配置文件,为了让服务器对应处理,也是配合nginx
这里我们现阶段主要配置 client.conf,storage.conf,tracker.conf 这三个,client.conf 为了测试,storage.conf,tracker.conf是构建服务器的基本。
cd /home/
mkdir -p fdfs/tracker
mkdir -p fdfs/storage
mkdir -p fdfs/client
mkdir -p fdfs/data
# the base path to store data and log files
base_path = /home/fdfs/tracker
#日志文件目录
base_path = /home/fdfs/storage
#文件储存位置
store_path0 = /home/fdfs/data
#追踪器tracker地址
tracker_server = 192.168.1.106:22122
#日志文件目录
base_path = /home/fdfs/client
#追踪器tracker地址
tracker_server = 192.168.1.106:22122
fdfs_trackerd /etc/fdfs/tracker.conf start
fdfs_storaged /etc/fdfs/storage.conf start
上面配置完并启动了服务器,我们可以进行简单的测试。
上传的默认路径 /组名/00/00/文件名,这里为 /home/fdfs/data/data/00/00
fdfs_test 运行测试报错的可换 /usr/bin/fdfs_test
这里配置 nginx 访问必须要加上 fastdfs-nginx-module 模块,其主要是为了解决不同服务器上 group 的延迟同步问题,例如:当你向集群中 192.168.1.106 上传了一张图片,这个时候你通过集群中 192.168.1.107去获取,这个时候因为延迟可能还未向其他服务器进行同步,导致获取异常,下面进行nginx配置解决。
cd /home/upload/
tar -zvxf nginx-1.18.0.tar.gz -C /home/install/
tar -zvxf fastdfs-nginx-module-1.22.tar.gz -C /home/install/
yum -y install pcre-devel
yum -y install make zlib zlib-devel gcc-c++ libtool
./configure --add-moudle=/home/install/fastdfs-nginx-module-1.22/src
make && make install
cd /home/install/fastdfs-nginx-module-1.22/src
cp mod_fastdfs.conf /etc/fdfs/
tracker_server=192.168.1.106:22122
url_have_group_name = true
#这里配置地址要和storage一样
store_path0=/home/fdfs/data
# group settings for group #1
# since v1.14
# when support multi-group on this storage server, uncomment following section
[group1]
group_name=group1
storage_server_port=23000
store_path_count=1
store_path0=/home/fdfs/data
#server下合适位置添加
location ~/group[1-9]/M0[0-9] {
root /home/fdfs/data;
ngx_fastdfs_module;
}
cd /usr/local/nginx/sbin
./nginx
fdfs_test /etc/fdfs/client.conf upload /home/temp/temp.jpg