FastDFS系列(一):基本服务器搭建

系列文章

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服务器

 

基本服务器构建

编译和安装

  • 先将准备好的环境文件上传( xftp或者lrzsz )到服务器,这里路径为 /home/upload

  • 确认是否有gcc等相关依赖环境,未安装请运行以下命令
yum -y install gcc automake autoconf libtool make
yum -y install gcc gcc-c++
  • 先来安装 libfastcommon,这里解压 libfastcommon-1.0.43.tar.gz到指定目录 /home/install/
 tar -zvxf libfastcommon-1.0.43.tar.gz -C /home/install/
  •  切换到 libfastcommon 的安装目录运行 ./make.sh ,编译完后进行安装 ./make.sh install
cd /home/install/libfastcommon-1.0.43/
./make.sh
./make.sh install
  • 接下来安装和构建 fastDFS服务器 ,解压 fastdfs-6.05.tar.gz 到指定目录 /home/install/
tar -zvxf fastdfs-6.05.tar.gz -C /home/install/
  • 切换到 fastdfs 的安装目录运行 ./make.sh ,编译完后进行安装 ./make.sh install
cd /home/install/fastdfs-6.05/
./make.sh 
./make.sh install

 

配置

  • 切换到 fastdfs 的配置文件目录,将我们的需要的配置全部复制到 /etc/fdfs/ 下面(这里也可以直接到 /etc/fdfs/ 下 cp 有的文件)
cd /home/install/fastdfs-6.05/conf
cp ./* /etc/fdfs/
  • 复制完了过后我们切换到 /etc/fdfs/ 目录,查看如下:

这里配置的文件主要有五个:client.confstorage.conftracker.conf,http.conf, mime.types

client.conf:主要为本地服务器测试的配置文件,配置相关命令测试上传文件

storage.conf:存储配置文件,主要定义存储文件的位置等存储服务器的信息,集群中可以配置多个

tracker.conf:追踪配置文件,主要定义文件访问和调度的信息,集群中可以多个

http.conf:http访问配置文件,主要是配合nginx做相关的访问配置

mime.types:媒体类型配置文件,为了让服务器对应处理,也是配合nginx

这里我们现阶段主要配置 client.confstorage.conftracker.conf 这三个,client.conf 为了测试,storage.conftracker.conf是构建服务器的基本。

  • 在真正的配置之前,我们需要先创建放置 client ,storage , tracker 日志文件的地方,除此之外,还要创建好 storage 储存文件的地方,这里选择剩余空间最多的 /home ( df -h 查看磁盘空间 ),切换到 /home
cd /home/
mkdir -p  fdfs/tracker
mkdir -p  fdfs/storage
mkdir -p  fdfs/client
mkdir -p  fdfs/data
  • 创建好需要的目录过后,我们第一个 配置tracker,切换到 /etc/fdfs ,vim tracker.conf 进入编辑,这里主要修改 tracker 的日志放置目录
# the base path to store data and log files
base_path = /home/fdfs/tracker
  • 配置storage,vim storage.conf 进入编辑,配置上对应刚创建的目录和 tracker 地址
#日志文件目录
base_path = /home/fdfs/storage

#文件储存位置
store_path0 = /home/fdfs/data

#追踪器tracker地址
tracker_server = 192.168.1.106:22122

  • 为了测试,配置client
#日志文件目录
base_path = /home/fdfs/client

#追踪器tracker地址
tracker_server = 192.168.1.106:22122
  • 启动 tracker 和 storage 服务器,在任意位置运行下面的命令
fdfs_trackerd /etc/fdfs/tracker.conf start
fdfs_storaged /etc/fdfs/storage.conf start
  • netstat -ntlp 查看是否启动

FastDFS系列(一):基本服务器搭建_第1张图片

 

测试

上面配置完并启动了服务器,我们可以进行简单的测试。

  • 上传一个图片到任意目录,这里为 /home/temp

  • 运行 fdfs_test 命令进行测试,fdfs_test /etc/fdfs/client.conf upload temp.jpg 

FastDFS系列(一):基本服务器搭建_第2张图片

上传的默认路径 /组名/00/00/文件名,这里为 /home/fdfs/data/data/00/00

fdfs_test 运行测试报错的可换 /usr/bin/fdfs_test 

 

Nginx配置

这里配置 nginx 访问必须要加上 fastdfs-nginx-module 模块,其主要是为了解决不同服务器上 group 的延迟同步问题,例如:当你向集群中 192.168.1.106 上传了一张图片,这个时候你通过集群中  192.168.1.107去获取,这个时候因为延迟可能还未向其他服务器进行同步,导致获取异常,下面进行nginx配置解决。

  • 上面已经将需要的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/
  • 编译和安装 nginx 之前先安装需要的环境
yum -y install pcre-devel
yum -y install make zlib zlib-devel gcc-c++ libtool
  • 添加  fastdfs-nginx-module 模块到 nginx 中
./configure --add-moudle=/home/install/fastdfs-nginx-module-1.22/src
  • 编译和安装 nginx
make && make install
  • 切换到 fastdfs-nginx-module 的安装目录下,复制 mod_fastdfs.conf  配置文件到 /etc/fdfs
cd /home/install/fastdfs-nginx-module-1.22/src
cp mod_fastdfs.conf /etc/fdfs/
  • 切换目录到 /etc/fdfsvim mod_fastdfs.conf 对配置文件进行修改
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
  • 切换到 nginx 的配置目录 /usr/local/nginx/conf vim nginx.conf 配置 nginx 访问
#server下合适位置添加 
location ~/group[1-9]/M0[0-9] {
       root /home/fdfs/data;
       ngx_fastdfs_module;
}

FastDFS系列(一):基本服务器搭建_第3张图片

  • 启动nginx
cd /usr/local/nginx/sbin
./nginx

  • 测试上传并查看是否能访问
fdfs_test /etc/fdfs/client.conf upload /home/temp/temp.jpg 

FastDFS系列(一):基本服务器搭建_第4张图片

  • 访问 http://192.168.1.106/group1/M00/00/00/wKgBal76DD2AV4aRAACV8P5PD_Y781_big.jpg

FastDFS系列(一):基本服务器搭建_第5张图片

你可能感兴趣的:(FastDFS)