FastDFS文件分布式文件服务器搭建

FastDFS文件分布式文件服务器搭建

一 . FastDFS介绍

1. 什么是FastDFS

FastDFS是用c语言编写的一款开源的分布式文件系统。FastDFS为互联网量身定制,充分考虑了冗余备份、负载均衡、线性扩容等机制,并注重高可用、高性能等指标,使用FastDFS很容易搭建一套高性能的文件服务器集群提供文件上传、下载等服务。

2. FastDFS架构

FastDFS架构包括 Tracker server和Storage server。客户端请求Tracker server进行文件上传、下载,通过Tracker server调度最终由Storage server完成文件上传和下载。

Tracker server作用是负载均衡和调度,通过Tracker server在文件上传时可以根据一些策略找到Storage server提供文件上传服务。可以将tracker称为追踪服务器或调度服务器。

Storage server作用是文件存储,客户端上传的文件最终存储在Storage服务器上,Storage server没有实现自己的文件系统而是利用操作系统 的文件系统来管理文件。可以将storage称为存储服务器。

如图:

这里写图片描述

3. 架构描述
3.1 client:

client请求tracker进行文件上传、下载、删除。
client可以通过java client API方式进行文件上传、下载、删除。
client可以通过http方式进行文件下载。tracker通过nginx提供http下载接口。
client也可以直接访问storage进行文件上传、下载、删除,但建议client通过tracker进行文件上传、下载、删除。

3.2 Tracker Server

每个tracker server互相平等,tracker server上部署nginx是为了对外提供http文件下载接口,tracker上nginx只是起到负载均衡的作用。tracker的nginx会代理转发至storage上的nginx。
tracker上的两个nginx可以采用主备方式实现高可用。nginx高可用参数nginx文档。

3.3 Storage Server

每台storage上也部署nginx,storage上的nginx与tracker上的nginx有区别,storage上的nginx需要安装FastDSF-nginx模块,此模块的作用是使用FastDFS和nginx进行整合,nginx对外提供http文件下载接口,注意:nginx只提供文件下载接口不提供上传接口。文件上传仍然通过java client API进行。

不说废话直接开撸代码,看下面

二. 搭建FastDFS

在192.168.1.70服务器上安装Tracker Server,Storage Server

1.Tracker Server安装
安装FastDFS编译环境
 安装gcc:
 yum install gcc-c++

 FastDFS依赖libevent库,需要安装:
 yum -y install libevent
安装 libfastcommon:

FastDFSlibfastcommon是FastDFS官方提供的libfastcommon包含了FastDFS运行所需要的一些基础库。

  cp libfastcommonV1.0.7.tar.gz /usr/local
  cd /usr/local/
  tar -zxvf libfastcommonV1.0.7.tar.gz //解压
  cd libfastcommonV1.0.7
  ./make.sh
  ./make.sh install
安装 tracker安装
cp FastDFS_v5.05.tar.gz /usr/local/ //将FastDFS_v5.05.tar.gz拷贝至下
tar -zxvf FastDFS_v5.05.tar.gz      //解压
cd FastDFS         
./make.sh
./make.sh install

安装成功后将安装目录下的conf的文件拷贝到/etc/fdfs/下

