分布式FastDFS集群部署

FastDFS

FastDFS的作者余庆在其 GitHub 上是这样描述的:“FastDFS is an open source high performance distributed file system. It's major functions include: file storing, file syncing and file accessing (file uploading and file downloading), and it can resolve the high capacity and load balancing problem. FastDFS should meet the requirement of the website whose service based on files such as photo sharing site and video sharing site” ,意思说,FastDFS是一个开源的高性能分布式文件系统。其主要功能包括:文件存储、文件同步和文件访问(文件上传和文件下载),它可以解决高容量和负载平衡问题。FastDFS应满足基于照片共享站点和视频共享站点等文件的网站的服务要求。

FastDFS 有两个角色:跟踪器(Tracker)和存储器(Storage)。Tracker 负责文件访问的调度和负载平衡。Storage 存储文件及其功能是文件管理,包括:文件存储、文件同步、提供文件访问接口。它还管理元数据,这些元数据是表示为文件的键值对的属性。TrackerStorage 节点都可以由一台或多台服务器构成。这些服务器均可以随时增加或下线而不会影响线上服务,当然各个节点集群至少需要一台服务 Running。注意,其中 Tracker 集群中的所有服务器都是对等的(P2P),可以根据服务器的压力情况随时增加或减少。

此外,官网还存储系统做了详尽的说明,为了支持大容量,Storage 节点采用了分卷(或分组)的组织方式。存储系统由一个或多个卷组成,卷与卷之间的文件是相互独立的,所有卷的文件容量累加就是整个存储系统中的文件容量。一个卷可以由一台或多台 Storage 服务器组成,一个卷下的存储服务器中的文件都是相同的,卷中的多台存储服务器起到了冗余备份和负载均衡的作用。在卷中增加服务器时,同步已有的文件由系统自动完成,同步完成后,系统自动将新增服务器切换到线上提供服务。当存储空间不足或即将耗尽时,可以动态添加卷。只需要增加一台或多台服务器,并将它们配置为一个新的卷,这样就扩大了存储系统的容量。关于卷或组的概念暂且不要过多深入,后面的安装部署中会后详细的说明。

在FastDFS中,文件的标识由两部分组成:卷名和文件名。

环境说明

  • 操作系统:Centos Linux release 7.2.1511
  • 系统磁盘: 274G
  • 挂在磁盘:3.7T * 12
  • CPU:32 (Intel(R) Xeon(R) )
  • Memory:8G

架构设计

图1 DFS架构图

工作方式:客户端向 tracker 发出请求,然后 tracker 从 storage 节点拿到源数据,返还给客户端,然后客户端根据源数据再去请求 storage 节点。

高可用FasfDFS结构图
图2 高可用DFS架构图(红色虚线部分另外讨论)

概要精简

1.核心系统只有两个角色,tracker server和storage server。

2.所有跟踪器服务器都是对等的,不存在 Master-Slave 关系(图中 Tracker-leader 需另行讨论,目前只需要明白 tracker 是 P2P)。

3.存储服务器采用分组方式,同组内存储服务器上的文件完全相同。

4.不同组的 storage server 之间不会相互通信,相同组之间会进行同步。

5.由 storage server 主动向 tracker server 报告状态信息,每个 tracker server 都会记录 storage server 的信息。

6.如果开启了 trunk 功能,tracker 服务协调 storage 选举 trunk-server。

集群部署

准备环境

表1 软件列表及版本

Note: 在google浏览器中,点击上面链接下载和复制链接下载的文件名称不相同,google会根据上面的文本信息重命名。

表2 服务器IP、服务分配、端口规划表

名称
IP地址
应用服务 端口
A机器

10.58.10.136
tracker 22122

10.58.10.136
storage-group1 23000

10.58.10.136
storage-group2 33000

10.58.10.136
libfastcommon -

10.58.10.136
nginx 8888

10.58.10.136
fastdfs-nginx-module -
B机器

10.58.10.137
tracker 22122

10.58.10.137
storage-group1 23000

10.58.10.137
storage-group3 43000

10.58.10.137
libfastcommon -

10.58.10.137
nginx 8888

10.58.10.137
fastdfs-nginx-module -
C机器

10.58.10.138
tracker 22122

10.58.10.138
storage-group2 33000

10.58.10.138
storage-group23 43000

10.58.10.138
libfastcommon -

10.58.10.138
nginx 8888

10.58.10.138
fastdfs-nginx-module -

在安装之前必须说明:

*1.记得给下面用到的存储目录(日志、数据、pid文件等)授权可读可写权限;*

*2.下面所有的配置文件中由于说明,加了注释,请务必在配置的时候把配置项后面以“#”开头的注释删掉。*

初始化环境
# 安装编译环境
$ yum groups install Development Tools -y
$ yum install perl -y
$ yum -y install redhat-rpm-config.noarch
$ yum -y install gd-devel
$ yum -y install perl-devel perl-ExtUtils-Embed
$ yum -y install pcre-devel
$ yum -y install openssl openssl-devel
$ yum -y install gcc-c   autoconf automake
$ yum install -y zlib-devel
$ yum -y install libxml2 libxml2-dev
$ yum -y install libxslt-devel
$ yum -y install GeoIP GeoIP-devel GeoIP-data
$ yum install gperftools -y

安装libfastcommon

在A、B、C三台机器上分别执行下面的操作:

$ tar -zxvf libfastcommon-1.0.39.tar.gz
$ cd libfastcommon-1.0.39/
$ ./make.sh
$ ./make.sh install

libfastcommon 安装在了 /usr/lib64/libfastcommon.so。需要注意新老版本,新版本在安装之后自动会将 libfastcommon.so 通过软连接链接到 /usr/local/lib 目录下面。如果是老版本,则需要手动建立:

ln -s /usr/lib64/libfastcommon.so /usr/local/lib/libfastcommon.so   ln -s /usr/lib64/libfastcommon.so /usr/lib/libfastcommon.so

如果有 libfdfsclient.so,则也可以把libfdfsclient.so加入到 /usr/local/lib 中:

ln -s /usr/lib64/libfdfsclient.so /usr/local/lib/libfdfsclient.so   ln -s /usr/lib64/libfdfsclient.so /usr/lib/libfdfsclient.so 

Note:最好自己通过命令 ls | grep libfastcommon/usr/lib//usr/local/lib 查看确认是否链接成功。

安装tracker

在 A、B、C 三台机器上分别执行下面操作:

$ mkdir -p /data/fastdfs/tracker
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Joyven2015

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值