FastFDS----分布式文件服务系统服务端搭建

##一、FastDFS介绍
FastDFS开源地址:https://github.com/happyfish100
参考:分布式文件系统FastDFS设计原理
参考:FastDFS分布式文件系统

##简介
FastDFS 是一个开源的高性能分布式文件系统(DFS)。 它的主要功能包括:文件存储,文件同步和文件访问,以及高容量和负载平衡。主要解决了海量数据存储问题,特别适合以中小文件(建议范围:4KB < file_size <500MB)为载体的在线服务。
FastDFS 系统有三个角色:跟踪服务器(Tracker Server)、存储服务器(Storage Server)和客户端(Client)。
####Tracker Server
跟踪服务器,主要做调度工作,起到均衡的作用;负责管理所有的 storage server和 group,每个 storage 在启动后会连接 Tracker,告知自己所属 group 等信息,并保持周期性心跳。
Tracker需要管理的元信息很少,会全部存储在内存中;另外tracker上的元信息都是由storage汇报的信息生成的,本身不需要持久化任何数据,这样使得tracker非常容易扩展,直接增加tracker机器即可扩展为tracker cluster来服务,cluster里每个tracker之间是完全对等的,所有的tracker都接受stroage的心跳信息,生成元数据信息来提供读写服务。
####Storage Server

Storage server(后简称storage)以组(卷,group或volume)为单位组织,一个group内包含多台storage机器,数据互为备份,存储空间以group内容量最小的storage为准,所以建议group内的多个storage尽量配置相同,以免造成存储空间的浪费。

以group为单位组织存储能方便的进行应用隔离、负载均衡、副本数定制(group内storage server数量即为该group的副本数),比如将不同应用数据存到不同的group就能隔离应用数据,同时还可根据应用的访问特性来将应用分配到不同的group来做负载均衡;缺点是group的容量受单机存储容量的限制,同时当group内有机器坏掉时,数据恢复只能依赖group内地其他机器,使得恢复时间会很长。

group内每个storage的存储依赖于本地文件系统,storage可配置多个数据存储目录,比如有10块磁盘,分别挂载在/data/disk1-/data/disk10,则可将这10个目录都配置为storage的数据存储目录。

storage接受到写文件请求时,会根据配置好的规则(后面会介绍),选择其中一个存储目录来存储文件。为了避免单个目录下的文件数太多,在storage第一次启动时,会在每个数据存储目录里创建2级子目录,每级256个,总共65536个文件,新写的文件会以hash的方式被路由到其中某个子目录下,然后将文件数据直接作为一个本地文件存储到该目录中。
####Client
客户端,上传下载数据的服务器,也就是我们自己的项目所部署在的服务器。
FastFDS----分布式文件服务系统服务端搭建_第1张图片

##二、FastDFS安装
资源包:
libfastcommon-master+FastDFS_v5.08.tar+VCForPython27+fdfs_client-py-1.2.6-jj
1、解决Windows下安装FastDFS报 Microsoft Visual C++ 9.0 is required Unable to find vcvarsall.bat 问题
2、解决Windows下安装FastDFS报 fdfs_client/sendfilemodule.c(53) fatal error C1189: #error : platfom not supported 问题,fdfs_client-py-1.2.6-jj 安装包已经修改过, 使用python setup.py install 安装

##1.安装gcc

sudo apt-get build-dep gcc

##2.安装libfastcommon
libfastcommon-master
先安装libfastcommon-1.0.7.zip

解压命令

unzip libfastcommon-1.0.7.zip
cd libfastcommon-1.0.7
./make.sh
./make.sh install

##3.安装fastdfs
FastDFS_v5.08.tar.gz

tar -xzf FastDFS_v5.08.tar.gz
./make.sh
./make.sh install

如果没有先安装libfastcommon,会报错
"执行 ./make.sh 报以下错误:

cc -Wall -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE -g -O -DDEBUG_FLAG
-DOS_LINUX -DIOEVENT_USE_EPOLL -c -o …/common/fdfs_global.o …/common/fdfs_global.c -I…/common -I/usr/include/fastcommon
…/common/fdfs_global.c:20:20: fatal error: logger.h: No such file or
directory #include “logger.h” ^compilation terminated."

##三、FastDFS配置

##服务脚本在/etc/init.d
/etc/init.d/fdfs_storaged
/etc/init.d/fdfs_trackerd

##配置文件/etc/fdfs/
/etc/fdfs/client.conf.sample
/etc/fdfs/storage.conf.sample
/etc/fdfs/tracker.conf.sample

命令行工具在/usr/bin/目录下,Fdfs_*的一些列执行脚本

因为FastDFS服务脚本设置的bin目录为/usr/local/bin/下,但是实际我们安装在了/u
sr/bin/下面。所以我们需要修改FastDFS配置文件中的路径,也就是需要修改俩
个配置文件:
命令:vim /etc/init.d/fdfs_storaged
进行全局替换命令:%s+/usr/local/bin+/usr/bin
命令:vim /etc/init.d/fdfs_trackerd
进行全局替换命令:%s+/usr/local/bin+/usr/bin

##配置跟踪器

根目录创建 mkdir -p /home/fastdfs
创建 mkdir -p /fastdfs/tracker

进入 cd/etc/fdfs/ 目录配置跟踪器文件,把tracker.conf.sample文件
进行cope一份:去修改tracker.conf文件
####修改tracker.conf文件
port=22122
base_path=/home/fastdfs/tracker

####启动跟踪器
/etc/init.d/fdfs_trackerd restart
####停止tracker命令
/etc/init.d/fdfs_trackerd stop
##配置FastDFS存储
创建存储目录 mkdir -p /fastdfs/storage

####修改storage.conf文件
port=23000
base_path=/home/fastdfs/storage
store_path0=/home/fastdfs/storage
tracker_server=ip:22122

####启动存储
/etc/init.d/fdfs_storaged restart
####停止命令
/etc/init.d/fdfs_storaged stop

##关闭防火墙 /开端口
22122 23000
端口开启失败,日志文件中是提示

[2018-06-25 14:41:37] ERROR - file: storage_ip_changed_dealer.c, line: 180, connect to tracker server xxx.xxx.xxx.xxx:22122 fail, errno: 110, error info: Connection timed out
[2018-06-25 14:42:20] ERROR - file: storage_ip_changed_dealer.c, line: 180, connect to tracker server xxx.xxx.xxx.xxx:22122 fail, errno: 110, error info: Connection timed out

vi /etc/sysconfig/iptables
添加:-A INPUT -m state --state NEW -m tcp -p tcp --dport 22122 -j ACCEPT
添加:-A INPUT -m state --state NEW -m tcp -p tcp --dport 23000 -j ACCEPT
重启:service iptables restart

##设置开机自启动
vi /etc/rc.local
/etc/init.d/fdfs_trackerd start
/etc/init.d/fdfs_storaged start

##查看FastDFS 是否启动成功
ps -ef | grep fdfs

你可能感兴趣的:(服务器配置,Django)