1.FastDFS架构简介
分布式文件系统
分布式文件系统 (Distributed File System) 是一个软件/软件服务器,这个软件可以用来
管理文件。但这个软件所管理的文件通常不是在一个服务器节点上,而是在多个服务器节
点上,这些服务器节点通过网络相连构成一个庞大的文件存储服务器集群,这些服务器都
用于存储文件资源,通过分布式文件系统来管理这些服务器上的文件。
常见的分布式文件系统有:FastDFS、GFS、HDFS、Lustre 、Ceph 、GridFS
、mogileFS、TFS等。
分布式文件系统与传统文件系统对比:
传统方式弊端:
如果用户数量多,IO操作比较多,对磁盘访问压力很大
如果磁盘发生故障,会造成数据丢失
存储容量有限
FastDFS简介:
FastDFS是一个开源的轻量级分布式文件系统,为互联网应用量身定做,简单、灵活、高效,
采用C语言开发,由阿里巴巴开发并开源。
FastDFS对文件进行管理,功能包括:文件存储、文件同步、文件访问(文件上传、文件下载
、文件删除)等,解决了大容量文件存储的问题,特别适合以文件为载体的在线服务,如
相册网站、文档网站、图片网站、视频网站等等。
FastDFS充分考虑了冗余备份、线性扩容等机制,并注重高可用、高性能等指标,使
用FastDFS很容易搭建一套高性能的文件服务器集群提供文件上传、下载等服务。
FastDFS代码托管在github上:https://github.com/happyfish100/fastdfs
FastDFS整体架构:
FastDFS文件系统由两大部分构成,一个是客户端,一个是服务端
客户端通常指我们的程序,比如我们的Java程序去连接FastDFS、操作FastDFS,那我们的
Java程序就是一个客户端,FastDFS提供专有API访问,目前提供了C、Java和PHP几种编
程语言的API,用来访问FastDFS文件系统。
服务端由两个部分构成:一个是跟踪器(tracker),一个是存储节点(storage)
跟踪器(tracker)主要做调度工作,在内存中记录集群中存储节点storage的状态信息,是前
端Client和后端存储节点storage的枢纽。因为相关信息全部在内存中,
Tracker server的性能非常高,一个较大的集群(比如上百个group)中有3台就足够了。
存储节点(storage)用于存储文件,包括文件和文件属性(meta data)都保存到存储服务
器磁盘上,完成文件管理的所有功能:文件存储、文件同步和提供文件访问等
2.FastDFS安装
1.安装前的准备:
检查Linux上是否安装了 gcc、libevent、libevent-devel
yum list installed | grep gcc
yum list installed | grep libevent
yum list installed | grep libevent-devel
如果没有安装,则需进行安装:
yum install gcc libevent libevent-devel -y
2. 安装 libfastcommon 库
libfastcommon 库是 FastDFS 文件系统运行需要的公共 C 语言函数库
在home新建: mkdir soft
在/home/soft/ 下
下载:
wget https://github.com/happyfish100/libfastcommon/archive/V1.0.36.tar.gz
解压
tar -xvf v1.0.7.tar.gz
"注: 你解压完成之后的的目录名不是V1.0.36,而是libfastcommon-1.0.36"
进入libfastcommon-1.0.36目录
cd libfastcommon-1.0.36
编译
./make.sh
安装:
./make.sh install
3.安装fastDFS
在/home/soft/ 下
下载:
wget https://github.com/happyfish100/fastdfs/archive/V5.11.tar.gz
解压:
tar -xvf V5.11.tar.gz
解压完毕后会有一个目录fastdfs-5.11,进入到这个目录
cd fastdfs-5.11
编译
./make.sh
安装
./make.sh install
注: 至此FastDFS安装完成,所有编译出来的文件存放在/usr/bin目录下,所有配置文件存放在/etc/fdfs目录下
4.查看FastDFS相关的可执行程序
ll /usr/bin/fdfs*
5.查看FastDFS相关的可执行程序
ll /etc/fdfs/
6.配置移动
将/home/soft/fastdfs-5.11/conf 中的: http.conf mime.types
复制到/etc/fdfs/下
cp http.conf /etc/fdfs/
cp mime.types /etc/fdfs/
7.说明
命令都在/user/bin 下
配置都在/etc/fdfs/存放四个配置文件:(必须放在/etc/fdfs下)
client.conf.sample 客户端连接
storage.conf.sample storage配置
storage_ids.conf.sample 记录id
tracker.conf.sample tracker配置
8.配置
进入配置路径
cd /etc/fdfs/
复制并修改后缀名
cp storage.conf.sample storage.conf
cp tracker.conf.sample tracker.conf
8.1修改tracker.conf配置:
vi tracker.conf
找到:
base_path=/home/yuqing/fastdfs
按i
修改为: base_path=/opt/fastdfs/tracker #配置tracker存储数据的目录
退出保存:按esc :wq!
在/opt/下新建fastdfs/tracker目录
cd /opt/
mkdir -p fastdfs/tracker
8.2修改storage.conf配置:
vi storage.conf
找到:
base_path=/home/yuqing/fastdfs
按i
修改为:base_path=/opt/fastdfs/storage #storage存储数据目录
找到:
store_path0=/home/yuqing/fastdfs
修改为:store_path0=/opt/fastdfs/storage/files #真正存放文件的目录
找到:
tracker_server=192.168.209.121:22122
修改为:tracker_server=Linux的ip:22122 #注册当前存储节点的跟踪器地址
退出保存:按esc :wq!
在/opt/fastdfs/下新建storage/files目录
mkdir -p storage/files
注:如果有多个路径: store_path_count = 1 修改数量
9.启动,关闭,重启命令
tracker:
启动: fdfs_trackerd /etc/fdfs/tracker.conf
关闭: fdfs_trackerd /etc/fdfs/tracker.conf stop
重启: fdfs_trackerd /etc/fdfs/tracker.conf restart
storaged:
启动: fdfs_storaged /etc//fdfs/storage.conf
关闭: fdfs_storaged /etc//fdfs/storage.conf stop
重启: fdfs_storaged /etc//fdfs/storage.conf restart
查看是否启动成功:
ps -ef | grep fdfs
10. 查看storage是否已经注册到了tracker下
fdfs_monitor /etc/fdfs/storage.conf
10.1. 首次启动storage后,会在配置的路径下创建存储文件的目录
cd /opt/fastdfs/storage/files/data
ls
11.测试FastDFS之前配置
在/etc/fdfs/下
cd /etc/fdfs/
复制client.conf.sample 并修改名称
cp client.conf.sample client.conf
修改client.conf:
vi client.conf
找到:base_path=/home/yuqing/fastdfs
按i
修改成:base_path=/opt/fastdfs/client
找到:
tracker_server=192.168.0.197:22122
修改成:tracker_server=Linux的ip:22122
退出保存:按esc :wq!
在/opt/fastdfs/下新建client文件夹
cd /opt/fastdfs/
mkdir client
12.测试上传
准备一张图片,放在/root下
fdfs_test /etc/fdfs/client.conf upload 图片名称(或者图片地址+名称)
如:
fdfs_test /etc/fdfs/client.conf upload a.jpg
说明:group_name 和 remote_filename
'group_name:组名' 'remote_filename:文件路径及文件名称'
13.FastDFS生成的文件目录结构及名称示例
13.1查看文件位置:
如:
http://192.168.30.128/group1/M00/00/00/wKgegGB4fsGAetuHAAhRXIE6jNU992.jpg
所在位置:
cd /opt/fastdfs/storage/files/data/00/00/
说明:
/opt/fastdfs/storage/files/: 是配置文件配置
14.测试下载删除
下载:
fdfs_test /etc/fdfs/client.conf download 组名(group_name) 文件路径文件名(remote_filename)
如:
fdfs_test /etc/fdfs/client.conf download group1 M00/00/00/wKgegGB4fsGAetuHAAhRXIE6jNU992.jpg
删除:
fdfs_test /etc/fdfs/client.conf delete 组名(group_name) 文件路径文件名(remote_filename)
如:
fdfs_test /etc/fdfs/client.conf delete group1 M00/00/00/wKgegGB4fsGAetuHAAhRXIE6jNU992_big.jpg
3.FastDFS-安装nginx
1.下载fastdfs-nginx-module
fastdfs 5.11版本对照:Version 5.11对应的fastdfs-nginx-module的Version 1.20
fastdfs 5.10版本对照:Version 5.10对应的fastdfs-nginx-module的Version 1.19
如果版本不对应,后期安装会报错!!!
下载:
wget https://github.com/happyfish100/fastdfs-nginx-module/archive/V1.20.tar.gz
解压
tar -xvf V1.20.tar.gz
修改名称
mv fastdfs-nginx-module-1.20 fastdfs-nginx-module
2.配置fastdfs-nginx-module
cd /home/soft/fastdfs-nginx-module-1.20/src
vi config
将: ngx_module_incs="/usr/local/include"
修改为:
ngx_module_incs="/usr/include/fastdfs /usr/include/fastcommon/"
将:CORE_INCS="$CORE_INCS /usr/local/include"
修改为:
CORE_INCS="$CORE_INCS /usr/include/fastdfs /usr/include/fastcommon/"
3.nginx依赖安装:
cd /home/soft
安装依赖环境,安装gcc环境
yum install gcc-c++
安装PCRE库,用于解析正则表达式
yum install -y pcre pcre-devel
zlib压缩和解压缩依赖
yum install -y zlib zlib-devel
SSL 安全的加密的套接字协议层,用于HTTP安全传输,也就是https
yum install -y openssl openssl-devel
4.下载安装nginx
下载:
wget http://nginx.org/download/nginx-1.14.2.tar.gz
解压
tar -xvf nginx-1.14.2.tar.gz
进入
cd nginx-1.14.2.tar.gz
执行:
./configure --prefix=nginx安装路径 --add-module=fastdfs-nginx-module解压目录
--prefix是指定nginx安装路径
--add-module指定fastDFS的nginx模块的源代码路径
如:
./configure --prefix=/usr/local/nginx_fdfs --add-module=/home/soft/fastdfs-nginx-module/src
编译
make
安装
make install
5.安装完后查看
cd /usr/local/
4.配置访问
1.FastDFS的Nginx访问配置
将fastdfs-nginx-module-master的mod_fastdfs.conf配置拷贝到/etc/fdfs/目录下
cp /home/soft/fastdfs-nginx-module/src/mod_fastdfs.conf /etc/fdfs/
cd /etc/fdfs/
修改mod_fastdfs.conf配置文件
vi mod_fastdfs.conf
找到:base_path=/tmp
修改为:base_path=/opt/fastdfs/nginx_mod ##基础路径
找到:tracker_server=tracker:22122
修改为:tracker_server=Linux的ip:22122
找到:url_have_group_name = false
修改为:url_have_group_name = true
找到:store_path0=/home/yuqing/fastdfs
修改为:store_path0=/opt/fastdfs/storage/files ##文件存放路径
退出保存:按esc :wq!
在/opt/fastdfs/目录下新建nginx_mod文件夹
cd /opt/fastdfs/
mkdir nginx_mod
2.配置Nginx
进入nginx
cd /usr/local/nginx_fdfs/conf/
修改nginx.conf
vi nginx.conf
在server {里的 localhost / { 下新增:
location ~ /group[1-9]/M0[0-9] {
ngx_fastdfs_module;
}
注:ngx_fastdfs_module; #这个指令不是Nginx本身提供的,是扩展模块提供的,根据
这个指令找到FastDFS提供的Nginx模块配置文件,然后找到Tracker,最终找
到Stroager
退出保存:按esc :wq!
3.启动带有Fastdfs模块的Nginx
检查
/usr/local/nginx_fdfs/sbin/nginx -c /usr/local/nginx_fdfs/conf/nginx.conf -t
启动
/usr/local/nginx_fdfs/sbin/nginx -c /usr/local/nginx_fdfs/conf/nginx.conf
4.检查
ps -ef | grep nginx
必须有三个
6.设置开放的端口号
firewall-cmd --add-service=http –permanent
sudo firewall-cmd --add-port=80/tcp --permanent
80:是需要开放的端口
重启防火墙
firewall-cmd --reload
7.访问之前上传的图片
如:
http://192.168.10.12/group1/M00/00/00/wKiagGCUsCSAVhPCAB1IdfRTXZY511.jpg
至此FastDFS+nginx 安装配置完成