分布式存储FastDFS
分布式存储FastDFS
- 传统文件系统管理的文件就存储在本机。
- 分布式文件系统管理的文件存储在很多机器,这些机器通过网络连接,要被统一管理。无论是上传或者访问文件,都需要通过管理中心来访问
FastDFS的架构
FastDFS两个主要的角色:Tracker Server 和 Storage Server
- Tracker Server:跟踪服务器,主要负责调度storage节点与client通信,在访问上起负载均衡的作用,和记录storage节点的运行状态,是连接client和storage节点的枢纽。
- Storage Server:存储服务器,保存文件和文件的meta data(元数据),每个storage server会启动一个单独的线程主动向Tracker cluster中每个tracker server报告其状态信息,包括磁盘使用情况,文件同步情况及文件上传下载次数统计等信息
- Group:文件组,多台Storage Server的集群。上传一个文件到同组内的一台机器上后,FastDFS会将该文件即时同步到同组内的其它所有机器上,起到备份的作用。不同组的服务器,保存的数据不同,而且相互独立,不进行通信。
- Tracker Cluster:跟踪服务器的集群,有一组Tracker Server(跟踪服务器)组成。
- Storage Cluster :存储集群,有多个Group组成。
上传和下载流程
上传
- Client通过Tracker server查找可用的Storage server。
- Tracker server向Client返回一台可用的Storage server的IP地址和端口号。
- Client直接通过Tracker server返回的IP地址和端口与其中一台Storage server建立连接并进行文件上传。
- 上传完成,Storage server返回Client一个文件ID,文件上传结束。
下载
- Client通过Tracker server查找要下载文件所在的的Storage server。
- Tracker server向Client返回包含指定文件的某个Storage server的IP地址和端口号。
- Client直接通过Tracker server返回的IP地址和端口与其中一台Storage server建立连接并指定要下载文件。
- 下载文件成功。
fastDFS的是搭建使用
下载fast相关包
地址:https://github.com/happyfish100
需要以先三个包,直接下载代码,以zip结尾下载
安装相关依赖
安装gcc g++的依赖库
sudo apt-get install build-essential
sudo apt-get install libtool
安装pcre依赖库(http://www.pcre.org/)
sudo apt-get update
sudo apt-get install libpcre3 libpcre3-dev
安装zlib依赖库(http://www.zlib.net)
sudo apt-get install zlib1g-dev
防火墙
ufw enable
ufw disable
在服务器新建一个fastdfs目录,将下载好的文件放到该目录下,当然也可以直接wget 获取相关文件
解压,并且安装
先安装fast基础工具库
libfastcomm
进入到相关路径,然后使用
使用命令
./make && ./make install
没有报错的话,继续安装fastdfs
两个安装编译都没报错的话。进入到/etc/fdfs
两个文件
- storage.conf.sample
- tracker.conf.sample
fastdfs安装它包含了 tracker storage ,想这机器是什么角色就启动什么
配置 tracker.conf.sample 并修重命名为 tracker.conf
base_path= 数据和日志文件存储根目录
其它一般可以不用修改
配置 storage.conf.sample 并修重命名为 storage.conf
base_path=/home/fastdfs # 数据和日志文件存储根目录
store_path0=/home/fastdfs # 第一个存储目录
tracker_server=xxx.xxxx.xxx.xxx:22122
启动命令
/usr/bin/fdfs_storaged /etc/fdfs/storage.conf
/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf
安装好,文件上传成功,还是无法访问的,所以现在需要安装 fastdfs-nginx-module-master
解压 文件 修改
vi config
全局修改路径 将 /usr/local/ 替换成 /usr/
命令:
:%s+/usr/local/+/usr/+g
复制 mod_fastdfs.conf 到/etc/fdfs
sudo cp mod_fastdfs.conf /etc/fdfs/
如安装的ngnix是apt 或者yum安装的建议删除 重装nginx 使用二进制进行安装,因为你需要添加模块要重新编译。
nginx 下载地址
http://nginx.org/download/
安装依赖
- yum/apt install gcc
- yum/apt install -y unzip zip
- yum -y install pcre pcre-devel zlib zlib-devel openssl openssl-devel
编译nginx
./configure --prefix=/opt/nginx --sbin-path=/usr/bin/nginx --add-module=/fastdfs-nginx-module/src //模块路径地址
编译安装
make && sudo make install
复制相关配置文件
将fastdfs源码包中的http.conf、mime.types 以及fastdfs-nginx-module-master/src 目录下的mod_fastdfs.conf 复制到/etc/fdfs/目录中
复制完成之后修改配置文件
mod_fastdfs.conf
url_have_group_name = true //是否包含组名
tracker_server=192.168.197.125:22122 //tracker地址
nginx.conf
server {
listen 80;
server_name image.caicai.top;
# 监听域名中带有group的,交给FastDFS模块处理
location ~/group([0-9])/ {
ngx_fastdfs_module;
}
location / {
root html;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
nginx 启动命令
nginx # 启动
nginx -s stop # 停止
nginx -s reload # 重新加载配置
如果没有报错,fastdfs搭建结束。