Linux之Fastdfs

Fastdfs

简介

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

架构

Fastdfs由两部件组成

Tracker server

  • 其主要用来做负载均衡以及调度
  • 客户端通过Tracker server的策略找到Storage server进行文件的上传下载

Storage server

  • 客户端通过Tracker server上传的文件最终保存到Storage server中
  • Storage server没有自己的文件系统而是利用操作系统进行文件存储

Linux之Fastdfs

服务端角色

Tracker

其可以组件集群用来检测 每个Tracker节点地位平等 通过Tracker检测Storage节点状态

Storage

Storage之间可以组件集群 集群可以分多个组 每个组之间的信息不同 但是组内成员的信息相同 组成员地位一致无主从概念之分

Fastdfs交互信息

上传文件

  • 客户端上传文件给服务器之后 服务器返回一个ID给客户端 客户端通过ID中的文件索引来访问存储在服务端的数据
  • 文件索引:组号 虚拟磁盘路径 数据两级目录 文件名
组名:文件上传后所在的 storage 组名称,在文件上传成功后有 storage 服务器返回, 需要客户端自行保存。 
虚拟磁盘路径:storage 配置的虚拟路径,与磁盘选项 store_path*对应。如果配置了 store_path0 则是 M00,如果配置了 store_path1 则是 M01,以此类推。 
数据两级目录:storage 服务器在每个虚拟磁盘路径下创建的两级目录,用于存储数据 文件。 
文件名:与文件上传时不同。是由存储服务器根据特定信息生成,文件名包含:源存储 服务器 IP 地址、文件创建时间戳、文件大小、随机数和文件拓展名等信息。 

Linux之Fastdfs

文件下载

  • 客户端通过tracker端返回的storage的IP去寻找storage
  • 通过生成的ID去向服务端进行文件查找
  • 服务端通过ID返回对应的数据

Linux之Fastdfs

Fastdfs配置

依赖包下载

[root@SR~]# wget -c http://nginx.org/download/nginx-1.17.7.tar.gz  # 下载nginx

[root@SR~]#  wget -c "https://github.com/happyfish100/fastdfs/archive/V6.06.tar.gz" -O fastdfs-6.06.tar.gz # 下载fastdfs

[root@SR~]#  wget -c "https://github.com/happyfish100/fastdfs-nginx-module/archive/V1.22.tar.gz" -O fastdfs-nginx-module-1.22.tar.gz # 下载 fastdfs-nginx-module

[root@SR~]#  wget -c "https://github.com/happyfish100/libfastcommon/archive/V1.0.43.tar.gz" -O libfastcommon-1.0.43.tar.gz  # 下载 libfastcommon

[root@SR ~]# yum -y install make zlib zlib-devel gcc-c++ libtool  openssl openssl-devel  # 下载编译包

解压

[root@SR ~]# tar -xf fastdfs-6.06.tar.gz
[root@SR ~]# tar -xf fastdfs-nginx-module-1.22.tar.gz
[root@SR ~]# tar -xf libfastcommon-1.0.43.tar.gz
[root@SR ~]# tar -xf nginx-1.17.7.tar.gz

编译安装libfastcommon

[root@SR ~]# cd libfastcommon-1.0.43/
[root@SR libfastcommon-1.0.43]# ./make.sh && ./make.sh install # 编译安装
[root@SR libfastcommon-1.0.43]# ls /usr/lib64/ | grep libfastcommon      # 检测安装是否成功

[root@SR libfastcommon-1.0.43]# ls /usr/lib/ | grep libfastcommon

Linux之Fastdfs

配置fastdfs

编译安装


[root@SR fastdfs-6.06]# cd fastdfs-6.06/

[root@SR fastdfs-6.06]# ./make.sh && ./make.sh install

[root@SR fastdfs-6.06]# ls /usr/bin|grep fdfs

Linux之Fastdfs

启用配置文件

[root@SR fdfs]# cd /etc/fdfs/      # 切换到fdfs目录
# 配置文件做备份
[root@SR fdfs]# cp client.conf.sample client.conf
[root@SR fdfs]# cp storage.conf.sample storage.conf
[root@SR fdfs]# cp tracker.conf.sample tracker.conf

