分布式文件存储FastDFS的安装

简介: fastDFS架构包括 Tracker server和Storage server。客户端请求Tracker server进行文件上传、下载,通过Trackerserver调度最终由Storage server完成文件上传和下载。

FastDFS原理简介

Trackerserver作用是负载均衡和调度,通过Trackerserver在文件上传时可以根据一些策略找到Storageserver提供文件上传服务。可以将tracker称为追踪服务器或调度服务器。
Storageserver作用是文件存储,客户端上传的文件最终存储在Storage服务器上,Storage server没有实现自己的文件系统而是利用操作系统 的文件系统来管理文件。可以将storage称为存储服务器。
在这里插入图片描述

通信原理
在这里插入图片描述

FastDFS搭建

下载libfastcommon、fastdfs、fastdfs-nginx-module
cd /root/
wget https://github.com/happyfish100/libfastcommon/archive/V1.0.39.tar.gz -SO libfastcommon.tar.gz
wget https://github.com/happyfish100/fastdfs/archive/V5.11.tar.gz -SO fastdfs.tar.gz
wget https://github.com/happyfish100/fastdfs-nginx-module/archive/V1.20.tar.gz -SO fastdfs-nginx-module.tar.gz
解压
tar -zxf fastdfs.tar.gz
tar -zxf fastdfs-nginx-module.tar.gz
tar -zxf libfastcommon.tar.gz

注意:安装前检查Linux上是否安装了 gcc、libevent、libevent-devel
yum list installed | grep gcc
yum list installed | grep libevent
yum list installed | grep libevent-devel
如果没有安装,则进行安装
yum install gcc libevent libevent-devel –y

安装libfastcommon
cd libfastcommon-1.0.39
./make.sh
./make.sh install

安装fastdfs
cd fastdfs-5.11
./make.sh
./make.sh install

安装好后,程序是在/usr/bin/目录下![在这里插入图片描述]
在这里插入图片描述
配置文件在/etc/fdfs目录下:
在这里插入图片描述
但是在刚刚安装完成fastdfs后,/etc/fdfs目录下的配置文件并不是这些,配置文件是不全的。
刚开始只存在这四个配置文件

client.conf.sample
storage_ids.conf.sample
tracker.conf.sample
storage.conf.sample

且这4个配置文件都是模板文件,所以配置文需要从fastdfs包中拷贝过来

