FastDFS介绍
FastDFS是用c语言编写的一款开源的分布式文件系统。FastDFS为互联网量身定制,充分考了冗余备份,负载均衡,线性扩容等机制,并注重高可用,高性能等指标,使用FastDFS很容易搭建一套高性能的文件服务器集群提供文件上传,下载等服务
FastDFS架构包括Tracker server和Storage server。客户端请求Tracker server进行文件的上传,下载,通过Tracker server调度最终由Storage server完成文件上传和下载
Tracker server作用是负载均衡和调度,通过Tracker server在文件上传时可以根据一些策略找到Storage server提供文件上传服务。可以将tracker称为追踪服务器或高度服务器
Storage sever作用是文件存储,客户端上传的文件最终存储在Storage服务器上,Storageserver没有实现自己的文件系统而是利用操作系统 的文件系统 来管理文件,可以将storage称为存储服务器
服务端两个角色:
Tracker:管理集群,tracker也可以实现集群,每个tracker节点地位平等,收集Storage集群的状态
Storage:实际保存Storage分为多个组,每个组之间保存的文件是不同的。每个组内部可以有多个成员,组成员内部保存的内容是一样的,组成员的地位是一致的,没有主从的概念
客户端上传文件后存储服务器将文件 ID 返回给客户端,此文件 ID 用于以后访问该文 件的索引信息。文件索引信息包括:组名,虚拟磁盘路径,数据两级目录,文件名。
例:group1/M00/00/00/wKgrgF1Rp8uAeU2IAA-itrfn0m4.tar.gz
group1 组名:文件上传后所在的 storage 组名称,在文件上传成功后有 storage 服务器返回, 需要客户端自行保存。 虚拟磁盘路径:storage 配置的虚拟路径,与磁盘选项 store_path*对应。如果配置了
/M00 : store_path0 则是 M00,如果配置了 store_path1 则是 M01,以此类推。
/00/00:数据两级目录:storage 服务器在每个虚拟磁盘路径下创建的两级目录,用于存储数据 文件。
/wKgrgF1Rp8uAeU2IAA-itrfn0m4.tar.gz文件名:与文件上传时不同。是由存储服务器根据特定信息生成,文件名包含:源存储 服务器 IP 地址、文件创建时间戳、文件大小、随机数和文件拓展名等信息。
1.下载
1.下载依赖组件且安装
1.Libfatscommon源码托管到github上,所以直接通过git clone将源码克隆到本地进行编译安装即可,如果系统中没有git就执行如下命令进行安装即可
yum install git-* -y
2.克隆源码
git clone https://github.com/happyfish100/libfastcommon.git --depth 1
3.编译
进入到刚下载的libfastcommon目录中编译
./make.sh
没有gcc则安装gcc
yum install gcc -y
安装成功后继续编译
./make.sh
4.安装
./make.sh install
2.安装FastDFS
1.同步骤1去github上克隆源码进行编译安装
git clone https://github.com/happyfish100/fastdfs.git --depth 1
cd fastdfs/
./make.sh && ./make.sh install
2.配置文件准备
1.追踪器配置文件
cp /etc/fdfs/tracker.conf.sample /etc/fdfs/tracker.conf
2.存储器配置文件
cp /etc/fdfs/storage.conf.sample /etc/fdfs/storage.conf
3.客户端文件,测试用
cp /etc/fdfs/client.conf.sample /etc/fdfs/client.conf
4.整合nginx需要的配置文件
cp /fastDFS/fastdfs/conf/http.conf /etc/fdfs #供nginx访问使用
cp /fastDFS/fastdfs/conf/mime.types /etc/fdfs/ #供nginx访问使用
3.安装Nginx支持插件
1.fastdfs-nginx-module
安装步骤同上,也是去github中克隆源码进行安装
git clone https://github.com/happyfish100/fastdfs-nginx-module.git --depth 1
2.复制插件配置文件到/etc/fdfs目录中
cp /soft/fastdfs-nginx-module/src/mod_fastdfs.conf /etc/fdfs
3.下载Nginx并在安装的时候使用上一步指定的插件
wget http://nginx.org/download/nginx-1.17.6.tar.gz
4.解压nginx
tar -zxvf nginx-1.17.6.tar.gz
5.切换到解压目录且指定nginx插件配置路径
cd nginx-1.17.6
./configure --add-module=/fastDFS/fastdfs-nginx-module/src/ (文件所在的位置)
6.编译安装
make
make install
如果报这个很有可能是nginx的插件没有安装,安装:
yum -y install gcc openssl openssl-devel pcre-devel zlib zlib-devel
安装后再验证
./configure --add-module=/fastDFS/fastdfs-nginx-module/src/
make
make install
4.配置文件
我这里机器的ip为192.168.42.66
1.配置tracker.conf
vim /etc/fdfs/tracker.conf
需要修改的内容如下
port=22122 # tracker服务器端口(默认22122,一般不修改)
base_path=/home/dfs # 存储日志和数据的根目录
启动tracker服务
/etc/init.d/fdfs_trackerd start
/etc/init.d/fdfs_trackerd start #启动tracker服务
/etc/init.d/fdfs_trackerd restart #重启动tracker服务
/etc/init.d/fdfs_trackerd stop #停止tracker服务
chkconfig fdfs_trackerd on #自启动tracker服务
2.配置storage.conf文件
vim /etc/fdfs/storage.conf
需要修改的内容
port=23000 # storage服务端口(默认23000,一般不修改)
base_path=/home/dfs # 数据和日志文件存储根目录
store_path0=/home/dfs # 第一个存储目录
tracker_server=192.168.42.66:22122 # tracker服务器IP和端口
http.server_port=8888 # http访问文件的端口(默认8888,看情况修改,和nginx中保持一致)
启动storage服务
/etc/init.d/fdfs_storaged start
/etc/init.d/fdfs_storaged start #启动storage服务
/etc/init.d/fdfs_storaged restart #重动storage服务
/etc/init.d/fdfs_storaged stop #停止动storage服务
chkconfig fdfs_storaged on #自启动storage服务
3.配置clint.conf
vim /etc/fdfs/client.conf
#需要修改的内容如下
base_path=/home/dfs
tracker_server=192.168.43.128:22122 #tracker服务器IP和端口
#保存后测试,返回ID表示成功 如:group1/M00/00/00/xx.tar.gz
fdfs_upload_file /etc/fdfs/client.conf 软件地址,例如我自己的
fdfs_upload_file /etc/fdfs/client.conf /fastDFS/nginx-1.17.6.tar.gz
报错没有文件夹,则创建后再运行
fdfs_upload_file /etc/fdfs/client.conf /fastDFS/nginx-1.17.6.tar.gz
group1/M00/00/00/wKgAZF7vHhmAQOXDAA_U1_e6-1g.tar.gz
4.配置nginx访问FastDFS配置文件信息
vim /etc/fdfs/mod_fastdfs.conf
需要修改的内容如下
tracker_server=192.168.42.66:22122 #tracker服务器IP和端口
url_have_group_name=true
store_path0=/home/dfs
#配置nginx.config
vim /usr/local/nginx/conf/nginx.conf
配置如下(注意空格的对齐)
server {
listen 8888; ## 该端口为storage.conf中的http.server_port相同
server_name localhost;
location ~/group[0-9]/ {
ngx_fastdfs_module;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
启动nginx服务
/usr/local/nginx/sbin/nginx #启动
/usr/local/nginx/sbin/nginx -s reload #重启nginx
使用浏览器访问检测或者使用wget 命令访问检测
wget http://192.168.0.100:8888/group1/M00/00/00/wKgAZF7vHhmAQOXDAA_U1_e6-1g.tar.gz
注意自己的ip地址端口和上传文件后返回的信息