当前位置:   article > 正文

FastDFS的安装与配置_faissstore 没有配置吗

faissstore 没有配置吗

一、FastDFS介绍

FastDFS开源地址

1、简介

FastDFS 是一个开源的高性能分布式文件系统(DFS)。 它的主要功能包括:文件存储,文件同步和文件访问,以及高容量和负载平衡。主要解决了海量数据存储问题,特别适合以中小文件(建议范围:4KB < file_size <500MB)为载体的在线服务。

FastDFS 系统有三个角色:跟踪服务器(Tracker Server)、存储服务器(Storage Server)和客户端(Client)。

Tracker Server:跟踪服务器,主要做调度工作,起到均衡的作用;负责管理所有的 storage server和 group,每个 storage 在启动后会连接 Tracker,告知自己所属 group 等信息,并保持周期性心跳。

Storage Server:存储服务器,主要提供容量和备份服务;以 group 为单位,每个 group 内可以有多台 storage server,数据互为备份。

Client:客户端,上传下载数据的服务器,也就是我们自己的项目所部署在的服务器。
在这里插入图片描述

2、FastDFS的存储策略

为了支持大容量,存储节点(服务器)采用了分卷(或分组)的组织方式。存储系统由一个或多个卷组成,卷与卷之间的文件是相互独立的,所有卷的文件容量累加就是整个存储系统中的文件容量。一个卷可以由一台或多台存储服务器组成,一个卷下的存储服务器中的文件都是相同的,卷中的多台存储服务器起到了冗余备份和负载均衡的作用。

在卷中增加服务器时,同步已有的文件由系统自动完成,同步完成后,系统自动将新增服务器切换到线上提供服务。当存储空间不足或即将耗尽时,可以动态添加卷。只需要增加一台或多台服务器,并将它们配置为一个新的卷,这样就扩大了存储系统的容量。

3、FastDFS的上传过程

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

Storage Server会定期的向Tracker Server发送自己的存储信息。当Tracker Server Cluster中的Tracker Server不止一个时,各个Tracker之间的关系是对等的,所以客户端上传时可以选择任意一个Tracker。

当Tracker收到客户端上传文件的请求时,会为该文件分配一个可以存储文件的group,当选定了group后就要决定给客户端分配group中的哪一个storage server。当分配好storage server后,客户端向storage发送写文件请求,storage将会为文件分配一个数据存储目录。然后为文件分配一个fileid,最后根据以上的信息生成文件名存储文件。
在这里插入图片描述

4、FastDFS的文件同步

写文件时,客户端将文件写至group内一个storage server即认为写文件成功,storage server写完文件后,会由后台线程将文件同步至同group内其他的storage server。

每个storage写文件后,同时会写一份binlog,binlog里不包含文件数据,只包含文件名等元信息,这份binlog用于后台同步,storage会记录向group内其他storage同步的进度,以便重启后能接上次的进度继续同步;进度以时间戳的方式进行记录,所以最好能保证集群内所有server的时钟保持同步。

storage的同步进度会作为元数据的一部分汇报到tracker上,tracke在选择读storage的时候会以同步进度作为参考。

5、FastDFS的文件下载

客户端uploadfile成功后,会拿到一个storage生成的文件名,接下来客户端根据这个文件名即可访问到该文件。
在这里插入图片描述
跟upload file一样,在downloadfile时客户端可以选择任意tracker server。tracker发送download请求给某个tracker,必须带上文件名信息,tracke从文件名中解析出文件的group、大小、创建时间等信息,然后为该请求选择一个storage用来服务读请求。

二、安装FastDFS环境

1、在开源社区下载以下文件:

在这里插入图片描述
为避免出现版本不兼容问题,此处的文件均使用最新版本!
下载完成后一次将这些压缩包上传至服务器的指定目录(随意)下,本案例是放到/etc/local目录下,本案例系统环境为CenterOS 64位!
在这里插入图片描述

2、安装perl

yum -y install perl
  • 1

3、安装gcc

yum install gcc-c++
  • 1

4、安装libfastcommon

使用unzip命令解压libfastcommon-master.zip并编译安装:

unzip libfastcommon-master.zip # 解压
cd libfastcommon-master # 进入libfastcommon-master目录下
./make.sh # 编译
./make.sh install # 安装
  • 1
  • 2
  • 3
  • 4

5、安装FastDFS

使用unzip命令解压fastdfs-master.zip并编译安装:

unzip fastdfs-master.zip # 解压
cd fastdfs-master # 进入libfastcommon-master目录下
./make.sh # 编译
./make.sh install # 安装
  • 1
  • 2
  • 3
  • 4

