FastDFS分布式存储服务器
FastDFS
FastDFS
C语言编写的开源分布式文件存储系统,充分考虑了冗余备份、负载均衡、线性扩容等机制,并且注重高可用、高性能等指标,使用FastDFS可以方便的搭建一套高性能的文件服务器集群提供文件上传、下载等服务。
FastDFS的架构
FastDFS包括Track server 和 Storage server。客户端与Track Server进行交互,进行文件的上传下载,Track server调度Storage Server完成文件的上传和下载。
Tracker 管理集群,Tracker也可以实现集群,每个Tracker节点地位平等。收集Storage集群的状态
Storage 实际保存文件Storage分为多个组,每个组之间保存的文件是不同的,每个组内部可以有多个成员,组成员内部保存的内容是一致的,组成员的地位是一致的,没有主从的概念。
文件的上传和下载
文件的上传的流程
客户端上传文件后, 存储服务器将文件ID返回给客户端,此文件ID用于以后访问该文件的索引信息,文件的索引信息包含: 组名,虚拟磁盘路径,数据两级目录,文件名。
文件的下载流程
FastDFS的安装
- 安装FastDFS的依赖包
解压然后,运行./make.sh 执行sudo ./make.sh install - 安装 fastdfs
解压缩fastdfs-master.zip
执行./make.sh 执行sudo ./make.sh install - 配置tracker
sudo cp /etc/fdfs/tracker.conf.sample /etc/fdfs/tracker.conf
创建 /opt/fastdfs/tracker/
编辑/etc/fdfs/tracker.conf
修改文件内的base_path=/opt/fastdfs/tracker - 配置存储服务器 storage
sudo cp /etc/fdfs/storage.conf.sample /etc/fdfs/storage.conf
创建 /opt/fastdfs/storage/
编辑/etc/fdfs/storage.conf
修改文件内的base_path=/opt/fastdfs/storage
store_path0=/opt/fastdfs/storage
tracker_server=自己机器的IP:22122 - 启动tracker 和storage
sudo service fdfs_trackerd start
sudo service fdfs_storaged start - 测试是否安装成功
sudo cp /etc/fdfs/client.conf.sample /etc/fdfs/client.conf
编辑client.conf
base_path=/opt/fastdfs/tracker
tarcker_server=自己IP地址:22122
上传文件测试
fdfs_upload_file /etc/fdfs/client.conf 要上传的地址
如果返回group1 /M00/00/00/xxxxxxxx.jpg的文件ID说明文件上传成功。
Nginx的fastdfs-nginx-module 解决FastDFS大并发的下载性能问题
安装:
解压缩nginx,和fastdfs-nginx-module-masker
进入到nginx目录中
执行
# 配置nginx的编译添加module
sudo ./configure --prefix=/usr/local/nginx/ --add-module=fastdfs-nginx-module-master解压后的绝对路径/src
# 编译
sudo ./make
# 执行编译安装
sudo ./make install
# 拷贝配置文件
sudo cp fastdfs-nginx-module-master解压后的目录中src下的mod_fastdfs.conf 到 /etc/fdfs/mod_fasdfs.conf
# 编辑拷贝的配置文件
sudo vim /etc/fdfs/mod_fasdfs.conf
# 修改以下内容
connet_timeout = 10
tracker_server = 10.192.32.141:22122
url_have_group_name=true
store_path0=/opt/fastdfs/stprage
# 拷贝配置文件
sudo fasdfs-master目录中的http.conf /etc/fdfs/http.conf
sudo fasdfs-master目录中的mime.types /etc/fdfs/mime.types
# 编辑Nginx的配置文件
sudo vim /usr/local/nginx/conf/nginx.conf
server {
lissten 8888;
server_name localhost;
location ~/group[0-9]/ {
ngx_fasdfs_module;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html{
root html;
}
}
# 启动nginx
sudo /usr/local/nginx/sbin/nginx
到这里就安装完成了,借助各个语言的客户端就可以进行操作了。
比如python
from fdfs_client.client import Fdfs_client
client = Fdfs_client('配置文件')
ret = client.upload_by_filename('test')
ret {'Group name':'group1','Status':'Upload successed.', 'Remote file_id':'group1/M00/00/00/
wKjzh0_xaR63RExnAAAaDqbNk5E1398.py','Uploaded size':'6.0KB','Local file name':'test'
, 'Storage IP':'trackerIP'
}