FastDFS集群搭建

栏目: 服务器 · 发布时间: 5年前

内容简介:FastDFS有两个重要的角色:跟踪服务器(tracker)和存储服务器(storage)。FastDFS中的storage是采用分组(group)的方式来存储文件。一个group中可以由一个或多个storage server组成,同一个group中的storage server是互备关系,即同一个group中的每个storage server相互进行文件同步(由专门的线程来完成),最终达到每个storage server中存储的文件是完全一致的。

FastDFS有两个重要的角色:跟踪服务器(tracker)和存储服务器(storage)。

1. 存储服务器(storage server)

FastDFS中的storage是采用分组(group)的方式来存储文件。

一个group中可以由一个或多个storage server组成,同一个group中的storage server是互备关系,即同一个group中的每个storage server相互进行文件同步(由专门的线程来完成),最终达到每个storage server中存储的文件是完全一致的。

一个storage集群是由一个或多个group组成。storage集群的存储总容量是集群中所有的group的存储总容量之和。由于同一个group中的storage server是互备关系,因此每个group的存储总容量是该group中存储容量最小的storage server的存储容量。因此,同一个group中的storage server的硬件配置应尽量保持一致,以免造成浪费。

storage server提供了文件上传、文件删除、文件访问(下载)等基础的功能。文件访问(下载)可以通过使用nginx扩展模块来完成(即每个storage server中都需要安装一个nginx应用)。

2. 跟踪服务器(tracker server)

FastDFS中的tracker主要的作用是负载均衡和调度。tracker server可以有多个,tracker server之间是对等的关系,没有主从之分。当客户端连接tracker server时,如果tracker server有多个,客户端会任意选择其中的一个来连接。storage server会周期性定时的向集群中的所有tracker server报告其分组和状态等信息(storage server会通过启动一个单独的线程来完成)。

3. 客户端(client)

以文件上传为例,client、tracker server、storage server的时序图如下(图片摘自网络):

FastDFS集群搭建

4. 部署概况

角色 IP 端口
tracker 10.10.10.121 22122
tracker 10.10.10.122 22122
tracker 10.10.10.123 22122
storage 10.10.10.121 22122
storage 10.10.10.122 22122
storage 10.10.10.123 22122

5. 安装清单

FastDFS集群搭建

注:FastDFS的基础详细安装可参考「 FastDFS分布式文件系统搭建 」。

FastDFS集群搭建

注:本文示例每台虚拟机都分别安装一个 tracker 和一个 storage10.10.10.121 10.10.10.122 10.10.10.123 三台机器安装和配置均相同,按以下步骤进行。

5.1 libfastcommon 安装

解压缩并进入解压缩后的文件夹的根目录:

# tar zxvf libfastcommon-1.0.36.tar.gz && cd libfastcommon-1.0.36

执行编译安装:

# ./make.sh && ./make.sh install

5.2 fastdfs 安装

解压缩并进入解压缩后的文件夹的根目录:

# tar zxvf fastdfs-5.10.tar.gz && cd fastdfs-5.10

执行编译安装:

# ./make.sh && ./make.sh install
FastDFS集群搭建

安装完成之后,在系统的 /etc 路径下会自动生成一个 /fdfs 目录,该目录下是 FastDFS 相关的一些示例配置文件。

将当前路径下 conf 目录里面的 anti-steal.jpg,http.conf,mime.types 复制到 /etc/fdfs 目录中:

# cp conf/anti-steal.jpg conf/http.conf conf/mime.types /etc/fdfs/

5.2.1 tracker 配置

/etc/fdfs/tracker.conf.sample 重命名为 /etc/fdfs/tracker.conf

# mv /etc/fdfs/tracker.conf.sample /etc/fdfs/tracker.conf

编辑 tracker 配置文件:

# vi /etc/fdfs/tracker.conf

主要配置及说明:

