分布式文件系统FastDFS在CentOS7上的安装及与Springboot的整合

1. 概述

FastDFS 是目前比较流行的分布式文件系统,可以很容易的实现横向扩展、动态扩容、灾备、高可用和负载均衡。

FastDFS 的服务分为 tracker 服务 和 storage 服务, tracker 服务负责管理,storage 服务负责存储。

FastDFS 的存储节点有分卷(分组)的概念,不同分卷的服务器数据不同,相当于分片,同一分卷中的服务器数据相同,相当于副本,从而实现负载均衡。

今天我们就来聊一聊FastDFS在CentOS7上是如何安装,以及如何与Springboot整合的。

2. 场景说明

服务器A IP:192.168.1.22

服务器B IP:192.168.1.8

在服务器A安装 FastDFS 的 tracker (管理)

在服务器B安装 FastDFS 的 storage(存储)

3. FastDFS在CentOS7上的安装

3.1 下载 FastDFS 安装包

下载地址:https://github.com/happyfish100/fastdfs/releases

image

截图来自于GitHub

3.2 下载 libfastcommon 安装包

下载地址:https://github.com/happyfish100/libfastcommon/releases

image

截图来自于GitHub

3.3 下载 fastdfs-nginx-module 安装包

下载地址:https://github.com/happyfish100/fastdfs-nginx-module/releases

image

截图来自于GitHub

3.4 下载最新版本的Nginx安装包

下载地址:https://nginx.org/en/download.html

image

截图来自于官网

3.5 将下载的安装包统一拷贝到CentOS7的 /home 目录下

3.6 安装依赖包

# yum install -y gcc gcc-c++

# yum install -y libevent

# yum install -y perl

3.7 安装 libfastcommon

1)解压缩

# cd /home

# tar -zvxf libfastcommon-1.0.53.tar.gz

2)执行编译

# cd libfastcommon-1.0.53

# ./make.sh

3)执行安装

# ./make.sh install

3.8 安装 FastDFS

1)解压缩

# cd /home

# tar -zxvf fastdfs-6.07.tar.gz

2)执行编译

# cd fastdfs-6.07

# ./make.sh

3)执行安装

# ./make.sh install

3.9 拷贝配置文件模板

# cd /home/fastdfs-6.07/conf

# cp * /etc/fdfs/

3.10 3.5 到 3.9 的操作,服务器A、服务器B都要执行

3.11 在服务器A配置 tracker 服务

1)配置 tracker 服务

# cd /etc/fdfs/

# vi tracker.conf

image

2)创建工作目录

# mkdir -p /usr/local/fastdfs/tracker

3)启动 tracker 服务

# /usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf

3.12 在服务器B配置 storage 服务

1)配置 storage 服务

# cd /etc/fdfs/

# vi storage.conf

image
image
image

2)创建工作目录

# mkdir -p /usr/local/fastdfs/storage

3)启动 storage 服务

# /usr/bin/fdfs_storaged /etc/fdfs/storage.conf

3.13 命令行测试文件上传

1)修改 client 配置文件

# cd /etc/fdfs

# vi client.conf

image

2)创建目录

# mkdir -p /usr/local/fastdfs/client

3)测试文件上传

# /usr/bin/fdfs_test /etc/fdfs/client.conf upload 1.png

结果主要内容:

group_name=zhuifengren, remote_filename=M00/00/00/wKgBCGFOzh6AB7GRAABdyNYCZvQ876.png
source ip address: 192.168.1.8
file timestamp=2021-09-25 15:22:06
file size=24008
file crc32=3590481652
example file url: http://192.168.1.8/zhuifengren/M00/00/00/wKgBCGFOzh6AB7GRAABdyNYCZvQ876.png

4)在 storage 工作目录查看文件

# cd /usr/local/fastdfs/storage/data/00/00

# ll

-rw-r--r--. 1 root root 24008 Sep 25 15:22 wKgBCGFOzh6AB7GRAABdyNYCZvQ876_big.png
-rw-r--r--. 1 root root    49 Sep 25 15:22 wKgBCGFOzh6AB7GRAABdyNYCZvQ876_big.png-m
-rw-r--r--. 1 root root 24008 Sep 25 15:22 wKgBCGFOzh6AB7GRAABdyNYCZvQ876.png
-rw-r--r--. 1 root root    49 Sep 25 15:22 wKgBCGFOzh6AB7GRAABdyNYCZvQ876.png-m

