Centos7下FastDFS从安装到入门

Github仓库

Github介绍: github.com/happyfish10…html

Github文档: github.com/happyfish10…nginx

FastDFS介绍

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

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

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

Storage server 做用是文件存储,客户端上传的文件最终存储在 Storage 服务器上, Storageserver 没有实现本身的文件系统而是利用操做系统 的文件系统来管理文件。能够将 storage 称为存储服务器。vim

服务端两个角色:centos

  • Tracker:管理集群,tracker 也能够实现集群。每一个 tracker 节点地位平等。收集 Storage 集群的状态。
  • Storage:实际保存文件 Storage 分为多个组,每一个组之间保存的文件是不一样的。每 个组内部能够有多个成员,组成员内部保存的内容是同样的,组成员的地位是一致的,没有 主从的概念。

文件上传流程

客户端上传文件后存储服务器将文件 ID 返回给客户端,此文件 ID 用于之后访问该文 件的索引信息。文件索引信息包括:组名,虚拟磁盘路径,数据两级目录,文件名。bash

group1/M00/00/00/wKgrgF1Rp8uAeU2IAA-itrfn0m4.tar.gz
复制代码
  • **group1 组名:**文件上传后所在的 storage 组名称,在文件上传成功后有 storage 服务器返回, 须要客户端自行保存。 虚拟磁盘路径:storage 配置的虚拟路径,与磁盘选项 store_path*对应。若是配置了服务器

  • /M00 : store_path0 则是 M00,若是配置了 store_path1 则是 M01,以此类推。架构

  • **/00/00:**数据两级目录:storage 服务器在每一个虚拟磁盘路径下建立的两级目录,用于存储数据 文件。

  • **/wKgrgF1Rp8uAeU2IAA-itrfn0m4.tar.gz文件名:**与文件上传时不一样。是由存储服务器根据特定信息生成,文件名包含:源存储 服务器 IP 地址、文件建立时间戳、文件大小、随机数和文件拓展名等信息。

文件下载流程

FastDFS安装

使用的系统软件

名称 说明
centos 7.x
libfatscommon FastDFS分离出的一些公用函数包
FastDFS FastDFS本体
fastdfs-nginx-module FastDFS和nginx的关联模块
nginx nginx1.15.4

编译环境

yum install git gcc gcc-c++ make automake autoconf libtool pcre pcre-devel zlib zlib-devel openssl-devel wget vim -y

磁盘目录

说明 位置
全部安装包 /usr/local/src
数据存储位置 /home/dfs/
#这里我为了方便把日志什么的都放到了dfs
#建立数据存储目录
[root@server01 ~]# mkdir -p /home/dfs 
#切换到安装目录准备下载安装包
[root@server01 ~]# cd /usr/local/src 
复制代码

组件下载与安装

下面的步骤安装切换到安装目录下cd /usr/local/src进行开始。

安装libfatscommon

git clone https://github.com/happyfish100/libfastcommon.git --depth 1
cd libfastcommon/
./make.sh && ./make.sh install #编译安装
复制代码

安装FastDFS

cd ../ #返回上一级目录
git clone https://github.com/happyfish100/fastdfs.git --depth 1
cd fastdfs/
./make.sh && ./make.sh install #编译安装
#配置文件准备
cp /etc/fdfs/tracker.conf.sample /etc/fdfs/tracker.conf
cp /etc/fdfs/storage.conf.sample /etc/fdfs/storage.conf
cp /etc/fdfs/client.conf.sample /etc/fdfs/client.conf #客户端文件,测试用
cp /usr/local/src/fastdfs/conf/http.conf /etc/fdfs/ #供nginx访问使用
cp /usr/local/src/fastdfs/conf/mime.types /etc/fdfs/ #供nginx访问使用
复制代码

安装fastdfs-nginx-module

cd ../ #返回上一级目录
git clone https://github.com/happyfish100/fastdfs-nginx-module.git --depth 1
cp /usr/local/src/fastdfs-nginx-module/src/mod_fastdfs.conf /etc/fdfs
复制代码

安装nginx

wget http://nginx.org/download/nginx-1.15.4.tar.gz #下载nginx压缩包
tar -zxvf nginx-1.15.4.tar.gz #解压
cd nginx-1.15.4/
#添加fastdfs-nginx-module模块
./configure --add-module=/usr/local/src/fastdfs-nginx-module/src/ 
make && make install #编译安装
复制代码

单机部署

部署拓扑图

按照上面的命令就可用安装好相应的各个组件,那么下面来进行单机部署的配置。

