1. FastDFS 介绍
概念
- FastDFS是一个开源的轻量级分布式文件系统,它对文件进行管理,功能包括:文件存储、文件同步、文件访问(文件上传、文件下载)等,解决了大容量存储和负载均衡的问题。特别适合以文件为载体的在线服务,如相册网站、视频网站等等。
- FastDFS为互联网量身定制,充分考虑了冗余备份、负载均衡、线性扩容等机制,并注重高可用、高性能等指标,使用FastDFS很容易搭建一套高性能的文件服务器集群提供文件上传、下载等服务。
- FastDFS服务端有两个角色:跟踪器(tracker)和存储节点(storage)。跟踪器主要做调度工作,在访问上起负载均衡的作用。
- 存储节点存储文件,完成文件管理的所有功能:就是这样的存储、同步和提供存取接口,FastDFS同时对文件的metadata进行管理。所谓文件的meta data就是文件的相关属性,以键值对(key value)方式表示,如:width=1024,其中的key为width,value为1024。文件metadata是文件属性列表,可以包含多个键值对。
- 跟踪器和存储节点都可以由一台或多台服务器构成。跟踪器和存储节点中的服务器均可以随时增加或下线而不会影响线上服务。其中跟踪器中的所有服务器都是对等的,可以根据服务器的压力情况随时增加或减少。
- 为了支持大容量,存储节点(服务器)采用了分卷(或分组)的组织方式。存储系统由一个或多个卷组成,卷与卷之间的文件是相互独立的,所有卷的文件容量累加就是整个存储系统中的文件容量。一个卷可以由一台或多台存储服务器组成,一个卷下的存储服务器中的文件都是相同的,卷中的多台存储服务器起到了冗余备份和负载均衡的作用。
- 在卷中增加服务器时,同步已有的文件由系统自动完成,同步完成后,系统自动将新增服务器切换到线上提供服务。
- 当存储空间不足或即将耗尽时,可以动态添加卷。只需要增加一台或多台服务器,并将它们配置为一个新的卷,这样就扩大了存储系统的容量。
- FastDFS中的文件标识分为两个部分:卷名和文件名,二者缺一不可。
架构



2. 安装
环境准备
- Centos 7.x 两台,分别安装tracker与storage
- 下载安装包:
- libfatscommon:FastDFS分离出的一些公用函数包
- FastDFS:FastDFS本体
- fastdfs-nginx-module:FastDFS和nginx的关联模块
- nginx:发布访问服务
安装步骤 (tracker与storage都要执行)
安装基础环境
yum install -y gcc gcc-c++ yum install -y libevent安装libfastcommon函数库
# 解压 tar -zxvf libfastcommon-1.0.42.tar.gz进入libfastcommon文件夹,编译并且安装
./make.sh ./make.sh install # 安装的目录从控制台查看安装fastdfs主程序文件
# 解压 tar -zxvf fastdfs-6.04.tar.gz进入到fastdfs目录,查看fastdfs安装配置
cd fastdfs-6.04/ vim make.shTARGET_PREFIX=$DESTDIS/usr TARGET_CONF_PATH=$DESTDIR/etc/fdfs TARGET_INIT_PATH=$DESTDIR/etc/init.d安装fastdfs
./make.sh ./make.sh install拷贝配置文件
cp conf/* /etc/fdfs/
3. 配置tracker
cd /etc/fdfs/
vim tracker.conf
# tracker工作空间
base_path=/usr/local/fastdfs/tracker
# 创建tracker工作空间目录
mkdir /usr/local/fastdfs/tracker -p
启动 tracker 服务
/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf
# 查看进程
ps -rf | grep tracker
4. 配置storage
cd /etc/fdfs/
vim storage.conf
# 组名
group_name=group1
# storage工作空间
base_path=/usr/local/fastdfs/storage
store_path0=/usr/local/fastdfs/tracker
# 配置tracker地址
tracker_server=192.168.1.155:22122
http.server_port=8888
# 创建storage工作空间目录
mkdir /usr/local/fastdfs/tracker -p
启动 storage 服务
/usr/bin/fdfs_storaged /etc/fdfs/storage.conf
# 查看进程
ps -rf | grep storage
5. 配置客户端
cd /etc/fdfs/
vim client.conf
bash_path=/usr/local/fastdfs/client
tracker_server=192.168.1.155:22122
# 创建client工作空间目录
mkdir /usr/local/fastdfs/client -p
6. 测试上传
cd /usr/bin/
ls fdfs_*
7. 配置Nginx-Fastdfs模块
fastdfs安装好以后是无法通过http访问的,这个时候就需要借助nginx了,
所以需要安装fastdfs的第三方模块到nginx中,就能使用了。
注:nginx需要和storage在同一个节点。
安装Nginx插件
- 解压nginx的fastdfs压缩包
tar -zxvf fastdfs-nginx-mobule-1.22.tar.gz - 复制配置文件如下
cp mod_fastdfs.conf /etc/fdfs
安装Nginx(略)
安装 nginx 环境,
pcre,zlib,openssl(gcc已安装过)# nginx 环境, yum install -y pcre pcre-devel yum install -y zlib zlib-devel yum install -y openssl openssl-devel解压 nginx
tar -zxvf nginx-1.16.1.tar.gz配置 nginx
# nginx 临时目录
mkdir /var/temp/nginx -p
# 安装前配置
./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 \
--with-http_ssl_module \
--add-module=/home/software/FastDFS/fastdfs-nginx-module-1.22/src
注意上方--add-module=/home/software/FastDFS/fastdfs-nginx-module-1.22/src,加载fastdfs模块
执行编译、安装
make make install修改 mod_fastdfs.conf
cd /etc/fdfs/ vim mod_fastdfs.conf# 日志文件目录 base_path=/usr/local/fastdfs/tmp # 文件存储目录 store_path0=/usr/local/fastdfs/tmp tracker_server=192.168.1.155:22122 group_name=group1 url_have_group_name=truemkdir /usr/local/fastdfs/tmp配置 nginx,添加如下配置
server { listen 8888; ## 该端口为storage.conf中的http.server_port相同 server_name localhost; location /group1/M00 { ngx_fastdfs_module; } error_page 500 502 503 504 /50x.html location = /50x.html { root html; } }启动 nginx
/bin/nginx
- 测试下载
浏览器访问已上传的某个文件的路径,如
http://192.168.xx.1:8888/group1/M00/xx/xx/dfdsafsd-xx.tar.gz
若弹出下载,本单机部署的FastDFS+http就完成了
8. 总结
以上完成了FastDFS+Http的单机部署