搭建FastDFS分布式文件系统

FastDFS简介
​ FastDFS 是用 c 语言编写的一款开源的分布式文件系统。FastDFS 为互联网量身定制,充分考虑了冗余备份、负载均衡、线性扩容等机制,并注重高可用、高性能等指标,使用 FastDFS很容易搭建一套高性能的文件服务器集群提供文件上传、下载等服务。
​ FastDFS 架构包括 Tracker server 和 Storage server。客户端请求 Tracker server 进行文件上传、下载,通过 Tracker server 调度最终由 Storage server 完成文件上传和下载。
​ Tracker server 作用是负载均衡和调度,通过 Tracker server 在文件上传时可以根据一些策略找到 Storage server 提供文件上传服务。可以将 tracker 称为追踪服务器或调度服务器。
​ Storage server 作用是文件存储,客户端上传的文件最终存储在 Storage 服务器上,Storageserver 没有实现自己的文件系统而是利用操作系统 的文件系统来管理文件。可以将storage称为存储服务器。
服务端两个角色:
Tracker:管理集群,tracker 也可以实现集群。每个 tracker 节点地位平等。收集 Storage 集群的状态。
Storage:实际保存文件 Storage 分为多个组,每个组之间保存的文件是不同的。每个组内部可以有多个成员, 组成员内部保存的内容是一样的,组成员的地位是一致的,没有主从的概念。

Ubuntu1604安装配置FastDFS:

  1. 安装libfastcommon
    下载地址:https://github.com/happyfish100/libfastcommon.git
    在/usr/fastdfs目录下解压、编译:
root@linuxidc: /usr/fastdfs# unzip  libfastcommon-master.zip
  cd libfastcommon-master
  ./make.sh
  ./make.sh  install
  1. 安装FastDFS
    下载可百度搜索FastDFS_v5.04.tar.gz下载,使用xhell存放到服务器
    也可以直接下载:
wget https://github.com/happyfish100/fastdfs/archive/V5.11.tar.gz
tar xf V5.11.tar.gz
cd fastdfs-5.11
./make.sh 
./make.sh  install

安装完成后所有的配置文件在 /etc/fdfs/ 目录下

  1. 配置tracker
    进入到 /etc/fdfs 目录下,复制模版文件tracker.conf.sample到 tracker.conf
cp client.conf.sample client.conf
cp tracker.conf.sample tracker.conf
cp storage.conf.sample storage.conf

创建数据文件和日志文件目录:

mkdir -pv /data/fastdfs/tracker

mkdir: 已创建目录 "/data"mkdir:
已创建目录 "/data/fastdfs"mkdir:
已创建目录 “/data/fastdfs/tracker”
编辑 tracker.conf 文件,测试的时候只需要修改以下参数即可

disabled=false   #启用配置文件
port=22122                             #设置 tracker 的端口号
base_path=/data/fastdfs/tracker           #设置 tracker 的数据文件和                      日志目录(需预先创建)
http.server_port=8888                  #设置 http 端口号

http.server_port=8888 指的是在tracker服务器上启动http服务进程,如:apache或者nginx 启动时所监听的端口

4.运行tracker:
启动tracker进程,然后使用netstat 查看端口是 否起来。
命令如下:
fdfs_trackerd /etc/fdfs/tracker.conf restart
注:如不能正常启动则 /usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf
netstat -antp | grep trackerd
在这里插入图片描述

绑定端口则启动正常

5.配置storage
创建数据文件和日志文件目录:

mkdir -pv /data/fastdfs/storage

命令如下:vim storage.conf
修改内容如下:

 disabled=false#启用配置文件
 group_name=group1                       #组名,根据实际情况修改
 port=23000                                           #设置 storage 的端口号
 base_path=/data/fastdfs/storage          #设置 storage 的日志目录(需预先创建)
 store_path_count=1                              #存储路径个数,需要和 store_path 个数匹配
 store_path0=/data/fastdfs/storage        #存储路径
 tracker_server=127.0.0.1:22122           #tracker 服务器的 IP 地址和端口号,注意不能使用127.0.0.1,使用内网ip或者公网ip
 http.server_port=8888                         #设置storage上启动的http服务的 

端口号,如安装的nginx的端口号

运行storage:

fdfs_storaged /etc/fdfs/storage.conf restart

注:如不能正常启动则 /usr/bin/fdfs_storaged /etc/fdfs/storage.conf
查看端口是否启动
netstat -antp | grep storage

6.配置client.conf
创建数据文件和日志文件目录:

mkdir -pv /data/fastdfs/log

命令如下:vim client.conf
修改内容如下:

base_path=/data/fastdfs/log                        #设置 log 的日志目录(需预先创建)
 tracker_server=xxx.xx.xx.xxx:22122        #tracker服务器的 IP 地址和端口号 根据自己tracker服务器配置
 http.tracker_server_port=8888       
  1. 客户端上传文件测试
    进入/usr/local/bin/目录,上传文件,执行
sudo fdfs_test  /etc/fdfs/client.conf upload a.txt   

注:a.txt可以在/usr/local/bin/目录下自己创建一个
如果命令行反馈文件地址
说明上传完成。