3.14 安装并配置Nginx

Nginx 必须和 storage 安装在同一个节点上,才能通过Http的方式访问图片。

1)解压 fastdfs-nginx-module

# cd /home

# tar -zxvf fastdfs-nginx-module-1.22.tar.gz

2)修改 config 配置文件

# cd /home/fastdfs-nginx-module-1.22/src

# vi config

image

3)修改 mod_fastdfs.conf 配置文件

# cd /home/fastdfs-nginx-module-1.22/src

# cp mod_fastdfs.conf /etc/fdfs/

# mkdir -p /usr/local/fastdfs/tmp

# cd /etc/fdfs/

# vi mod_fastdfs.conf

image
image
image

4)安装Nginx 的依赖包

# yum install -y gcc-c++
# yum install -y pcre pcre-devel
# yum install -y zlib zlib-devel
# yum install -y openssl openssl-devel

5)解压Nginx

# cd /home

# tar -zxvf nginx-1.20.1.tar.gz

6)安装Nginx

# cd nginx-1.20.1

# ./configure
--prefix=/usr/local/nginx
--pid-path=/var/local/nginx/nginx.pid
--lock-path=/var/local/nginx/nginx.lock
--error-log-path=/var/local/nginx/error.log
--http-log-path=/var/local/nginx/access.log
--with-http_gzip_static_module
--http-client-body-temp-path=/var/local/nginx/client
--http-proxy-temp-path=/var/local/nginx/proxy
--http-fastcgi-temp-path=/var/local/nginx/fastcgi
--http-uwsgi-temp-path=/var/local/nginx/uwsgi
--http-scgi-temp-path=/var/local/nginx/scgi
--add-module=/home/fastdfs-nginx-module-1.22/src

# make

# make install

7)修改Nginx配置文件

# cd /usr/local/nginx/conf

# vi nginx.conf

server {
        listen          8888;     # 该端口为storage.conf中的http.server_port相同 
        server_name     localhost;
        
        location        /zhuifengren/M00 {
                ngx_fastdfs_module;
        }

    }

8)启动 Nginx

# cd /usr/local/nginx/sbin

# ./nginx

9)打开之前上传的图片

http://192.168.1.8:8888/zhuifengren/M00/00/00/wKgBCGFOzh6AB7GRAABdyNYCZvQ876.png

可以正常打开 :)

4. 与 Springboot 整合

4.1 引入依赖

        <dependency>
            <groupId>com.github.tobato</groupId>
            <artifactId>fastdfs-client</artifactId>
            <version>1.27.2</version>
        </dependency>

4.2 配置Springboot

打开 application.yml

fdfs:
  connect-timeout: 300  # 连接超时时间
  so-timeout: 300       # 读取超时时间
  tracker-list: 192.168.1.22:22122
  pool:
    max-total: 100   # 连接池最大数量
    max-total-per-key: 50  # 单个tracker最大连接数
    max-wait-millis: 5000 # 连接耗尽最大等待时间 毫秒

4.3 文件上传

@Autowired
    private FastFileStorageClient fastFileStorageClient;

    @Test
    public void upload() throws FileNotFoundException {

        File file = new File("C:\\tmp\\2.jpg");
        FileInputStream fileInputStream = new FileInputStream(file);

        StorePath storePath = fastFileStorageClient.uploadFile
                        (fileInputStream, file.length(), "jpg", null);

        System.out.println(JsonUtils.objectToJson(storePath));
    }

结果:

{
    "group": "zhuifengren",
    "path": "M00/00/00/wKgBCGFO7cqAPEqpAAIhUeJJR1c839.jpg",
    "fullPath": "zhuifengren/M00/00/00/wKgBCGFO7cqAPEqpAAIhUeJJR1c839.jpg"
}

5. 综述

今天聊了一下 分布式文件系统FastDFS在CentOS7上的安装及与Springboot的整合,希望可以对大家的工作有所帮助。

欢迎帮忙点赞、评论、转发、加关注 :)

关注追风人聊Java,每天更新Java干货。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,874评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,102评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,676评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,911评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,937评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,935评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,860评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,660评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,113评论 1 308
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,363评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,506评论 1 346
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,238评论 5 341
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,861评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,486评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,674评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,513评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,426评论 2 352

推荐阅读更多精彩内容