关闭防火墙

service firewalld stop
复制代码

tracker服务

tracker配置

#服务器ip为 192.168.43.128
vim /etc/fdfs/tracker.conf
#须要修改的内容以下
port=22122  # tracker服务器端口(默认22122,通常不修改)
base_path=/home/dfs  # 存储日志和数据的根目录
复制代码

tracker服务相关命令

/etc/init.d/fdfs_trackerd start #启动tracker服务
/etc/init.d/fdfs_trackerd restart #重启动tracker服务
/etc/init.d/fdfs_trackerd stop #中止tracker服务
chkconfig fdfs_trackerd on #自启动tracker服务
复制代码

启动tracker服务

[root@server01 src]# /etc/init.d/fdfs_trackerd start
Reloading systemd:                                         [  OK  ]
Starting fdfs_trackerd (via systemctl):                    [  OK  ]
[root@server01 src]# 
复制代码

storage服务

storage配置

vim /etc/fdfs/storage.conf
#须要修改的内容以下
port=23000  # storage服务端口(默认23000,通常不修改)
base_path=/home/dfs  # 数据和日志文件存储根目录
store_path0=/home/dfs  # 第一个存储目录
tracker_server=192.168.43.128:22122  # tracker服务器IP和端口
http.server_port=8888  # http访问文件的端口(默认8888,看状况修改,和nginx中保持一致)
复制代码

启动storage服务相关命令

/etc/init.d/fdfs_storaged start #启动storage服务
/etc/init.d/fdfs_storaged restart #重动storage服务
/etc/init.d/fdfs_storaged stop #中止动storage服务
chkconfig fdfs_storaged on #自启动storage服务
复制代码

启动storage服务

[root@server01 src]# /etc/init.d/fdfs_storaged start
Starting fdfs_storaged (via systemctl):                    [  OK  ]
[root@server01 src]# 
复制代码

client测试上传文件

vim /etc/fdfs/client.conf
#须要修改的内容以下
base_path=/home/dfs
tracker_server=192.168.43.128:22122    #tracker服务器IP和端口
#保存后测试,返回ID表示成功 如:group1/M00/00/00/xx.tar.gz
fdfs_upload_file /etc/fdfs/client.conf /usr/local/src/nginx-1.15.4.tar.gz
复制代码

执行以下:


nginx服务

配置nginx访问

vim /etc/fdfs/mod_fastdfs.conf
#须要修改的内容以下
tracker_server=192.168.43.128:22122  #tracker服务器IP和端口
url_have_group_name=true
store_path0=/home/dfs