# 端口
port=22122
#
# 连接超时时间,单位秒,默认是30
connect_timeout=30
#
# 网络超时时间,单位秒,默认是60
network_timeout=60
#
# 数据文件和日志文件存储的基路径
base_path=/home/fanlychie/fastdfs
#
# 最大并发连接数
max_connections=256
#
# 上传文件时,选group的策略
# 0:轮询group
# 1:使用特定的group
# 2:选择可用空间最大的group
store_lookup=2
#
# 指定文件上传到哪个group。当store_lookup设置为1时,必须指定这个group的名称。当store_lookup是其它值时该属性可以不设值
store_group=group1
#
# 上传文件时,选storage server的策略
# 0:轮询
# 1:根据配置的IP的顺序
# 2:根据配置的优先级
store_server=0
#
# 上传文件时,选存储介质(磁盘或挂载点)的策略
# 0:轮询
# 1:优先使用最大可用空间的路径
store_path=0
#
# 下载文件时,选storage server的策略
# 0:轮询
# 1:当前文件上传的源storage server
download_server=0
#
# 系统保留的存储空间
reserved_storage_space = 1%
#
# HTTP端口
http.server_port=8080

5.2.2 storage 配置

/etc/fdfs/storage.conf.sample 重命名为 /etc/fdfs/storage.conf

# mv /etc/fdfs/storage.conf.sample /etc/fdfs/storage.conf

编辑 storage 配置文件:

# vi /etc/fdfs/storage.conf

主要配置及说明:

# 所属group的名称
group_name=group1
#
# 端口
port=23000
#
# 连接超时时间,单位秒,默认是30
connect_timeout=30
#
# 网络超时时间,单位秒,默认是60
network_timeout=60
#
# 数据文件和日志文件存储的基路径
base_path=/home/fanlychie/fastdfs/storage
#
# 最大并发连接数
max_connections=256
#
# 文件存储的路径。可以配置多个
store_path0=/home/fanlychie/fastdfs/storage
#store_path1=/home/fanlychie/fastdfs/storage1
#
# tracker server的IP和端口。如果有多个则配置多行
tracker_server=10.10.10.121:22122
tracker_server=10.10.10.122:22122
tracker_server=10.10.10.123:22122

5.2.3 client 配置

/etc/fdfs/client.conf.sample 重命名为 /etc/fdfs/client.conf

# mv /etc/fdfs/client.conf.sample /etc/fdfs/client.conf

编辑 client 配置文件:

# vi /etc/fdfs/client.conf

主要配置及说明:

# 数据文件和日志文件存储的基路径
base_path=/home/fanlychie/fastdfs
#
# tracker server的IP和端口。如果有多个则配置多行
tracker_server=10.10.10.121:22122
tracker_server=10.10.10.122:22122
tracker_server=10.10.10.123:22122

5.3 fastdfs-nginx-module 安装

解压缩并进入解压缩后的文件夹的根目录:

# tar zxvf fastdfs-nginx-module_v1.16.tar.gz && cd fastdfs-nginx-module

编辑 src/mod_fastdfs.conf

# vi src/mod_fastdfs.conf

主要配置及说明:

# tracker server的IP和端口。如果有多个则配置多行
tracker_server=10.10.10.121:22122
tracker_server=10.10.10.122:22122
tracker_server=10.10.10.123:22122
#
# 如果请求的url地址中包含了group_name(如“group1/M00/00/00/xxx”)则应设为true。
# 如果请求的url地址中不包含group_name(如“/M00/00/00/xxx”)则应设为false。
url_have_group_name = true
#
# 文件存储的路径。可以配置多个
# 必须配置与本机storage.conf中配置的store_path0路径相同
store_path0=/home/fanlychie/fastdfs/storage
#store_path1=/home/fanlychie/fastdfs/storage1

复制文件 src/mod_fastdfs.conf/etc/fdfs/ 目录下:

#cp src/mod_fastdfs.conf /etc/fdfs/