6、拷贝配置文件

将fastdfs安装目录下的conf下的文件拷贝到/etc/fdfs/下

cp -r conf/* /etc/fdfs/
  • 1

7、查看fdfs可执行命令

ll /usr/bin/fdfs*
  • 1

在这里插入图片描述

三、FastDFS配置

1、配置本地域名解析:

配置本地域名解析的目的是因为后边的配置文件中常用到ip,如果ip变了,则需要对每一个配置文件都修改!配置本地域名解析,就可以达到一次修改,全部通用的目的!配置如下:

vim /etc/hosts
在文件中加入:
192.168.1.135 file.test.com
  • 1
  • 2
  • 3

2、配置并启动trackerd(跟踪服务器)

  1. 创建trackerd数据、日志目录
mkdir -p /etc/local/data/fastdfs
  • 1
  1. 修改trackerd.conf
cd /etc/fdfs/
vim tracker.conf
# the base path to store data and log files
将base_path=/home/yuqing/fastdfs
改成
base_path=/etc/local/data/fastdfs
// 修改服务端口
http.server_port=80
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  1. 启动trackerd
/usr/bin/fdfs_trackerd tracker.conf restart
  • 1
  1. 查看trackerd进程,判断是否启动成功
ps -ef|grep trackerd
  • 1

如下图表示启动成功:
在这里插入图片描述
5. 设置Tracker开机启动

chkconfig fdfs_trackerd on
或者:
vim /etc/rc.d/rc.local
加入配置:
/etc/init.d/fdfs_trackerd start 
  • 1
  • 2
  • 3
  • 4
  • 5

3、配置并启动storaged(存储服务器)

  1. 新建目录
mkdir /etc/local/data/fastdfs/storage
  • 1
  1. 修改storage.conf
// 编辑storage.conf
vim storage.conf

将base_path=/home/yuqing/fastdfs
改为
base_path=/etc/local/data/fastdfs

将store_path0=/home/yuqing/fastdfs
改为
store_path0=/etc/local/data/fastdfs/storage

将tracker_server=192.168.209.121:22122
改为
tracker_server=file.test.com:22122 (ip改成自己的)

// 修改服务端口
http.server_port=80
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  1. 启动storaged
/usr/bin/fdfs_storaged /etc/fdfs/storage.conf restart
  • 1
  1. 查看trackerd进程,判断是否启动成功
ps -ef|grep storage
  • 1

如下图表示启动成功:
在这里插入图片描述
3. 设置 Storage 开机启动

chkconfig fdfs_storaged on
或者:
vim /etc/rc.d/rc.local
加入配置:
/etc/init.d/fdfs_storaged start
  • 1
  • 2
  • 3
  • 4
  • 5

4、配置防火墙放行端口

// 添加端口
firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --zone=public --add-port=8080/tcp --permanent
firewall-cmd --zone=public --add-port=22122/tcp --permanent
firewall-cmd --zone=public --add-port=23000/tcp --permanent
// 重启防火墙
firewall-cmd --reload
// 查看结果
firewall-cmd --zone=public --list-ports
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

如下图证明放行成功:
在这里插入图片描述

四、图片上传测试

解压:fastdfs-client-java-master.zip(本地解压)
解压后将工程导入IDE工具中,本案例使用Eclipse!

  1. 新建测试类FastdfsClientTest
    在这里插入图片描述
    代码:
package com.lee.fastdfs.test;

import org.csource.common.NameValuePair;
import org.csource.fastdfs.*;
import org.junit.Test;

import java.io.FileNotFoundException;
import java.io.IOException;

public class FastdfsClientTest {

    //客户端配置文件
    public String conf_filename = "fdfs_client.conf";
    //本地文件,要上传的文件
    // C:\\Users\\Administrator\\Pictures\\img\\20190626111759_294.jpg
//    public String local_filename = "G:\\IdeaProjects\\fastdfs\\src\\main\\resources\\mygirl.jpg";
    public String local_filename = "C:\\Users\\Administrator\\Pictures\\img\\20190626111759_294.jpg";

    //上传文件
    @Test
    public void testUpload() {

        for(int i=0;i<10;i++){

            try {
                ClientGlobal.init(conf_filename);

                TrackerClient tracker = new TrackerClient();
                TrackerServer trackerServer = tracker.getConnection();
                StorageServer storageServer = null;

                StorageClient storageClient = new StorageClient(trackerServer,
                        storageServer);
                NameValuePair nvp [] = new NameValuePair[]{
                        new NameValuePair("item_id", "100010"),
                        new NameValuePair("width", "80"),
                        new NameValuePair("height", "90")
                };
                String fileIds[] = storageClient.upload_file(local_filename, null,
                        nvp);

                System.out.println(fileIds.length);
                System.out.println("组名:" + fileIds[0]);
                System.out.println("路径: " + fileIds[1]);

            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  1. 修改sources下的以下两个配置文件:
    fdfs_client.conf
connect_timeout = 2
network_timeout = 30
charset = UTF-8
http.tracker_http_port = 80
http.anti_steal_token = no
http.secret_key = FastDFS1234567890

tracker_server = file.test.com:22122
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

fastdfs-client.properties

## fastdfs-client.properties

fastdfs.connect_timeout_in_seconds = 5
fastdfs.network_timeout_in_seconds = 30

fastdfs.charset = UTF-8

fastdfs.http_anti_steal_token = false
fastdfs.http_secret_key = FastDFS1234567890
fastdfs.http_tracker_http_port = 80

fastdfs.tracker_servers = file.test.com:22122
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

其中ip均为你配置FastDFS时设置好的ip!

通过Junit测试得下图:
在这里插入图片描述回到服务器端通过以下命令查看是否上传成功:

cd /etc/local/data/fastdfs/storage/data/00/00
  • 1

如下图则上传成功:
在这里插入图片描述

五、整合FastDFS 和nginx

1、安装fastdfs-nginx-module

// 解压fastdfs-nginx-module-master.zip
unzip fastdfs-nginx-module-master.zip

// 进入fastdfs-nginx-module-master
cd fastdfs-nginx-module-master/src

// 拷贝配置文件
cp mod_fastdfs.conf /etc/fdfs/

// 进入fdfs目录
cd /etc/fdfs/

// 编辑mod_fastdfs.conf配置文件
vim mod_fastdfs.conf

// 超时时间
connect_timeout=10

将base_path=/tmp
改成:
base_path=/etc/local/data/fastdfs

将tracker_server=tracker:22122
改成:
tracker_server=file.test.com:22122

将url_have_group_name = false
改成:
url_have_group_name = true;#url中包含group名称

将store_path0=/home/yuqing/fastdfs
改成:
store_path0=/etc/local/data/fastdfs/storage
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33

2、安装nginx

nginx的下载可前往官网:http://nginx.org/,下载后将压缩包上传至/etc/local目录下!

  1. nginx依赖包安装
cd /opt
yum -y install zlib zlib-devel openssl openssl--devel pcre pcre-devel
  • 1
  • 2
  1. 安装nginx
// 解压nginx-1.16.0.tar.gz
tar -zxvf nginx-1.16.0.tar.gz
  • 1
  • 2
  1. 安装nginx并添加fastdfs模块
cd nginx-1.16.0
./configure --prefix=/etc/local/nginx --add-module=/etc/local/fastdfs-nginx-module-master/src
// 编译
make
// 安装
make install
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

查看是否把fastdfs模块添加进去了?

cd /etc/local/nginx/sbin
./nginx -v
  • 1
  • 2

如果结果如下图则证明添加成功:
在这里插入图片描述
4. 配置nginx配置文件

cd /etc/local/nginx/conf
// 新建一个配置文件
vim nginx-fdfs.conf
  • 1
  • 2
  • 3

内容如下:

events {
    use epoll;

    worker_connections  1024;
}
http {
    server {
        listen 80;
        server_name  file.test.com;

        location /group1/M00/{
                #root /home/FastDFS/fdfs_storage/data;
                ngx_fastdfs_module;
        }
    }
    server {
        listen 80;
        server_name file.test.com;
        location / {
            root   html;
            index  index.html index.htm;
        }
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24

注意:ip地址需要更换成自己的!

  1. 启动nginx
cd  /etc/local/nginx/sbin/
./nginx -c /etc/local/nginx/conf/nginx-fdfs.conf
  • 1
  • 2

启动后如图所示:
在这里插入图片描述

3、图片访问测试

在这里插入图片描述至此,本教程的所有配置结束,如果亲们有发现什么不对的地方,还请多多指正!

参考资料

1、用FastDFS一步步搭建文件管理系统:https://www.cnblogs.com/chiangchou/p/fastdfs.html#_label0_0
2、详细的最新版fastdfs单机版搭建:https://www.cnblogs.com/youzhibing/p/9160690.html

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/875043
推荐阅读
相关标签
  

闽ICP备14008679号