vlambda博客
学习文章列表

微服务架构实战:高可用分布式文件系统的组建FastDFS架构


高可用分布式文件系统的组建

传统的单机版Web应用的文件管理方式,例如图片和视频文件的上传和使用等,大多是将文件存储在服务器本地,但这种管理方式无法应用在微服务应用中。一方面,微服务应用发布在分布式环境中,随时随地都可以进行多副本的部署,所以它的媒体文件必须存放在一个统一的地方。另一方面,建立一个独立而高效的文件系统,也是高可用、高性能应用平台的一个有机组成部分。

如果我们租用云服务,就可以使用云服务商提供的分布式文件系统,例如,阿里云或腾讯云的对象存储OSs。

下面,为了加深读者对分布式文件系统的理解,我们使用开源的FastDFS构建一个高可用的分布式文件系统。

FastDFS架构

FastDFS是一个轻量级的分布式文件系统,使用FastDFS可以搭建一个高可用且可持续扩展的分布式文件系统。

FastDFS由跟踪器(Tracker)和存储节点(Storage)两部分组成。跟踪器用来调度来自客户端的请求,并记录存储服务器的信息。存储节点用来保存文件及其属性,同时进行文件同步处理工作。文件的存储还使用分组(或分卷)的方式进行组织。搭建两个以上的跟踪器就可以组成一个高可用的分布式文件系统,如图14-1所示。


基于图14-1所示的架构设计,我们将使用四台服务器搭建一个高可用的分布式文件系统,代码如下所示。

Tracker Server1: 10.10.10.22
Tracker Server2:10.10.10.32
Storagel:10.10.10.23
Storage2:10.10.10.33

在这种架构设计中,增加存储节点即可提高和扩展文件的存取性能。在安装了分布式文件系统之后,即可使用Nginx为 Web端的文件访问搭建一个负载均衡服务。

本章会用到下列所示的安装包,读者可自行从网上下载。

libfastcommon-1.0.35.tar.gz
fastdfs-5.10.tar.gz
pcre-8.40.tar.gz
nginx-1.10.3.tar.gz

FastDFS的安装

下列安装过程在四个服务器中都要完成。假设把下载的安装包都放在目录/opt 中。

首先,创建FastDFS 和 Nginx用户:

useradd fastdfs -M -s/sbin/nologinuseradd nginx一M -s /sbin/nologin

然后,安装编译环境:

yum -y install gcc gcc+ gcc-c++ openssl openssl-devel pcre pcre-deve

安装libfastcommon,按顺序执行下列命令:

tar -zxVf libfastcommon-1.0.35.tar.gz
cd libfastcommon-1.0.35
./make.sh
./make.sh install

完成之后,建立下列所示的软链接,以便安装程序能够找到相关的库文件:

ln -sv /usr/include/fastcommon /usr/local/include/fastcommon
ln -sv /usr/include/fastdfs /usr/local/include/fastdfs
ln -sv /usr/lib64/libfastcommon.so /usr/local/lib/libfastcommon.so

按顺序执行下列命令,安装FastDFS:

tar -zxv fastdfs-5.10.tar.gz
cd fastdfs-5.10
./make.sh
./make.sh install

安装结束后将输出成功标志,接下来配置各个服务。

跟踪服务器配置

在Tracker Server机器上,创建数据存储目录:

mkdir -p /data/fastdfs/tracker

按顺序执行下列命令,编辑tracker.conf配置:

cd /etc/fdfs
cp tracker.conf.sample tracker.conf
vi /etc/fdfs/tracker.conf

在配置文件中编辑下列各项配置:

#绑定IP地址,如果为空,则表示使用本机IP地址bind addr=
#端口
port=22122#连接超时时间
connect timeout=30#日志数据路径
base path=/data/fastdfs/tracker#上传文件时选择group 的方法
#0:轮询,1:指定组,2:选择剩余空间最大store lookup=2
#如果上面的配置是1,那么这里必须指定组名store group-group2
#上传文件时选择server的方法
#0:轮询,1:按IP地址排序,2:按权重排序store server=0
#storage上预留的空间
reserved storage space =10%http.server port=8080

保存并退出,然后使用下列命令启动Tracker Server:

service fdfs trackerd start

使用下列命令查看Tracker Server 监听的端口:

netstat -unltplgrep fdfs

存储节点配置

在 Storage服务器上,创建如下所示的数据存储目录:

mkdir -p/data/fdfs storage/base
mkdir -p /data/fdfs storage/storage0
mkdir -p /data/fdfs_storage/storage1

按顺序执行下列命令,编辑存储节点配置:

cd /etc/fdfs
cp storage.conf.sample storage.conf
vi storage.conf

按下列命令编辑各项内容:

#storage server所属组名group name=group1
#绑定IP地址
bind addr=
#storage server的端口port=23000
#连接超时时间
connect timeout=30#日志数据路径
base path=/data/fdfs storage/base#storage path 的个数
store pathcount=2
store path0=/data/fdfs storage/storage0store pathl=/data/fdfs storage/storagel#跟踪服务器
tracker server=10.10.10.22:22122tracker server=10.10.10.32:22122

保存编辑后,使用下列命令启动存储节点:

service fdfs_storaged start

使用下列命令检查服务运行状态:

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

上传文件测试

按顺序执行如下命令,编辑客户端配置:

cd /etc/fdfs
cp client.conf.sample client.conf
vi /etc/fdfs/client.conf

修改下列各项内容:

base path=/data/fastdfs/tracker #Tracker服务器上的文件路径
tracker server=10.10.10.22:22122 #Tracker服务器的IP地址和端口号
http.tracker_server port=8080 # Tracker服务器上的HTTP端口号,必须和Tracker的
#设置一样

假如在/opt 中存在一个图片文件为1.png,则可以使用如下命令上传文件:

/usr/bin/fdfs upload file /etc/fdfs/client.conf /opt/1.png

若上传成功,则返回如下所示的文件信息:

group1/M00/00/00/wKgBGFk3kUqACu9JAAGmMprynZs674.png

本文给大家讲解的内容是微服务架构实战:高可用分布式文件系统的组建,FastDFS架构与安装、 跟踪服务器配置、存储节点配置、上传文件测试

  1. 下篇文章给大家讲解的是微服务架构实战:Nginx的安装及负载均衡配置、开机启动;

  2. 觉得文章不错的朋友可以转发此文关注小编;

  3. 感谢大家的支持!