您当前的位置:首页 > 电脑百科 > 软件技术 > 操作系统 > linux

Centos7下FastDFS从安装到入门

时间:2019-10-14 10:26:10  来源:  作者:

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从安装到入门

 

 

服务端两个角色:

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

文件上传流程

 

Centos7下FastDFS从安装到入门

 

 

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

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 地址、文件创建时间戳、文件大小、随机数和文件拓展名等信息。

文件下载流程

 

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



Tags:Centos7 FastDFS   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
Github仓库Github介绍: https://github.com/happyfish100/fastdfsGithub文档: https://github.com/happyfish100/fastdfs/wikiFastDFS介绍FastDFS 是用 c 语言编写的一款开源...【详细内容】
2019-10-14  Tags: Centos7 FastDFS  点击:(140)  评论:(0)  加入收藏
▌简易百科推荐
作用显示文件或目录所占用的磁盘空间使用命令格式du [option] 文件/目录命令功能显示文件或目录所占用的磁盘空间一些写法的区别du -sh xxx 显示总目录的大小,但是不会列出...【详细内容】
2021-12-23  mitsuhide1992    Tags:du命令   点击:(12)  评论:(0)  加入收藏
什么是linux内核linux就像是一个哲学的最佳实践。如果非要对它评价,我真的不知道该怎么赞叹,我只能自豪地说着:“linux的美丽简直让人沉醉。”我只能说是我处在linux学习的修炼...【详细内容】
2021-12-23  linux上的码农    Tags:linux内核   点击:(15)  评论:(0)  加入收藏
本文将比较 Linux 中 service 和 systemctl 命令,先分别简单介绍这两个命令的基础用法,然后进行比较。从 CentOS 7.x 开始,CentOS 开始使用 systemd 服务来代替 service服务(dae...【详细内容】
2021-12-23  软件架构    Tags:systemctl   点击:(14)  评论:(0)  加入收藏
mv是move的缩写,可以用来移动文件或者重命名文件名,经常用来备份文件或者目录。命令格式mv [选项] 源文件或者目录 目标文件或者目录命令功能mv命令中第二个参数类型的不同(...【详细内容】
2021-12-17  入门小站    Tags:mv命令   点击:(23)  评论:(0)  加入收藏
大数据技术AI Flink/Spark/Hadoop/数仓,数据分析、面试,源码解读等干货学习资料 98篇原创内容 -->公众号 Linux sed 命令是利用脚本来处理文本文件。sed 可依照脚本的指令来处...【详细内容】
2021-12-17  仙风道骨的宝石骑士    Tags:sed命令   点击:(22)  评论:(0)  加入收藏
Node是个啥?  写个东西还是尽量面面俱到吧,所以有关基本概念的东西我也从网上选择性地拿了下来,有些地方针对自己的理解有所改动,对这些概念性的东西有过了解的可选择跳过这段...【详细内容】
2021-12-15  linux上的码农    Tags:node   点击:(25)  评论:(0)  加入收藏
难道只有我一个人觉得Ubuntu的unity桌面非常好用吗?最近把台式机上面的Ubuntu 16.04格式化了,装了黑苹果用了一周,不得不说,MacOS确实很精美,软件生态比Linux丰富很多,比Windows简...【详细内容】
2021-12-14  地球末日村    Tags:ubuntu   点击:(41)  评论:(0)  加入收藏
简介Netstat 命令用于显示各种网络相关信息,如网络连接,路由表,接口状态 (Interface Statistics),masquerade 连接,多播成员 (Multicast Memberships) 等等。输出信息含义执行net...【详细内容】
2021-12-13  窥镜天    Tags:Linux netstat   点击:(28)  评论:(0)  加入收藏
对于较多数量的文件描述符的监听无论是select还是poll系统调用都显得捉襟见肘,poll每次都需要将所有的文件描述符复制到内核,内核本身不会对这些文件描述符加以保存,这样的设计...【详细内容】
2021-12-13  深度Linux    Tags:Linux   点击:(19)  评论:(0)  加入收藏
今天,我们来了解下 Linux 系统的革命性通用执行引擎-eBPF,之所以聊着玩意,因为它确实牛逼,作为一项底层技术,在现在的云原生生态领域中起着举足轻重的作用。截至目前,业界使用范...【详细内容】
2021-12-10  架构驿站    Tags:eBPF   点击:(29)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条