编辑 src/config

#vi src/config

找到 CORE_INCS 的配置行,去掉路径中的 /local ,改为如下并保存退出:

CORE_INCS="$CORE_INCS /usr/include/fastdfs /usr/include/fastcommon/"

5.4 nginx 安装

由于 FastDFS 提供的HTTP服务较为简单,它无法提供负载均衡等高性能的服务。因此, FastDFS 通常会结合 Nginx 来使用。安装 Nginx 所需的依赖有:

  • nginx 的 gzip 模块(压缩)需要依赖 zlib 库
  • nginx 的 ssl 模块(支持 HTTPS)需要依赖 openssl 库
  • nginx 的 rewrite 模块(支持 URL 重写)需要依赖 pcre 库

5.4.1 pcre 安装

解压缩并进入解压缩后的文件夹的根目录:

#tar zxvf pcre-8.36.tar.gz &&cdpcre-8.36

执行编译安装:

#./configure && make && make install

创建软连接(64位系统):

#ln -s /usr/local/lib/libpcre.so.1 /lib64

创建软连接(32位系统):

#ln -s /usr/local/lib/libpcre.so.1 /lib

5.4.2 zlib 安装

解压缩并进入解压缩后的文件夹的根目录:

#tar zxvf zlib-1.2.11.tar.gz &&cdzlib-1.2.11

执行编译安装:

#./configure && make && make install

5.4.3 openssl 安装

解压缩并进入解压缩后的文件夹的根目录:

#tar zxvf openssl-1.0.2l.tar.gz &&cdopenssl-1.0.2l

执行编译安装:

#./config && make && make install

5.4.4 nginx 安装

解压缩并进入解压缩后的文件夹的根目录:

#tar zxvf nginx-1.12.1.tar.gz &&cdnginx-1.12.1

编译安装( 注意修改 --add-module 的路径 ):

#./configure --prefix=/usr/local/nginx --add-module=/usr/local/src/fastdfs-nginx-module/src/ && make && make install
FastDFS集群搭建

–add-module 的路径需要改成你服务上上面配置好的 fastdfs-nginx-module 对应的路径。

编辑 nginx 配置文件:

#vi /usr/local/nginx/conf/nginx.conf

添加如下配置:

location /group1/M00 {
    root /home/fanlychie/fastdfs/storage/data/;
    ngx_fastdfs_module;
}
FastDFS集群搭建

root 指定到 storage 配置的 ${base_path}/data/ 目录下。

FastDFS集群搭建

ngx_fastdfs_moduleFastDFS 模块名称,该名称固定不需要改变。

5.5 启动服务

5.5.1 tracker

启动命令:

# fdfs_trackerd /etc/fdfs/tracker.conf start

停止命令:

# fdfs_trackerd /etc/fdfs/tracker.conf stop

重启命令:

# fdfs_trackerd /etc/fdfs/tracker.conf restart

5.5.2 storage

启动命令:

# fdfs_storaged /etc/fdfs/storage.conf start

停止命令:

# fdfs_storaged /etc/fdfs/storage.conf stop

重启命令:

# fdfs_storaged /etc/fdfs/storage.conf restart

5.5.3 nginx

启动命令:

#/usr/local/nginx/sbin/nginx

停止命令:

#/usr/local/nginx/sbin/nginx -s stop

重新加载命令:

#/usr/local/nginx/sbin/nginx -s reload
FastDFS集群搭建

10.10.10.121 10.10.10.122 10.10.10.123 三台机器的tracker配置相同。


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

A Philosophy of Software Design

A Philosophy of Software Design

John Ousterhout / Yaknyam Press / 2018-4-6 / GBP 14.21

This book addresses the topic of software design: how to decompose complex software systems into modules (such as classes and methods) that can be implemented relatively independently. The book first ......一起来看看 《A Philosophy of Software Design》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

URL 编码/解码
URL 编码/解码

URL 编码/解码