#配置nginx.config
vim /usr/local/nginx/conf/nginx.conf
#添加以下配置
server {
    listen       8888;    ## 该端口为storage.conf中的http.server_port相同
    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/local/nginx/sbin/nginx #启动nginx
/usr/local/nginx/sbin/nginx -s reload #重启nginx

#测试下载
wget http://192.168.43.128:8888/group1/M00/00/00/wKgrgF1Rp8uAeU2IAA-itrfn0m4.tar.gz
复制代码

启动nginx服务以及测试下载文件

[root@server01 src]# /usr/local/nginx/sbin/nginx
ngx_http_fastdfs_set pid=4818
[root@server01 src]# wget http://192.168.43.128:8888/group1/M00/00/00/wKgrgF1Rp8uAeU2IAA-itrfn0m4.tar.gz
--2019-08-12 14:03:36--  http://192.168.43.128:8888/group1/M00/00/00/wKgrgF1Rp8uAeU2IAA-itrfn0m4.tar.gz
Connecting to 192.168.43.128:8888... connected.
HTTP request sent, awaiting response... 200 OK
Length: 1024694 (1001K) [application/octet-stream]
Saving to: ‘wKgrgF1Rp8uAeU2IAA-itrfn0m4.tar.gz’

100%[=================================================================================================================================>] 1,024,694   --.-K/s   in 0.02s   

2019-08-12 14:03:36 (40.9 MB/s) - ‘wKgrgF1Rp8uAeU2IAA-itrfn0m4.tar.gz’ saved [1024694/1024694]

[root@server01 src]# 
[root@server01 src]# ls
fastdfs  fastdfs-nginx-module  libfastcommon  nginx-1.15.4  nginx-1.15.4.tar.gz  wKgrgF1Rp8uAeU2IAA-itrfn0m4.tar.gz
[root@server01 src]# 

复制代码

可用看到已经下载成功,FastDFS的单机部署已完成。

分布式部署

分布式部署拓扑

分别在两台服务器都安装上Tacker以及Storage服务,在第一台服务安装Nginx进行下载服务的反向代理。 按照前面的步骤对两台服务器进行安装,安装完毕以后,下面来进行分布式配置。

tracker配置

配置每台服务器的tracker配置,都按照如下配置进行。

#服务器ip为 192.168.196.132,192.168.196.133
vim /etc/fdfs/tracker.conf
#须要修改的内容以下
port=22122  # tracker服务器端口(默认22122,通常不修改)
base_path=/home/dfs  # 存储日志和数据的根目录
# 启动服务
/etc/init.d/fdfs_trackerd start
复制代码

storage配置

配置每台服务器的storage配置,都按照如下配置进行。

vim /etc/fdfs/storage.conf
#须要修改的内容以下
port=23000  # storage服务端口(默认23000,通常不修改)
base_path=/home/dfs  # 数据和日志文件存储根目录
store_path0=/home/dfs  # 第一个存储目录
tracker_server=192.168.196.132:22122  # 服务器1
tracker_server=192.168.196.133:22122  # 服务器2
http.server_port=8888  # http访问文件的端口(默认8888,看状况修改,和nginx中保持一致)
# 启动服务
/etc/init.d/fdfs_storaged start
复制代码

client测试上传文件

两台服务器都配置一个client进行测试。

vim /etc/fdfs/client.conf
#须要修改的内容以下
base_path=/home/dfs
tracker_server=192.168.196.132:22122  # 服务器1
tracker_server=192.168.196.133:22122  # 服务器2
#保存后测试,返回ID表示成功 
fdfs_upload_file /etc/fdfs/client.conf /usr/local/src/nginx-1.15.4.tar.gz
复制代码

执行上传文件的返回结果:

[root@centos7-server02 nginx-1.15.4]# fdfs_upload_file /etc/fdfs/client.conf /usr/local/src/nginx-1.15.4.tar.gz
group1/M00/00/00/wKjEhF1SQHKAEN6aAA-itrfn0m4.tar.gz
[root@centos7-server02 nginx-1.15.4]# 
复制代码
[root@server03 src]# fdfs_upload_file /etc/fdfs/client.conf 1.txt 
group1/M00/00/00/wKjEhV1SQLCAbAWtAAAABFqC_Qg891.txt
[root@server03 src]# 
复制代码

配置nginx访问

在其中一台配置nginx便可,若是要作负载均衡,可用两台都配置nginx,而后F5或者haproxy负载均衡。

vim /etc/fdfs/mod_fastdfs.conf
#须要修改的内容以下
tracker_server=192.168.196.132:22122  # 服务器1
tracker_server=192.168.196.133:22122  # 服务器2
url_have_group_name=true
store_path0=/home/dfs
#配置nginx.config
vim /usr/local/nginx/conf/nginx.conf
#在上方添加以下配置
server {
    listen       8888;    ## 该端口为storage.conf中的http.server_port相同
    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/local/nginx/sbin/nginx #启动nginx
/usr/local/nginx/sbin/nginx -s reload #重启nginx
复制代码

测试经过nginx下载文件

wget http://192.168.196.132:8888/group1/M00/00/00/wKjEhF1SQHKAEN6aAA-itrfn0m4.tar.gz
wget http://192.168.196.132:8888/group1/M00/00/00/wKjEhV1SQLCAbAWtAAAABFqC_Qg891.txt
复制代码

这是刚才测试上传的两个文件,经过nginx的8888端口 + File ID进行下载,下载成功则安装完成。

检测集群

/usr/bin/fdfs_monitor /etc/fdfs/storage.conf
# 会显示会有几台服务器 有2台就会 显示 Storage 1-Storage 2的详细信息
复制代码

相关说明

配置文件

tracker_server #有几台服务器写几个
group_name #地址的名称的命名
bind_addr #服务器ip绑定
store_path_count #store_path(数字)有几个写几个
store_path(数字) #设置几个储存地址写几个 从0开始
复制代码

可能遇到的问题

若是不是root 用户 你必须在除了cd的命令以外 所有加sudo
若是不是root 用户 编译和安装分开进行 先编译再安装
若是上传成功 可是nginx报错404 先检查mod_fastdfs.conf文件中的store_path0是否一致
若是nginx没法访问 先检查防火墙 和 mod_fastdfs.conf文件tracker_server是否一致
若是不是在/usr/local/src文件夹下安装 可能会编译出错
复制代码

相关文章
相关标签/搜索