cd /root/fastdfs-5.11/conf
cp /root/fastdfs-5.11/conf/* /etc/fdfs
cp /root/fastdfs-nginx-module-1.20/src/mod_fastdfs.conf /etc/fdfs

修改配置文件
1.修改/etc/fdfs/tracker.conf
必改项:base_path (tracker的存储数据的目录,手动创建该目录)
(这里我修改的路径是/home/fastdfs/tracker)
在这里插入图片描述
2.修改/etc/fdfs/storage.conf
横向扩展:多个storage配置基本一致,变更group_name即可
纵向扩展:如果有多个挂载磁盘,定义多个store_path即可
修改项:
group_name(可以不修改,看个人需要)
base_path(storage存储数据目录,手动创建该目录)
store_path0 ( 真正存放文件的目录,手动创建该目录)
tracker_server (当前存储节点的调度器地址,可以修改为自己的ip)
在这里插入图片描述
在这里插入图片描述
3.修改/etc/fdfs/client.conf
修改项:
base_path(目录需要手动创建)
tracker_server
在这里插入图片描述
4.测试文件上传
自行准备需要上传的文件

[root@itcast /]# fdfs_test /etc/fdfs/client.conf upload hello.txt
This is FastDFS client test program v5.11
Copyright © 2008, Happy Fish / YuQing
FastDFS may be copied only under the terms of the GNU General
Public License V3, which may be found in the FastDFS source kit.
Please visit the FastDFS Home Page http://www.csource.org/
for more detail.
[2023-04-04 04:08:42] DEBUG - base_path=/home/fastdfs/client, connect_timeout=30, network_timeout=60, tracker_server_count=1, anti_steal_token=0, anti_steal_secret_key length=0, use_connection_pool=0, g_connection_pool_max_idle_time=3600s, use_storage_id=0, storage server id count: 0
tracker_query_storage_store_list_without_group:
server 1. group_name=, ip_addr=192.168.200.160, port=23000
group_name=video, ip_addr=192.168.200.160, port=23000
storage_upload_by_filename
group_name=video, remote_filename=M00/00/00/wKjIoGQrMkqAFgYTAAAADlfLRF8202.txt
source ip address: 192.168.200.160
file timestamp=2023-04-04 04:08:42
file size=14
file crc32=1472939103
example file url: http://192.168.200.160/video/M00/00/00/wKjIoGQrMkqAFgYTAAAADlfLRF8202.txt
storage_upload_slave_by_filename
group_name=video, remote_filename=M00/00/00/wKjIoGQrMkqAFgYTAAAADlfLRF8202_big.txt
source ip address: 192.168.200.160
file timestamp=2023-04-04 04:08:42
file size=14
file crc32=1472939103
example file url: http://192.168.200.160/video/M00/00/00/wKjIoGQrMkqAFgYTAAAADlfLRF8202_big.txt

到存储目录查看文件上传情况(这里需要进入自己设置的目录)
在这里插入图片描述

分布式文件系统FastDFS的HTTP访问

在文件上传的时候,上传成功的信息中有提示我们可以通过某个路径去访问上传的文件,但是我们直接访问这个路径,却不可以,那么已经上传到FastDFS文件系统中的文件,我们如何在浏览器中访问呢? FastDFS提供了一个Nginx扩展模块,利用该模块,我们可以通过Nginx访问已经上传到FastDFS上的文件
前期准备

1.首先就是准备FastDFS的nginx扩展模块 在上一部分其实都已经将扩展模块 fastdfs-nginx-module.tar.gz下载了下来并且都已经解压过

安装nginx并对其添加FastDFS模块

安装nginx前需要安装的几个库,否则编译会出错
yum install gcc openssl openssl-devel pcre pcre-devel zlib zlib-devel –y

1.下载nginx
wget https://nginx.org/download/nginx-1.16.1.tar.gz
2.解压
tar -zxf nginx-1.16.1.tar.gz
3.切换主目录 执行配置操作
./configure --prefix=/usr/local/nginx_fdfs --add-module=/root/fastdfs-nginx-module/src
(1)–prefix是指定nginx安装路径
(2)–add-module指定fastDFS的nginx模块的源代码路径
4. 执行命令进行编译
make
5.执行命令进行安装
make install

相信有些小伙伴在上述步骤4中会出错
“ fatal error: common_define.h: No such file or directory ”

原因是因为在安装FastDFS的时候,其中的函数声明、宏定义、函数原型被指到了 “ /usr/include/fastdfs /usr/include/fastcommon ” 目录下,而Nginx的扩展模块配置文件默认指定的目录为 “ /usr/include ”,找不到文件,才导致的上面的错误。
解决方法:
找到自己fastdfs的nginx扩展模块。进行编辑。以我的为例:
vim /root/fastdfs-nginx-module/src/config
进行如下修改
ngx_module_incs=“/usr/include/fastdfs /usr/include/fastcommon/”
CORE_INCS=“$CORE_INCS /usr/include/fastdfs /usr/include/fastcommon/”
修改完的结果如下
在这里插入图片描述

FastDFS的Nginx访问配置

1.将/home/soft/fastdfs-nginx-module-master/src(自己实际存放Nginx扩展模块的目录)目录下的mod_fastdfs.conf文件拷贝到 /etc/fdfs/目录下,这样才能正常启动Nginx
cp /root/fastdfs-nginx-module/src/mod_fastdfs.conf /etc/fdfs/

2.修改mod_fastdfs.conf配置文件
base_path=/home/fastdfs/nginx_mod
tracker_server=192.168.235.128:22122 #可以添加自己的服务器ip地址
url_have_group_name = true
store_path0=/home/fastdfs/storage/files

3.在/home/fastdfs/目录下创建nginx_mod目录
mkdir -p /home/fastdfs/nginx_mod

4.配置Nginx的配置文件
(1)这里需要根据自己是否修改过storage.conf中的group_name来修改
例如我将group_name修改成了video所以我的配置就是
location ~ /video {
ngx_fastdfs_module;
}
如果你没有修改group_name,用以下nginx配置
location ~ /group[1-9]/M0[0-9] {
ngx_fastdfs_module;
}
(2)修改服务端口
nginx访问端口需要根据自己是否修改storage.conf中的http.server_port参数来决定。我修改http.server_port=8888
所以我设置的nginx的端口为8888.
二者保持一致。

5.ngx_fastdfs_module; #这个指令不是Nginx本身提供的,是扩展模块提供的,根据这个指令找到FastDFS提供的Nginx模块配置文件,然后找到Tracker,最终找到Stroager。

FastDFS的Nginx访问启动与测试

1.测试带有FastDFS模块的nginx
[root@itcast ~]# /usr/local/nginx_fdfs/sbin/nginx -c /usr/local/nginx_fdfs/conf/nginx.conf -t
ngx_http_fastdfs_set pid=105977
nginx: the configuration file /usr/local/nginx_fdfs/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx_fdfs/conf/nginx.conf test is successful

重启或启动FastDFS服务进程

fdfs_trackerd /etc/fdfs/tracker.conf restart
fdfs_storaged /etc/fdfs/storage.conf restart

当遇到400错误,检查配置/etc/fdfs/mod_fastdfs.conf
url_have_group_name=true 该配置表示访问路径中是否需要带有group1(默认group_name),改为true表示路径中需要有group1(默认group_name)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值