FastDFS入门笔记

7 篇文章 0 订阅
1 篇文章 0 订阅

分布式文件系统

随着文件数据的越来越多,通过 tomcat 或 nginx 虚拟化的静态资源文件在单一的一个服务器节点内是存不下的,如果用多个节点来存储就会不利于管理和维护,所以需要一个系统来管理多态计算机节点上的文件数据,这就是 分布式文件系统
分布式文件系统是一个允许文件通过网络在多态节点上分享的文件系统,多台计算机节点共同组成一个整体。
它的优点:

  • 提供 冗余备份,所以容错能力高,系统中某个节点宕机了,整体的文件服务不会停止,数据也不会丢失。
  • 它的可扩展性强,增加或减少节点简单
  • 提供负载均衡能力,在读取文件副本的时候可以有多个节点共同服务,而且可以通过横向扩展确保性能的提升与负载。

FastDFS

FastDFS 是一个轻量级分布式文件系统,它的功能有:文件存储、文件同步,文件访问(文件的上传、下载)。
FastDFS 服务端有两个角色,跟踪器tracker存储节点 storage

  • 跟踪器主要做调度工作,在访问上起到负载均衡的作用
  • 存储节点,完成文件管理的所有功能,如存储、同步和提供存取接口等,同时对文件的 metaData 进行管理(metaData 就是文件的相关属性,以键值对的方式表示)

跟踪器和存储节点都可以有一台或多台服务器构成,跟踪器和存储节点中的服务器均可以随时增加或下线而不会影响线上服务。
为了支持大容量,存储节点服务器采用 分卷 的组织方式,存储系统由一个或多个卷组成,卷与卷之间的文件是相互独立的,所有卷的文件容量累加就是整个存储系统中的文件容量,一个卷可以由一台或多台存储服务器组成,一个卷下的存储服务器中的文件是相同的,卷中的多个存储服务器起到了冗余备份和负载均衡的作用
下图是 FastDFS 架构图:
在这里插入图片描述

  • FastDFS 中的文件标识分为两个部分:卷名和文件名,二者缺一不可
  • storagetracker 之间会有定时发送心跳服务,storage 会定时地向 tracker 提交、同步相应的状态信息,因此要先启动 tracker 后再启动 storage

下面是 FastDFS 的上传下载流程解析图:
在这里插入图片描述
在这里插入图片描述

1 安装 FastDFS

环境准备:

  • libfastcommon:FastDFS 分离出的一些公用函数包,github下载地址,这里下载 1.0.42 版本
  • FastDFS:FastDFS 本体,github下载地址,这里下载 6.04 版本
  • fastdfs-nginx-module:FastDFS 和 nginx 的关联模块,github下载地址,这里下载 1.22 版本

然后在两台Linux下(trackerstorage)执行一下操作:

  • 安装基础环境
yum install -y gcc gcc-c++
yum install -y libevent
  • 安装 libfastcommon 函数库
tar -zxvf libfastcommon-1.0.42.tar.gz

进入解压文件夹,编译并安装

./make.sh
./make.sh install

安装完成后,在控制台会输出安装的目录,如:
在这里插入图片描述

  • 安装 FastDFS 主程序
tar -zxvf fastdfs-6.04.tar.gz

进入解压文件夹,编译并安装

./make.sh
./make.sh install

同样在安装完成后,在控制台会输出安装的目录,如:
在这里插入图片描述
上图的 /etc/fdfs 路径是配置文件路径,将解压缩的文件下的 conf 目录下的所有配置文件拷贝到 /etc/fdfs 目录下,准备接下来的 trackerstorage 配置

