FASTDFS相关简介
FastDFS是一个开源的轻量级的分布式文件系统,它对文件进行管理,功能包括:文件存储、文件同步、文件访问(文件上传、文件下载)等,解决了大容量存储和负载均衡的问题。特别适合以文件为载体的在线服务,如相册网站、视频网站等等。
FastDFS为互联网量身定制,充分考虑了冗余备份、负载均衡、线性扩容等机制,并注重高可用、高性能等指标,使用FastDFS很容易搭建一套高性能的文件服务器集群提供文件上传、下载等服务。
FastDFS服务端有两个角色:跟踪器(tracker)和存储节点(storage)。跟踪器主要做调度工作,在访问上起负载均衡的作用。
FastDFS架构:
FastDFS服务端有三个角色:跟踪服务器(tracker server)、存储服务器(storage server)和客户端(client)。
1. tracker server:跟踪服务器,主要做调度工作,起负载均衡的作用。在内存中记录集群中所有存储组和存储服务器的状态信 息,是客户端和数据服务器交互的枢纽。相比GFS中的master更为精简,不记录文件索引信息,占用的内存量很少。
2.storage server:存储服务器(又称:存储节点或数据服务器),文件和文件属性(meta data)都保存到存储服务器上。 Storage server直接利用OS的文件系统调用管理文件。
3.client:客户端,作为业务请求的发起方,通过专有接口,使用TCP/IP协议与跟踪器服务器或存储节点进行数据交互。
文件上传和下载的交互过程
文件上传流程:
客户端(client)询问Tracker server上传到的Storage server
1.client->Tracker server(返回一台可用的Storage server,返回的数据为该Storage server的IP地址和端口)
2.client直接与1返回的Storage server建立连接->文件上传成功后->Storage server会返回新生成的文件ID->结束
文件下载流程的步骤如下:
1. client询问Tracker server可以下载指定文件的Storage server,参数为文件ID(包含组名和文件名);
2. Tracker server返回一台可用的Storage server;
3. client直接和该Storage server建立连接,完成文件下载。
本文详细介绍了FastDFS在centos系统上的详细安装过程,在从机上使用了nginx实现了http的访问请求。具体操作如下
FastDFS相关工具下载 https://pan.baidu.com/s/1gfiVMtt
1.将下载的工具上传到服务器上
所需安装包
上传机制:
2.FastDFS集群规划
描述 | 服务器 | HOST | 分组 |
---|---|---|---|
跟踪服务器1 | 192.168.1.208 | mgr208 | |
存储服务器1 | 192.168.1.211 | mgr211 | group1 |
存储服务器2 | 192.168.1.212 | mgr212 | group1 |
3.关闭防火墙和sellinux
service iptables stop
chkconfig iptables off
vi /etc/selinux/config 修改 selinux=disable,重启生效
3.FastDFS安装(所有tracker服务器和storage服务器均有如下操作)
3.1编译和安装所需的依赖包
yum install make cmake gcc gcc-c++
3.2 安装libfastcommon
①. 安装unzip包,将libfastcommon解压到/usr/local下
yum install -y unzip zip
unzip libfastcommon-1.0.7.zip -d /usr/local
②.编译并运行
cd /usr/local/libfastcommon-1.0.7
./make.sh
./make.sh install
由于FastDFS主程序设置的lib目录是/usr/local/lib,所以需要创建软链接.
ln -s /usr/lib64/libfastcommon.so /usr/local/lib/libfastcommon.so
ln -s /usr/lib64/libfastcommon.so /usr/lib/libfastcommon.so
ln -s /usr/lib64/libfdfsclient.so /usr/local/lib/libfdfsclient.so
ln -s /usr/lib64/libfdfsclient.so /usr/lib/libfdfsclient.so