FastDFS——从入门到入土(上)_fastdfs tracker(1)

在这里插入图片描述

  • 跟踪服务器(tracker server)

tracker server 主要负责调度服务,提供负载均衡
tracker server 将集群中所有存储组和 storage server 的状态信息等存放在内存中
tracker server 是 client 和 storage server 交互的枢纽
storage serve 在启动后会自动连接 tracker,告知自己的 group 信息并保持周期性的心跳,tracker根据 storage 的心跳信息,建立 group==>[storage server list] 的映射表

  • 存储服务器(storage server)

storage 上存储了文件的元文件的信息,它直接利用 OS 的文件系统来调用或管理文件

storage 以组或卷(group或volume)来作为单位,一个 group 内包含多台storage ,数据互相备份

利用 group 可以实现数据隔离、负载均衡、应用隔离等功能

数据隔离:将不同应用的数据放在不同 group 下
负载均衡:根据应用的访问特性来将应用数据分配到不同 group 下来做负载均衡

group 内的每台 storage 都依赖于本地文件系统,storage 可以配置多个存储目录,当收到写请求时,会根据配置好的规则来选择其中一个存储目录来存储文件

为了避免单个目录下的文件数太多,在storage第一次启动时,会在每个数据存储目录里创建2级子目录,每级265个,总共65535个文件。新写的文件会以hash的方式路由到某个子目录下。然后将文件数据直接作为一个本地文件存储到该目录中

  • 客户端(client)

作为业务请求发起方,通过专门接口,使用TCP/IP协议与tracker server或者storage server进行数据交互

FastDFS向使用者提供基本文件访问接口,比如upload、download、append、delete等,以客户端库的方式提供给用户使用

Tracker集群
FastDFS集群中的Tracker server可以有多台,Tracker server之间是相互平等关系,同时提供服务

Trackerserver不存在单点故障。客户端请求Trackerserver采用轮询方式,如果请求的tracker无法提供服务则换另一个tracker

Storage server会连接集群中所有的Tracker server,定时向他们报告自己的状态,包括磁盘剩余空间、文件同步状况、文件上传下载次数等统计信息

Storage集群
为了支持大容量,storage server采用了分组的形式。存储系统由一个或多个group组成,group之间的文件是相互独立的,所有group内的文件容量累加就是整个存储系统中的文件容量

一个group内包含一台或多台storage server,group内的storage是平等关系,不同group内的storage不会相互通信,同group内的storage之间会相互连接进行文件同步,从而保证同group内的每个storage上的文件完全一致

在group中添加 storage时,系统会自动同步已有的文件系统,同步完成后,系统自动将新增storage到线上提供服务。当存储空间不足或者即将耗尽时,可以动态添加group。只需要增加一台或多台storage并将它们配置到同一个group内就行

FastDFS初始化过程

在这里插入图片描述

FastDFS文件操作

1.上传

FastDFS向使用者提供基本文件访问接口,比如upload、download、append、delete等,以客户端库的方式提供给用户使用

当tracker收到客户端上传文件的请求时,会为该文件分配一个可以存储文件的group,当选定了group后就要决定给客户端分配group中哪一个storage

分配好storage后,将客户端请求分发到指定storage上,storage会为文件分配一个数据存储目录然后为文件分配一个fileid,最后根据以上的信息生成文件名存储文件,Storage将文件写入磁盘后,会返回路径信息给客户端,客户端就可以根据这个路径信息找到上传的文件

在这里插入图片描述

2.下载

Storage会定时的向Tracker安装发送心跳,告诉Tracker自己还还活着,这样Fastdfs就可以工作了

客户端发送下载请求到Tracker上,Tracker查找到存储的Storage地址后返回给客户端

客户端拿到Storage地址后,去Storage上找到文件

Storage把文件返回给客户端

group1/M00/02/44/Swtdssdsdfsdf.txt

1.通过组名tracker能够很快的定位到客户端需要访问的存储服务器组是group1,并选择合适的storage提供客户端访问。
2.storage根据“文件存储虚拟磁盘路径”和“数据文件两级目录”可以很快定位到文件所在目录,并根据文件名找到客户端需要访问的文件。

在这里插入图片描述

拓展模块

在大多数业务场景中,往往需要为FastDFS存储的文件提供http下载服务,而尽管FastDFS在其storage及tracker都内置了http服务, 但性能表现却不尽如人意;

作者余庆在后来的版本中增加了基于当前主流web服务器(nginx/apache)的扩展模块,其用意在于利用web服务器直接对本机storage数据文件提供http服务,以提高文件下载的性能

在这里插入图片描述
在每一台storage服务器主机上部署Nginx及FastDFS扩展模块,由Nginx模块对storage存储的文件提供http下载服务, 仅当当前storage节点找不到文件时会向源storage主机发起redirect或proxy动作

例如:文件上传至节点A,但是通过负载均衡之后,访问了节点B,则不能访问文件,所以会出现时而能访问时而不能访问的结果,而FastDFS扩展模块就可以解决这个问题,它会发起重定向或者代理的动作

文件下载过程
在这里插入图片描述

单机部署

单机:192.168.149.131
注:一定要先启动Tracker,在启动Storage

包目录:/usr/local/

需要安装的包

1.libfatscommon:FastDFS分离出的一些公用函数包
2.FastDFS:FastDFS本体
3.fastdfs-nginx-module:FastDFS和nginx的关联模块
4.nginx:发布访问服务

  • 安装编译环境
yum -y install gcc pcre-devel  zlib-devel openssl-devel libxml2-devel \
libxslt-devel gd-devel GeoIP-devel jemalloc-devel libatomic_ops-devel \
perl-devel  perl-ExtUtils-Embed git gcc gcc-c++ make automake autoconf libtool pcre pcre-devel zlib zlib-devel openssl-devel

  • 安装相关包