cp /home/software/fastdfs-6.04/conf/* /etc/fdfs/

trackerstorage 都是同一个 FastDFS 的主程序的两个不同概念,配置不同的配置文件就可以设定为 tracker 或者 storage

1.1 配置 tracker 服务

上面安装的时候就说过 /etc/fdfs 目录下是一些配置文件,要配置 tracker 服务则配置 tracker.conf 文件即可,这里修改 base_path 属性(修改之后需要手动创建对应的目录 mkdir /usr/local/fastdfs/tracker -p),它表示 tracker 的工作目录:

# the base path to store data and log files
base_path=/usr/local/fastdfs/tracker

启动 tracker 服务:

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

关闭 tracker 服务:

/usr/bin/stop.sh /etc/fdfs/tracker.conf

防火墙要开对应的默认端口 22122

1.2 配置 storage 服务

如下修改 storage 配置文件 /etc/fdfs/storage.conf,同时记得添加对应的文件目录 mkdir /usr/local/fastdfs/storage -p

# 修改卷名(组名),其它 storage 配置了相同卷名和相同 tracker时,它们之间的文件数据就会同步,启动一个数据冗余的效果
group_name=seiei
# 修改 storage 的工作空间
base_path=/usr/local/fastdfs/storage
# 修改 storage 的存储空间
store_path0=/usr/local/fastdfs/storage
# 修改 tracker 的地址和端口号(即上述的配置的 tracker 服务器地址和端口号)
# 用于发送心跳检测
# 可以配置多个
# 如果设置为本地地址,不能设置为 127.0.0.1,而是 ipv4
tracker_server=192.168.1.153:22122
# 后续结合 nginx,对外服务端的端口号
http.server_port=8888

启动 storage 服务,必须首先启动 tracker

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

防火墙要开启默认的端口 23000

1.2.1 使用客户端测试上传文件

在配置 storage 的节点服务器上修改 client.conf 配置文件(配置好 client,conf 后可以实现上传功能),并创建对应目录 mkdir /usr/local/fastdfs/client -p

base_path=/usr/local/fastdfs/client
# 如果设置为本地地址,不能设置为 127.0.0.1,而是 ipv4
tracker_server=192.168.1.153:22122

上传文件 logo.jpgstorage 上:

/usr/bin/fdfs_test /etc/fdfs/client.conf upload /home/software/logo.jpg

它会返回一些相应上传后的文件信息,如:

http://192.168.253.4/seiei/M00/00/00/wKj9BGJqe4OAcn7yAADUNagDX6M333_big.jpg

其中:

  • seiei 表示卷名(组名)
  • M00 表示虚拟路径,如果是按照上述的配置,指向的就是 /usr/local/fastdfs/storage/data/ 这个目录
  • 再进入到 /usr/local/fastdfs/storage/data/00/00 这个目录下,就可以发现对应的上传文件了

不过此时在外部直接输入 url 访问,是无法访问的,它需要借助 nginx。

1.3 配置 nginx Fastdfs 实现文件服务器

  • 解压、配置 nginx 插件

解压 Nginx 的 Fastdfs 的压缩包

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

解压之后,进入到对应解压目录如 /home/software/fastdfs-nginx-module-1.22/src,复制 mod_fastdfs.conf配置文件到 /etc/fdfs 目录下

cp mod_fastdfs.conf /etc/fdfs
  • 修改 mod_fastdfs.conf 配置文件
# the base path to store log files
base_path=/usr/local/fastdfs/tmp
# FastDFS tracker_server can ocur more than once, and tracker_server format is
#  "host:port", host can be hostname or ip address
# valid only when load_fdfs_parameters_from_tracker is true
tracker_server=192.168.253.5:22122
# the group name of the local storage server
group_name=seiei
# if the url / uri including the group name
# set to false when uri like /M00/00/00/xxx
# set to true when uri like ${group_name}/M00/00/00/xxx, such as group1/M00/xxx
# default value is false
url_have_group_name = true
# store_path#, based 0, if store_path0 not exists, it's value is base_path
# the paths must be exist
# must same as storage.conf
store_path0=/usr/local/fastdfs/storage
  • 修改 /home/software/fastdfs-nginx-module-1.22/src/config 文件,主要是以下两个变量
ngx_module_incs="/usr/include"
CORE_INCS="/usr/include"
  • Nginx 添加对应模块配置

在 Nginx 的源文件目录(即解压缩的文件目录),使用 configure 命令,后面的具体操作参考 这里

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

最后在 Nignx 配置文件添加虚拟主机:

server {
	listen 8888; // 在配置 storage 的配置文件时,对外服务端的端口号
	server_name localhost;
	// seiei 是卷名,MOO 是虚拟路径
	location /seiei/MOO {
		ngx_fastdfs_module; // Fastdfs 的 Nginx 扩展模块
	}
}

重新启动 Nginx 后,查看一下上述上传的图片,访问 url 如下:

http://192.168.253.4:8888/seiei/M00/00/00/wKj9BGJqe4OAcn7yAADUNagDX6M333.jpg
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值