FastDFS搭建图片服务器单实例
2018年06月02日 15:26:24 nice的程序猿 阅读数:149
版权声明: https://blog.youkuaiyun.com/sinat_40399893/article/details/80548374
一、FastDFS官方介绍
FastDFS是一款类Google FS的开源分布式文件系统,它用纯C语言实现,支持Linux、FreeBSD、AIX等UNIX系统。它只能通过 专有API对文件进行存取访问,不支持POSIX接口方式,不能mount使用。准确地讲,Google FS以及FastDFS、mogileFS、 HDFS、TFS等类Google FS都不是系统级的分布式文件系统,而是应用级的分布式文件存储服务。
- 1
1、FastDFS架构图
1)Tracker cluster中各个tracker server相互独立,不进行相互通信。
2)Storage cluster中各个storage组(Volume1,Volume2...)相互独立,不进行相互通信,也就是说各个组之间保存的数据是不相同的。但是各个组中的storage server之间是属于互相备份的关系,也就是说storage server之间保存相同的数据。
3)每个storage server会启动一个单独的线程主动向Tracker cluster中每个tracker server报告其状态信息,包括磁盘使用情况,文件同步情况及文件上传下载次数统计等信息。
- 1
- 2
- 3
2、文件上传和下载的时序图
1)Client通过Tracker server将文件上传到Storage server。
2)Tracker server向Client返回一台可用的Storage server的IP地址和端口号。
3)Client直接通过Tracker server返回的IP地址和端口与其中一台Storage server建立连接并进行文件上传。
4)上传完成,Storage server返回Client一个文件ID,文件上传结束。
- 1
- 2
- 3
- 4
1)Client通过Tracker server下载指定Storage组中某个Storage server上的某个文件(文件名包括Storage组名称)。
2)Tracker server向Client返回一台可用的Storage server的IP地址和端口号。
3)Client直接通过Tracker server返回的IP地址和端口与其中一台Storage server建立连接并进行文件下载。
- 1
- 2
- 3
二、安装并配置FastDFS
1、运行环境及相关软件
CentOS 7.4
FastDFS_v5.08.tar.gz
nginx-1.8.1.tar.gz
fastdfs-nginx-module_v1.16.tar.gz
libfastcommon
- 1
- 2
- 3
- 4
- 5
2、服务器规划
服务器名称 | IP地址和端口 | 备注 |
---|---|---|
fastdfs-tracker | *:22122 | 跟踪服务器/调度服务器 |
fastdfs-storage | *:23000 | 存储服务器 |
3、centOS安装GCC
首先先执行 whereis gcc 查看系统是否安装了GCC
- 1
已安装:
未安装:
如果未安装,执行Centos系统下载gcc命令:yum install gcc
安装完后执行上面的查询命令
- 1
- 2
4、安装FastDFS
1)首先创建工具目录(非必须)
创建目录:mkdir -p /home/oldcat/tools
进入目录:cd /home/oldcat/tools
- 1
- 2
2) 下载并安装FastDFS依赖包libfastcommon
下载: wget https://codeload.github.com/happyfish100/libfastcommon/zip/master
解压: unzip master
进入目录: cd libfastcommon-master/
安装: ./make.sh && ./make.sh install
- 1
- 2
- 3
- 4
- 5
3)下载并安装FastDFS
下载压缩包:wget http://jaist.dl.sourceforge.net/project/fastdfs/FastDFS%20Server%20Source%20Code/FastDFS%20Server%20with%20PHP%20Extension%20Source%20Code%20V5.08/FastDFS_v5.08.tar.gz
解压: tar xf FastDFS_v5.08.tar.gz
进入目录:cd FastDFS
安装: ./make.sh && ./make.sh install
- 1
- 2
- 3
- 4
采用默认方式安装后查看文件及目录:
1)服务脚本:ll /etc/init.d/ |grep fdfs
2)样例配置文件 :ll /etc/fdfs/
3)命令行工具:ll /usr/bin|grep fdfs
注意:虽然FastDFS区分tracker和storage服务器,但是安装的软件及步骤均相同,只是不同的配置文件而已,因此以上安装适用tracker server和storage server
- 1
5、配置跟踪服务器(tracker server)
1)拷贝tracker server和client端样例配置文件并重命名
复制tracker server配置文件:cp /etc/fdfs/tracker.conf.sample /etc/fdfs/tracker.conf
- 1
复制client端配置文件: cp /etc/fdfs/client.conf.sample /etc/fdfs/client.conf
2)编辑tracker server配置文件tracviewker.conf,需要修改内容如下:
disabled=false(默认为false,表示是否无效)
port=22122(默认为22122)
base_path=/data/file/fastdfs/tracker
- 1
- 2
- 3
3)编辑client端的配置文件client.conf,需要修改内容如下
base_path=/data/file/fastdfs/tracker
tracker_server=119.29.14.88:22122
- 1
- 2
4)创建tracker server数据目录
mkdir -p /data/file/fastdfs/tracker
- 1
5)测试启动tracker server,启动成功会自动在/data/file/fastdfs/tracker目录新建data和logs目录
输入启动命令 /etc/init.d/fdfs_trackerd start 显示如图 启动成功
- 1
输入端口查询命令 ss -lntup|grep 22122
查看22122端口信息和创建的data、logs
- 1
- 2
6)关闭tracker server
输入停止命令:/etc/init.d/fdfs_trackerd stop
- 1
6、配置存储服务器(storage server)
1)拷贝storage server样例配置文件并重命名
拷贝命令:cp /etc/fdfs/storage.conf.sample /etc/fdfs/storage.conf
- 1
2)编辑storage server配置文件storage.conf,需要修改内容如下:
disabled=false(默认为false,表示是否无效)
port=23000(默认为23000)
base_path=/data/file/fastdfs/storage
tracker_server=119.29.14.88:22122
store_path0=/data/file/fastdfs/storage http.server_port=8888(默认为8888,nginx中配置的监听端口那之一致)
- 1
- 2
- 3
- 4
- 5
3)创建storage server数据目录
4)测试启动storage server,启动成功会自动在/data/file/fastdfs/tracker目录新建data和logs目录(启动storage server的前提是tracker server必须事先已启动)
启动tracker server:/etc/init.d/fdfs_trackerd start
查看
启动storage server:/etc/init.d/fdfs_storaged start
查看
查看storage目录下创建的data和logs
6、文件上传测试
执行如下上传命令:
/usr/bin/fdfs_upload_file /etc/fdfs/client.conf /data/uploadfile/timg1.jpg
返回文件ID即说明文件已经上传成功
四、存储服务器(storage server)安装并配置nginx
1)下载并安装fastdfs-nginx-module模块
注:FastDFS通过Tracker服务器,将文件放在Storage服务器存储,但是同组存储服务器之间需要进入文件复制,有同步延迟的问题。假设Tracker服务器将文件上传到了192.168.4.125,上传成功后文件ID已经返回给客户端。此时FastDFS存储集群机制会将这个文件同步到同组存储192.168.4.126,在文件还没有复制完成的情况下,客户端如果用这个文件ID在192.168.4.126上取文件,就会出现文件无法访问的错误。而fastdfs-nginx-module可以重定向文件连接到源服务器取文件,避免客户端由于复制延迟导致的文件无法访问错误。
执行下载命令:wget http://nchc.dl.sourceforge.net/project/fastdfs/FastDFS%20Nginx%20Module%20Source%20Code/fastdfs-nginx-module_v1.16.tar.gz
解压:tar xf fastdfs-nginx-module_v1.16.tar.gz
进入src目录下:cd fastdfs-nginx-module/src/
编辑config文件:vim config
执行如下命令进行批量替换并保存退出:
:%s+/usr/local/+/usr/+g
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
2)拷贝fastdfs-nginx-module模块中配置文件到/etc/fdfs目录中并编辑
复制fastdfs-nginx-module模块中配置文件: cp /home/oldcat/tools/fastdfs-nginx-module/src/mod_fastdfs.conf /etc/fdfs/
修改配置文件: vi /etc/fdfs/mod_fastdfs.conf
修改内容如下:
- 1
- 2
- 3
connect_timeout=10
base_path=/tmp(默认为/tmp)
tracker_server=119.29.14.88:22122
storage_server_port=23000(默认配置为23000)
url_have_group_name = true
store_path0=/data/file/fastdfs/storage
group_name=group1(默认配置为group1)
- 1
- 2
- 3
- 4
- 5
- 6
- 7
3)安装nginx依赖库
yum install -y pcre-devel zlib-devel
- 1
4)下载并安装nginx
下载nginx压缩包: wget http://nginx.org/download/nginx-1.8.1.tar.gz
解压: tar xf nginx-1.8.1.tar.gz
进入解压目录: cd nginx-1.8.1
执行配置: ./configure --prefix=/application/nginx/ --add-module=../fastdfs-nginx-module/src/
执行安装: make && make install
- 1
- 2
- 3
- 4
- 5
5)拷贝FastDFS中的部分配置文件到/etc/fdfs目录中
cp /home/oldcat/tools/FastDFS/conf/http.conf /etc/fdfs/
cp /home/oldcat/tools/FastDFS/conf/mime.types /etc/fdfs/
- 1
- 2
6)配置nginx,如下所示:
ln -s /data/file/fastdfs/storage/data//data/file/fastdfs/storage/data/M00
编辑配置文件: vi /application/nginx/conf/nginx.conf
- 1
- 2
user root;
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;
location ~/group[0-9]/ {
ngx_fastdfs_module;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
说明:
a、"user root"是解决下载操作时报404的问题
b、8888端口号与/etc/fdfs/storage.conf中的http.server_port=8888相对应
c、storage对应有多个group的情况下,访问路径带group名称,例如:/group1/M00/00/00/**,对应nginx配置:
location ~/group[0-9]/ {
ngx_fastdfs_module;
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
7)拷贝nginx服务到/etc/init.d/目录下并启动
拷贝命令:cp /application/nginx/sbin/nginx /etc/init.d/
启动nginx: /etc/init.d/nginx
- 1
- 2
8)通过浏览器访问之前已经上传的文件
浏览器可以成功访问到上传的图片,说明使用FastDFS搭建的图片服务器成功完成!