安装fastdfs-nginx-module模块
FastDFS通过Tracker服务器,将文件放在Storage服务器存储,但是同组存储服务器之间需要进入文件复制,有同步延迟的问题。假设Tracker服务器将文件上传到了192.168.104.118,上传成功后文件ID已经返回给客户端。此时FastDFS存储集群机制会将这个文件同步到同组存储192.168.104.119,在文件还没有复制完成的情况下,客户端如果用这个文件ID在192.168.104.119上取文件,就会出现文件无法访问的错误。而fastdfs-nginx-module可以重定向文件连接到源服务器取文件,避免客户端由于复制延迟导致的文件无法访问错误。
#新建nginx下载目录

mkdir -p /usr/local/bak/nginx

#新建日志存储目录

mkdir -p /data/fastdfs/nginx
cd /usr/local/bak/nginx
#下载并解压
wget https://github.com/happyfish100/fastdfs-nginx-module/archive/V1.20.tar.gz fastdfs-nginx-module-V1.20.tar.gz
tar xf V1.20
cd fastdfs-nginx-module-1.20/src/

拷贝fastdfs-nginx-module模块的配置文件mod_fastdfs.conf到/etc/fdfs目录中并编辑

cp /usr/local/bak/nginx/fastdfs-nginx-module-1.20/src/mod_fastdfs.conf /etc/fdfs/mod_fastdfs.conf
cd /etc/fdfs/

编辑fastdfs-nginx-module-1.20/src/目录下的config文件(没前缀,没后缀,就叫config),主要修改以下两处地方,否则会有报错,而且报错是不可预料的,不要问为什么,反正就是干。

ngx_module_incs="/usr/include/fastdfs /usr/include/fastcommon/"
CORE_INCS="$CORE_INCS /usr/include/fastdfs /usr/include/fastcommon/"

拷贝fastdfs-nginx-module模块的配置文件mod_fastdfs.conf到/etc/fdfs目录中并编辑

cp /usr/local/bak/nginx/fastdfs-nginx-module-1.20/src/mod_fastdfs.conf /etc/fdfs/mod_fastdfs.conf
cd /etc/fdfs/

修改内容如下,圈红为重点修改部分(感谢@驿外残香 反馈,此处的store_path0应该与storage.conf中的store_path0一致,这样nginx才能够找到资源的正确路径):

base_path=/data/fastdfs/nginx
store_path0=/data/fastdfs/storage
tracker_server=tracker_server=xx.xxx.xx.xx:22122 #填本机外网ip即可
storage_server_port=23000(默认配置为23000)
url_have_group_name = true
group_name=group1(默认配置为group1)

安装nginx(此处极易出错务必小心谨慎)
解压nginx到/usr/local

wget https://nginx.org/download/nginx-1.15.8.tar.gz --no-check-certificate
tar xf nginx-1.15.8.tar.gz

此时编译nginx会报错,需要安装pcre工具和zlib工具包

#我是将所有工具包下载并放置在/srv/ftp下

wget https://ftp.pcre.org/pub/pcre/pcre-8.40.tar.gz
wget http://zlib.net/zlib-1.2.11.tar.gz

将上述两个工具包解压至/usr/local/

tar -xzvf pcre-8.40.tar.gz -C /usr/local/
tar -xzvf zlib-1.2.11.tar.gz -C /usr/local/

进入pcre-8.40并编译

cd /usr/local/pcre-8.40
#编译1
./configure
#编译2
make && make install

进入zlib-1.2.11并编译

cd /usr/local/zlib-1.2.11
#编译1
./configure
#编译2
make && make install

安装编译时需要用到的库和工具

apt-get install build-essential libtool gcc automake autoconf make

执行成功不报错后
编译nginx

cd nginx-1.15.8
./configure --prefix=/usr/local/nginx   --conf-path=/usr/local/nginx/conf/nginx.conf --sbin-path=/usr/local/nginx/sbin --add-module=/usr/local/bak/nginx/fastdfs-nginx-module-1.20/src 
make  &&  make install

未报错即为编译成功,如果有报错必须解决,否则nginx无法启动成功。

拷贝FastDFS中的部分配置文件到/etc/fdfs目录中

cp /usr/fastdfs/fastdfs-5.11//conf/http.conf /etc/fdfs/
cp /usr/fastdfs/fastdfs-5.11//conf/mime.types /etc/fdfs/

配置nginx的配置文件,路径是/application/nginx/conf/nginx.conf

user  root;    
    worker_processes  1;
    events {
       worker_connections  1024;
    }
    http {
        include       mime.types;
        default_type  application/octet-stream;
        sendfile        on;
        keepalive_timeout  65;
        server {
            listen       8888;
            server_name  localhost;
            location ~/group[0-9]/ {
                ngx_fastdfs_module;
            }
            error_page   500 502 503 504  /50x.html;
            location = /50x.html {
            root   html;
            }
        }
    }

启动nginx
先上传一个文件

/usr/bin/fdfs_upload_file /etc/fdfs/client.conf /data/fastdfs/111.png

上传成功返回了一个文件地址:

测试下载:
http://xx.xxx.xx.xx:8888/group1/M00/00/00/rBM2HF6iorCAMeNOAAKo50Gq43I582.png
即可看到图片,集群内容和安全问题下面继续补充。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值