修改tracker.conf配置文件

[root@SR fdfs]# mkdir -p /usr/bin/python3.6/fastdfs/tracker
[root@SR fdfs]# vim tracker.conf
      base_path=/usr/bin/python3.6/fastdfs/tracker      # 修改该目录为上述对应tracker目录

启动tracker

[root@SR fdfs]# /etc/init.d/fdfs_trackerd start      # 启动服务

[root@SR fdfs]# ps -ef|grep fdfs      # 检测启动状态

修改storage.conf配置文件


[root@SR fdfs]# mkdir -p /usr/bin/python3.6/fastdfs/storage

[root@SR fdfs]# vim storage.conf
      base_path=/usr/bin/python3.6/fastdfs/storage
      store_path0=/usr/bin/python3.6/fastdfs/storage
      tracker_server=192.168.1.104:22122

启动storage

[root@SR fdfs]# /etc/init.d/fdfs_storaged start

[root@SR fdfs]# ps -ef | grep fdfs

Linux之Fastdfs

修改client.conf配置文件

[root@SR fdfs]# vim client.conf
      base_path=/usr/bin/python3.6/fastdfs/tracker      
      tracker_server=192.168.1.104:22122

使用方式

[root@SR ~]# fdfs_upload_file /etc/fdfs/client.conf /root/springboot.jpg

Linux之Fastdfs

nginx

安装依赖包

[root@SR ~]# yum -y install pcre pcre-devel

添加模块

[root@SR ~]# cd nginx-1.17.7/
[root@SR nginx-1.17.7]# ./configure --prefix=/usr/local/nginx --with-http_stub_status_module

fastdfs-nginx-module-1.22配置

[root@SR ~]# cd /root/fastdfs-nginx-module-1.22/src/
[root@SR src]# cp config config.bak      #备份配置问

修改配置文件

[root@SR src]# vim config
      :%s+/usr/local+/usr      # 将config文件中的/usr/local替换成/usr

nginx添加模块

[root@SR nginx-1.17.7]# ./configure --add-module=/root/fastdfs-nginx-module-1.22/src/   # fastdfs-nginx-module-1.22/src 中src所在的路径
[root@SR nginx-1.17.7]#  make && make install      # 编译安装

修改fastdfs-ngin-module中的配置文件

[root@SR nginx-1.17.7]# cp /root/fastdfs-nginx-module-1.22/src/mod_fastdfs.conf /etc/fdfs/
[root@SR nginx-1.17.7]# vim /etc/fdfs/mod_fastdfs.conf
      connect_timeout=10
      tracker_server=192.168.1.104:22122
      url_have_group_name = true
      store_path0=/usr/bin/python3.6/fastdfs/storage

复制fastdfd

[root@SR ~]#  cp /root/fastdfs-6.06/conf/http.conf /etc/fdfs/
[root@SR ~]#  cp /root/fastdfs-6.06/conf/mime.types /etc/fdfs/

修改nginx配置文件

[root@SR fdfs]# cd /usr/local/nginx/conf/

[root@SR conf]# cp nginx.conf nginx.conf.bak      # 备份配置文件

[root@SR conf]# vim nginx.conf      # 修改配置文件

server {
    listen       80;
    server_name  192.168.1.104;
    location ~/group([0-9]) {
            root  /fastdfs/storage/data;
            ngx_fastdfs_module;
    }
}
[root@SR ~]# /usr/local/nginx/sbin/nginx      # 启动nginx

设置开机启动服务

[root@SR fdfs]# vim /etc/rc.d/rc.local

      /usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf restart      
      /usr/bin/fdfs_storaged /etc/fdfs/storage.conf restart
      /usr/local/nginx/sbin/nginx
[root@SR ~]# chmod +x /etc/rc.d/rc.local       # 给予执行权限

Linux之Fastdfs

原文链接: https://www.cnblogs.com/SR-Program/p/13268479.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍;

也有高质量的技术群,里面有嵌入式、搜广推等BAT大佬

    Linux之Fastdfs

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/364008

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年3月2日 下午3:19
下一篇 2023年3月2日 下午3:19

相关推荐