cp con/* /etc/fdfs
cd /etc/fdfs 
cp cp tracker.conf.sample tracker.conf

编辑 tracker.conf
vi tracker.conf 
base_path=/home/yuqing/FastDFS修改为 base_path=/data/fdfs/tracker/

mkdir -pv /data/fdfs/tracker/

启动tracker服务器
/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf start

进入/data/fdfs/tracker/看是否有data和logs文件夹

检查进程
ps -ef|grep tracker

如图所示:

查看tracker服务器是否启动成功

出现如图就说明配置成功了!

安装 storage安装
cd /etc/fdfs 
cp cp storage.conf.sample storage.conf

编辑 storage.conf
vi storage.conf 
group_name=group1
base_path=/home/yuqing/FastDFS修改为 base_path=/data/fdfs/storage/
store_path0=/home/yuqing/FastDFS改为:store_path0=/data/fdfs/storage/

#如果有多个挂载磁盘则定义多个store_path,如下
#store_path1=.....
#store_path2=......

tracker_server=192.168.1.70:22122 #配置tracker服务器:IP
#如果有多个则配置多个trackertracker_server=192.168.1.71:22122


mkdir -pv /data/fdfs/storage/

启动tracker服务器
/usr/bin/fdfs_storaged /etc/fdfs/storage.conf start

进入/data/fdfs/storage/看是否有data和logs文件夹

检查进程
ps -ef|grep storage

如图所示:

查看storage服务器是否启动成功

查看/data/fdfs/storage/是否生成data,和logs文件夹,如果生成进入logs查看storaged.log文档
如过没有error说明storage服务器配置成功了!

修改client.conf

vi /etc/fdfs/client.conf
base_path=/data/fdfs/storage
tracker_server=192.168.1.70:22122

上传图片测试

使用格式:
/usr/bin/fdfs_test 客户端配置文件地址  upload  上传文件
/usr/bin/fdfs_test /etc/fdfs/client.conf upload 54.jpg

打印如图下的日志,基本配置成功!

这里写图片描述

在本地通过浏览器还无法访问图片需要nginx配置

http://192.168.101.5/group1/M00/00/00/wKhlBVVY2M-AM_9DAAAT7-0xdqM485_big.png就是文件的下载路径。
对应storage服务器上的
/data/fdfs/storage/data/00/00/wKhlBVVY2M-AM_9DAAAT7-0xdqM485_big.png文件。

由于现在还没有和nginx整合无法使用http访问。

三 .FastDFS和nginx整合

服务器有限,我就把tracker和storage服务放到一台电脑上了玩了!

1. FastDFS-nginx-module安装
将FastDFS-nginx-module_v1.16.tar.gz传至/usr/local/下
cd /usr/local
tar -zxvf FastDFS-nginx-module_v1.16.tar.gz
cd FastDFS-nginx-module/src
修改config文件将/usr/local/路径改为/usr/

将FastDFS-nginx-module/src下的mod_FastDFS.conf拷贝至/etc/fdfs/下
cp mod_FastDFS.conf /etc/fdfs/

修改/etc/fdfs/mod_FastDFS.conf文件
vi mod_FastDFS.conf

base_path=/data/fdfs/storage
tracker_server=192.168.1.70:22122
tracker_server=192.168.1.70:22122
url_have_group_name=true        #url中包含group名称
store_path0=/data/fdfs/storage
2.nginx安装(简单说一下)

下载pcre-8.12.tar.gz, nginx-1.5.0.tar.gz 到/usr/local/src/nginx目录下,

cd /usr/local/src/nginx/
tar -zxvf  nginx-1.5.0.tar.gz //解压
cd /usr/local/src/nginx/ nginx-1.5.0

配置通常将软件安装在/usr/local/目录下。

./configure \
--prefix=/usr/local/nginx \
--pid-path=/var/run/nginx/nginx.pid \
--lock-path=/var/lock/nginx.lock \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--with-http_gzip_static_module \
--http-client-body-temp-path=/var/temp/nginx/client \
--http-proxy-temp-path=/var/temp/nginx/proxy \
--http-fastcgi-temp-path=/var/temp/nginx/fastcgi \
--http-uwsgi-temp-path=/var/temp/nginx/uwsgi \
--http-scgi-temp-path=/var/temp/nginx/scgi \
--add-module=/usr/local/fastdfs-nginx-module/src//要添加fastdfs-nginx-module/src模块给

编译
make
安装
make install
检查是否安装成功
cd /usr/local/nginx/sbin
./nginx -t
  结果显示:
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful

//配置防火墙80端口
vi /etc/sysconfig/iptables
//添加配置项
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
//重启防火墙
service iptables restart
3.nginx配置文件
cd /usr/local/nginx/conf/   //进入nginx的配置文件中
vi nginx.cong
添加
server{
    listen       80;
    server_name  192.168.1.70; //本机的ip地址

    location /group1/M00/{
            root /data/fdfs/storage/data;//group1为nginx 服务FastDFS的分组名称,M00是FastDFS自动生成编号,对应store_path0=/home/FastDFS/fdfs_storage,如果FastDFS定义store_path1,这里就是M01
            ngx_fastdfs_module;
    }
}
4.重启nginx,进行测试
cd /usr/local/nginx/sbin/
./nginx -t //查看是否配置成功
如图配置成功

这里写图片描述

重启nginx
./nginx -s reload
如图配置成功

这里写图片描述

这样你就通过浏览器访问你的图片了!

下面说一下配上传文件的时候的解决:

如果报的的无法找到host,建议修改防火墙的配置文件,对22122,23000端口进行放行,修改后,重启防火墙!

如果报的是无法找到文件夹,说明你没有细心阅读.建议打开查看几个文件的配置路径.

谢谢阅读,请指教

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值