#创建包目录
mkdir /usr/local/fastdfs
cd /usr/local/fastdfs

wget --no-check-certificate https://github.com/happyfish100/libfastcommon/archive/refs/heads/master.zip -O libfastcommon-master.zip

wget --no-check-certificate https://github.com/happyfish100/fastdfs/archive/refs/heads/master.zip -O fastdfs.zip

wget --no-check-certificate https://github.com/happyfish100/fastdfs-nginx-module/archive/refs/heads/master.zip -O fastdfs-nginx-module.zip

unzip libfastcommon-master.zip
unzip fastdfs.zip
unzip fastdfs-nginx-module.zip

rm -rf *.zip

  • 编译安装
cd /usr/local/fastdfs/libfastcommon-master && sh make.sh clean && sh make.sh && sh make.sh install

cd /usr/local/fastdfs/fastdfs-master && sh make.sh clean && sh make.sh && sh make.sh install

cd /usr/local/fastdfs/fastdfs-master && sh setup.sh /etc/fdfs

  • 配置文件更新
cp -r -a /usr/local/fastdfs/fastdfs-master/conf/* /etc/fdfs

cp -r -a /usr/local/fastdfs/fastdfs-master/systemd/* /usr/lib/systemd/system

  • tracker和storage配置
#创建工作目录
mkdir /opt/fdfs/{tracker,storage,client} -pv && mkdir /opt/fdfs/storage/data

#切换目录
cd /etc/fdfs/

##tracker文件配置和修改启动服务配置
cp tracker.conf tracker.conf.bak
vim tracker.conf
base_path = /opt/fdfs/tracker

vim /usr/lib/systemd/system/fdfs_trackerd.service
PIDFile=/opt/fdfs/tracker/data/fdfs_trackerd.pid

##storage文件配置和修改启动服务配置
cp storage.conf storage.conf.bak
vim storage.conf
group_name =group1
base_path = /opt/fdfs/storage
store_path0 = /opt/fdfs/storage/data
tracker_server =192.168.149.131:22122
http.server_port =8888

vim /usr/lib/systemd/system/fdfs_storaged.service
PIDFile=/opt/fdfs/storage/data/fdfs_storaged.pid

#client配置
cp client.conf client.conf.bak
vim client.conf
base_path = /opt/fdfs/client
tracker_server =192.168.149.131:22122

#重新加载启动服务
systemctl daemon-reload

#启动服务
systemctl start fdfs_trackerd
systemctl start fdfs_storaged

# 建立fdfs快捷命令
alias fdfs\_delete\_file='fdfs\_delete\_file /etc/fdfs/client.conf'
alias fdfs\_download\_file='fdfs\_download\_file /etc/fdfs/client.conf'
alias fdfs\_file\_info='fdfs\_file\_info /etc/fdfs/client.conf'
alias fdfs\_monitor='fdfs\_monitor /etc/fdfs/client.conf'
alias fdfs\_upload\_file='fdfs\_upload\_file /etc/fdfs/client.conf'
alias fdfs\_test='fdfs\_test /etc/fdfs/client.conf'

  • 验证
fdfs_upload_file 1.jpg
group1/M00/00/00/wKiVg2L8Uq6AO3LzAADZ-GROavg913.jpg

1.Nginx外部访问

fastdfs 安装好以后是无法通过 http 访问的,这个时候就需要借助 Nginx 了,所以需要安装 fastdfs 的第三方模块到 Nginx 中,就能使用了

  • 安装Nginx
cd /usr/local/
wget http://nginx.org/download/nginx-1.15.4.tar.gz
![](https://img-blog.csdnimg.cn/img_convert/9a8cb5f8c0ec69e6499adead0da6e95b.png)



最全的Linux教程,Linux从入门到精通

======================

1.  **linux从入门到精通(第2版)**

2.  **Linux系统移植**

3.  **Linux驱动开发入门与实战**

4.  **LINUX 系统移植 第2版**

5.  **Linux开源网络全栈详解 从DPDK到OpenFlow**



![华为18级工程师呕心沥血撰写3000页Linux学习笔记教程](https://img-blog.csdnimg.cn/img_convert/59742364bb1338737fe2d315a9e2ec54.png)



第一份《Linux从入门到精通》466页

====================

内容简介

====

本书是获得了很多读者好评的Linux经典畅销书**《Linux从入门到精通》的第2版**。本书第1版出版后曾经多次印刷,并被51CTO读书频道评为“最受读者喜爱的原创IT技术图书奖”。本书第﹖版以最新的Ubuntu 12.04为版本,循序渐进地向读者介绍了Linux 的基础应用、系统管理、网络应用、娱乐和办公、程序开发、服务器配置、系统安全等。本书附带1张光盘,内容为本书配套多媒体教学视频。另外,本书还为读者提供了大量的Linux学习资料和Ubuntu安装镜像文件,供读者免费下载。



![华为18级工程师呕心沥血撰写3000页Linux学习笔记教程](https://img-blog.csdnimg.cn/img_convert/9d4aefb6a92edea27b825e59aa1f2c54.png)



**本书适合广大Linux初中级用户、开源软件爱好者和大专院校的学生阅读,同时也非常适合准备从事Linux平台开发的各类人员。**

> 需要《Linux入门到精通》、《linux系统移植》、《Linux驱动开发入门实战》、《Linux开源网络全栈》电子书籍及教程的工程师朋友们劳烦您转发+评论




**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**

**[需要这份系统化的资料的朋友,可以点击这里获取!](https://bbs.csdn.net/topics/618542503)**

**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**
  • 18
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值