<返回更多

Centos7下FastDFS从安装到入门

2019-10-14    
加入收藏

Github仓库

Github介绍: https://github.com/hAppyfish100/fastdfs

Github文档: https://github.com/happyfish100/fastdfs/wiki

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 称为存储服务器。

 

Centos7下FastDFS从安装到入门

 

 

服务端两个角色:

文件上传流程

 

Centos7下FastDFS从安装到入门

 

 

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

group1/M00/00/00/wKgrgF1Rp8uAeU2IAA-itrfn0m4.tar.gz

文件下载流程

 

Centos7下FastDFS从安装到入门

 

 

FastDFS安装

使用的系统软件

名称说明centos7.xlibfatscommonFastDFS分离出的一些公用函数包FastDFSFastDFS本体fastdfs-Nginx-moduleFastDFS和nginx的关联模块nginxnginx1.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 #编译安装

单机部署

部署拓扑图

 

Centos7下FastDFS从安装到入门

 

 

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

关闭防火墙

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

执行如下:

 

Centos7下FastDFS从安装到入门

 

 


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的单机部署已完成。

分布式部署

分布式部署拓扑

 

Centos7下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文件夹下安装 可能会编译出错

转载自:https://www.jianshu.com/p/b12acdedd30f

声明:本站部分内容来自互联网,如有版权侵犯或其他问题请与我们联系,我们将立即删除或处理。
▍相关推荐
更多资讯 >>>