当前位置:   article > 正文

FastDFS之环境搭建_fastdfs环境搭建

fastdfs环境搭建

一、工具的准备

fastDFS

FastDFS是一款开源的轻量级分布式文件系统纯C实现,支持Linux、FreeBSD等UNIX系统类google FS,不是通用的文件系统,只能通过专有API访问,目前提供了C、Java和PHP API为互联网应用量身定做,解决大容量文件存储问题,追求高性能和高扩展性FastDFS可以看做是基于文件的key value pair存储系统,称作分布式文件存储服务更为合适。
------ 官网介绍

tracker-server:

跟踪服务器, 主要做调度工作, 起负载均衡的作用。 在内存中记录集群中所有存储组和存储服务器的状态信息, 是客户端和数据服务器交互的枢纽。 相比GFS中的master更为精简, 不记录文件索引信息, 占用的内存量很少。

storage-server:

存储服务器( 又称:存储节点或数据服务器) , 文件和文件属性( metadata) 都保存到存储服务器上。 Storage server直接利用OS的文件系统调用管理文件。

group:

组, 也可称为卷。 同组内服务器上的文件是完全相同的 ,同一组内的storage server之间是对等的, 文件上传、 删除等操作可以在任意一台storage server上进行 。

meta data:

meta data:文件相关属性,键值对( Key Value Pair) 方式,如:width=1024,heigth=768 。

单机文件系统的对比

文件系统高可用扩展部署复杂程度性能
单机文件系统低,依赖于单机服务器,只要服务器崩溃,完全不可用。低,要扩容只能停机增加硬盘。当文件数量多到一定的程度,磁盘IO寻址操作将会成为瓶颈
分布式文件系统高,一个group内的服务器崩溃后,group内的其他storage将接管服务。高,可以不停机增加group机器。高,部署较复杂高,通过集群或者分布式的方式分担服务器的压力。

其他文件系统的对比

指标适合类型文件分布系统性能复杂度FUSEPOSIX备份机制通讯协议接口社区支持开发语言
FastDFS4KB~500MB小文件合并存储不分片处理很高简单不支持不支持组内冗余备份Api HTTP国内用户群C语言
TFS所有文件小文件合并,以block组织分片复杂不支持Block存储多份,主辅灾备API httpC++
MFS大于64K分片存储Master占内存多支持支持多点备份动态冗余使用fuse挂在较多Perl
HDFS大文件大文件分片分块存储简单支持支持多副本原生api较多Java
Ceph对象文件块OSD一主多从复杂支持支持多副本原生api较少C++
MogileFS海量小图片复杂可以支持不支持动态冗余原生api文档少Perl
ClusterFS大文件简单支持支持C

适用场景:

特别适合以中小文件( 建议范围: 4KB 到 500MB ) 为载体的在线服务, 如相册网站、 视频网站等等。

部署结构

fastdfs文件系统.png

适合本公司的最小化部署图

 fastdfs文件系统1 (1).png

192.168.1.177安装fastdfs的tracker节点,以及nginx反向代理服务器用于下载服务。

192.168.1.188,192.168.1.189安装fastdfs的storage节点,默认分一组,一组内两台机器互为备份.

注意:为了做到高可用,一个group建议分为两台以上的机器。


建议直接从官方地址下载

1、libfastcommon


* 从 FastDFS 和 FastDHT 中提取出来的公共 C 函数库,基础环境
* 在安装 FastDFS 前需要先安装这个
* 下载地址址:https://github.com/happyfish100/libfastcommon/releases

2、FastDFS


* FastDFS 安装包
* 下载地址:https://github.com/happyfish100/fastdfs/releases

3、fastdfs-nginx-module


* 为了实现通过 HTTP 服务访问和下载 FastDFS 服务器中的文件
* 可以重定向文件链接到源服务器取文件,避免同一组 Storage 服务器同步延迟导致文件访问错误
* 下载地址:https://github.com/happyfish100/fastdfs-nginx-module/releases
* 注:这个目前最新版是 V1.20,不过由于配置时出了点问题,故这里改为使用 V1.16 版本

4、Nginx


* 实现 HTTP 访问,负载均衡和缓存等功能
* 下载地址:http://nginx.org/en/download.html

本次采用的安装包版本如下
* libfastcommon :1.0.38
* FastDFS :5.11
* fastdfs-ninx-module :1.16
* Nginx : 1.15.1

二、下载安装 libfastcommon

libfastcommon是从 FastDFS 和 FastDHT 中提取出来的公共 C 函数库,基础环境,安装即可 。

1、下载libfastcommonV1.0.7.tar.gz压缩包

2、上传安装包到服务器中

这里创建一个专门存放安装包的文件夹:

[root@admin /]# mkdir fastdfs
[root@admin /]# cd fastdfs/
[root@admin fastdfs]# 

后使用xftp上传安装包到服务器中

3、安装gcc 依赖环境

因为FastDFS是使用c语言开发,需要先安装gcc环境,否则之后运行类库的 ./make.sh 会报错,如下图:

# 在线安装 gcc

[root@localhost ~]# yum -y install gcc

[root@localhost ~]# yum -y install gcc-c++

# 在线安装 perl

[root@localhost ~]# yum -y install perl*

4、解压

[root@admin fastdfs]# ll

total 72

-rw-r--r--. 1 root root 73148 Nov 9 14:09 libfastcommonV1.0.7.tar.gz

[root@admin fastdfs]# tar -zxvf libfastcommonV1.0.7.tar.gz

解压后,会生成libfastcommon-1.0.7文件夹,里面有make.sh编译脚本。 

[root@admin libfastcommon-1.0.7]# ll

5、编译、安装

[root@localhost libfastcommon-1.0.7]# ./make.sh 
[root@localhost libfastcommon-1.0.7]# ./make.sh install

libfastcommon.so 安装到了/usr/lib64/libfastcommon.so但是FastDFS主程序设置的lib目录是/usr/local/lib,所以需要创建软链接。

# 由于 libfastcommon 安装的路径在 /usr/lib64/ # 但是 FastDFS 主程序设置的 lib 目录是在 /usr/local/lib,所以需要创建软链接

[root@localhost /]# ln -s /usr/lib64/libfastcommon.so /usr/local/lib/libfastcommon.so
[root@localhost /]# ln -s /usr/lib64/libfastcommon.so /usr/lib/libfastcommon.so
[root@localhost /]# ln -s /usr/lib64/libfdfsclient.so /usr/local/lib/libfdfsclient.so
[root@localhost /]# ln -s /usr/lib64/libfdfsclient.so /usr/lib/libfdfsclient.so

三、下载安装FastDFS

1、下载FastDFS

下载地址:FastDFS - Browse Files at SourceForge.net

下载安装 FastDFS,也可通过wget下载。

wget https://github.com/happyfish100/fastdfs/archive/V5.11.tar.gz

选择FastDFS Server Source Code

这里我们选择下载最多的应该也是比较稳定的版本:FastDFS Server with PHP Extension Source Code V5.05

点击之后就能成功下载fastdfs压缩包。

2、解压

将安装包上传到服务器中:

[root@localhost fastdfs]# ll

[root@localhost fastdfs]# tar -zxvf FastDFS_v5.05.tar.gz

解压缩之后,可以看到生成了FastDFS文件夹,里面有编译相关脚本

[root@localhost fastdfs]# ll

total 412

drwxr-xr-x. 10 8980 users 258 Dec 2 2014 FastDFS

-rw-r--r--. 1 root root 345400 Nov 9 14:39 FastDFS_v5.05.tar.gz

drwxrwxr-x. 3 root root 102 Nov 9 14:31 libfastcommon-1.0.7

-rw-r--r--. 1 root root 73148 Nov 9 14:30 libfastcommonV1.0.7.tar.gz

[root@localhost fastdfs]# cd FastDFS/

[root@localhost FastDFS]# ll

total 120

drwxr-xr-x. 3 8980 users 4096 Dec 2 2014 client

drwxr-xr-x. 2 8980 users 261 Dec 2 2014 common

drwxr-xr-x. 2 8980 users 146 Dec 2 2014 conf

-rw-r--r--. 1 8980 users 35067 Dec 2 2014 COPYING-3_0.txt

-rw-r--r--. 1 8980 users 2802 Dec 2 2014 fastdfs.spec

-rw-r--r--. 1 8980 users 31386 Dec 2 2014 HISTORY

drwxr-xr-x. 2 8980 users 48 Dec 2 2014 init.d

-rw-r--r--. 1 8980 users 7755 Dec 2 2014 INSTALL

-rwxr-xr-x. 1 8980 users 5813 Dec 2 2014 make.sh

drwxr-xr-x. 2 8980 users 4096 Dec 2 2014 php_client

-rw-r--r--. 1 8980 users 2380 Dec 2 2014 README.md

-rwxr-xr-x. 1 8980 users 1768 Dec 2 2014 restart.sh

-rwxr-xr-x. 1 8980 users 1680 Dec 2 2014 stop.sh

drwxr-xr-x. 4 8980 users 4096 Dec 2 2014 storage

drwxr-xr-x. 2 8980 users 4096 Dec 2 2014 test

drwxr-xr-x. 2 8980 users 4096 Dec 2 2014 tracker

[root@localhost FastDFS]#

3、编译、安装 

# 解压 FastDFS 压缩包,编译以及安装

[root@localhost FastDFS]# ./make.sh

[root@localhost FastDFS]# ./make.sh install

FastDFS默认服务脚本路径

/etc/init.d/fdfs_storaged

/etc/init.d/fdfs_trackerd

4、FastDFS相关配置文件示例 

/etc/fdfs/client.conf.sample

/etc/fdfs/storage.conf.sample

/etc/fdfs/tracker.conf.sample

FastDFS默认的脚本安装后放在/usr/bin下面

但是FastDFS 服务脚本设置的 bin 目录是 /usr/local/bin,所以还是需要建立 /usr/bin 到 /usr/local/bin 的软链接

[root@localhost fdfs]# ln -s /usr/bin/fdfs_trackerd /usr/local/bin

[root@localhost fdfs]# ln -s /usr/bin/fdfs_storaged /usr/local/bin

[root@localhost fdfs]# ln -s /usr/bin/stop.sh /usr/local/bin

[root@localhost fdfs]# ln -s /usr/bin/restart.sh /usr/local/bin

四、配置FastDFS跟踪器(Tracker)

1、进入 /etc/fdfs,复 tracker.conf.sample,并重命名为 tracker.conf 

[root@localhost fdfs]# ll

total 20

-rw-r--r--. 1 root root 1461 Nov 9 14:42 client.conf.sample

-rw-r--r--. 1 root root 7829 Nov 9 14:42 storage.conf.sample

-rw-r--r--. 1 root root 7102 Nov 9 14:42 tracker.conf.sample

[root@localhost fdfs]# cp tracker.conf.sample tracker.conf

[root@localhost fdfs]#

2、编辑tracker.conf,需要修改如下几个地方 

# 配置 tracker.conf

vi tracker.conf

配置 Tracker 

# 启用配置文件(默认为 false,表示启用配置文件)

disabled=false # Tracker 服务端口(默认为 22122)

port=22122 # 存储日志和数据的根目录

base_path=/home/fastdfs/tracker

3、创建Tracker 数据和日志目录地址 

# 创建 Tracker 的存储日志和数据的根目录

mkdir -p /home/fastdfs/tracker

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

4、防火墙中打开跟踪端口(默认的22122) 

[root@localhost fastdfs]# vim /etc/sysconfig/iptables 

 加入开放22122端口的配置:

-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 22122 -j ACCEPT 

修改完成后,重启防火墙:

service iptables restart 

 5、启动Tracker

使用如下命令启动Tracker跟踪器:

[root@localhost /]# /etc/init.d/fdfs_trackerd start

Reloading systemd: [ OK ]

Starting fdfs_trackerd (via systemctl): [ OK ]

[root@localhost /]#

启动成功后,会在 /fastdfs/tracker (配置的base_path)下创建 data、logs 两个目录

查看 FastDFS Tracker 是否已成功启动 ,22122端口正在被监听,则说明Tracker服务安装成功 

6、设置Tracker开机启动

[root@localhost tracker]# chkconfig fdfs_trackerd on 

7、Tracker server 目录及文件结构 

Tracker服务启动成功后,会在base_path下创建data、logs两个目录。目录结构如下:

  1. ${base_path}

  2. |__data

  3. | |__storage_groups.dat:存储分组信息

  4. | |__storage_servers.dat:存储服务器列表

  5. |__logs

  6. | |__trackerd.log: tracker server 日志文件

五、配置 FastDFS 存储 (Storage) 

1、配置 Storage

# 创建 Storage 的存储日志和数据的根目录

mkdir -p /home/fastdfs/storage

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

# 配置 storage.conf

vi storage.conf

创建Storage基础数据目录,对应base_path目录

[root@localhost fdfs]# mkdir /home/fastdfs/storage

[root@localhost fdfs]# mkdir /home/fastdfs/file

2、复制 storage.conf.sample,并重命名为 storage.conf

[root@localhost fdfs]# cp storage.conf.sample storage.conf

[root@localhost fdfs]# ll

total 36

-rw-r--r--. 1 root root 1461 Nov 9 14:42 client.conf.sample

-rw-r--r--. 1 root root 7829 Nov 9 15:41 storage.conf

-rw-r--r--. 1 root root 7829 Nov 9 14:42 storage.conf.sample

-rw-r--r--. 1 root root 7234 Nov 9 15:12 tracker.conf

-rw-r--r--. 1 root root 7102 Nov 9 14:42 tracker.conf.sample

编辑storage.conf

在这里,storage.conf 只是修改一下 storage 存储日志和数据的路径

# 启用配置文件(默认为 false,表示启用配置文件)    disabled=false
# Storage 服务端口(默认为 23000)                            port=23000
# 数据和日志文件存储根目录                                       base_path=/home/fastdfs/storage

# 存储路径,访问时路径为 M00

# store_path1 则为 M01,以此递增到 M99(如果配置了多个存储目录的话,这里只指定 1 个)                                                                                store_path0=/home/fastdfs/storage

# Tracker 服务器 IP 地址和端口,单机搭建时也不要写 127.0.0.1

# tracker_server 可以多次出现,如果有多个,则配置多个
tracker_server=192.168.229.166:22122

# 设置 HTTP 访问文件的端口。这个配置已经不用配置了,配置了也没什么用

# 这也是为何 Storage 服务器需要 Nginx 来提供 HTTP 访问的原因
http.server_port=8888  

  

六、启动 Tracker 和 Storage 服务

# 启动 Tracker 服务
# 其它操作则把 start 改为 stop、restart、reload、status 即可。Storage 服务相同
/etc/init.d/fdfs_trackerd start
# 启动 Storage 服务
/etc/init.d/fdfs_storaged start
# 可以通过 fdfs_monitor 查看集群的情况
# 查看 Storage 是否已经注册到 Tracker 服务器中
# 当查看到 ip_addr = 192.168.229.166 (localhost.localdomain)  ACTIVE
# ACTIVE 表示成功
/usr/bin/fdfs_monitor /etc/fdfs/storage.conf

七、文件上传测试

# 修改 Tracker 服务器客户端配置文件

cp /etc/fdfs/client.conf.sample

/etc/fdfs/client.conf vi /etc/fdfs/client.conf

2、client.conf 中修改 base_path 和 Tracker 服务器的 IP 地址与端口号即可 

# 存储日志文件的基本路径

base_path=/home/fastdfs/tracker

# Tracker 服务器 IP 地址与端口号

tracker_server=192.168.229.166:22122

 3、创建base_path路径

mkdir /fastdfs/c

4、上传测试 

拷贝一张图片到 root 目录下

# 存储到 FastDFS 服务器中
/usr/bin/fdfs_upload_file /etc/fdfs/client.conf /root/test.png

当返回文件 ID 号,如 group1/M00/00/00/wKjlpltF-K-AZQQsAABhhboA1Kk469.png 则表示上传成功

八、以上则完成了 FastDFS 的安装与配置,可以使用 api 来完成文件的上传、同步和下载

  • Storage 安装 Nginx,为了提供 http 的访问和下载服务,同时解决 group 中 Storage 服务器的同步延迟问题
  • Tracker 安装 Nginx,主要是为了提供 http 访问的反向代理、负载均衡以及缓存服务

 1、安装与配置 Nginx

Nginx 依赖环境安装
Nginx 依赖环境有 GCC(这个在安装 libfastcommon 时就安装了)、PCRE、zlib 和 openssl。可以通过以下几条命令 or 一条命令进行在线安装

# 安装 GCC
yum install -y gcc-c++ 
# 安装 PCRE
yum install -y pcre pcre-devel
# 安装 zlib
yum install -y zlib zlib-devel
# 安装 openssl
yum install -y openssl openssl-devel

# 以上命令也可以使用一条命令来安装
yum install gcc gcc-c++ make automake autoconf libtool pcre* zlib openssl openssl-devel

2、配置 fastdfs-nginx-module 模块

所有 storage 节点都要安装 fastdfs-nginx-module 模块

cd /root
# 解压 fastdfs-nginx-module 模块
tar zxvf fastdfs-nginx-module_v1.16.tar.gz
# 修改 fastdfs-nginx-module 的 config 配置文件
vi fastdfs-nginx-module/src/config

将 CORE_INCS="$CORE_INCS /usr/local/include/fastdfs /usr/local/include/fastcommon/"
中的 local 去掉,修改为 CORE_INCS="$CORE_INCS /usr/include/fastdfs /usr/include/fastcommon/"

3、编译安装 nginx

cd /root
tar zxvf nginx-1.15.1.tar.gz
cd nginx-1.15.1
# 给 Nginx 添加 fastdfs-nginx-module 模块
./configure --add-module=/root/fastdfs-nginx-module/src
make && make install

4、fastdfs-nginx-module 和 FastDFS 配置文件修改

# 复制 FastDFS 的部分配置文件到 /etc/fdfs
cd /root/fastdfs-5.11/conf/
cp http.conf mime.types /etc/fdfs/
# 复制 fastdfs-nginx-module 源码中的配置文件到  /etc/fdfs 中
cp /root/fastdfs-nginx-module/src/mod_fastdfs.conf /etc/fdfs/
vi /etc/fdfs/mod_fastdfs.conf

5、mod_fastdfs.conf 配置如下

# Tracker 服务器IP和端口修改
tracker_server=192.168.229.166:22122
# url 中是否包含 group 名称,改为 true,包含 group
url_have_group_name = true
# 配置 Storage 信息,修改 store_path0 的信息
store_path0=/home/fastdfs/storage
# 其它的一般默认即可,例如
base_path=/tmp
group_name=group1 
storage_server_port=23000 
store_path_count=1

6、配置 Nginx

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

在 server 中添加以下代码

# 配置为支持 group0-group9,以及 M00-M99,以便于以后扩容
# 本单机环境下其实配置为 ~/group1/M00 就可以了
location ~/group([0-9])/M([0-9])([0-9]) {
    ngx_fastdfs_module;
}

7、 启动 Nginx

# 启动 Nginx
/usr/local/nginx/sbin/nginx
# 重启 Nginx
/usr/local/nginx/sbin/nginx -s reload
# 停止 Nginx
/usr/local/nginx/sbin/nginx -s stop

通过 HTTP 访问文件

根据 URL 访问之前上传的那张图片

http://192.168.229.166:80/group1/M00/00/00/wKjlpltF-K-AZQQsAABhhboA1Kk469.png

可以将 Nginx、Tracker 和 Storage 服务设置为开机自启。 

 # 每次开机时,手动打开 Tracker 服务
/etc/init.d/fdfs_trackerd start
# 打开 Storage 服务
/etc/init.d/fdfs_storaged start
# 启动 Nginx
/usr/local/nginx/sbin/nginx

FastDFS 单机版安装与配置到此也就结束了,集群是一样的使用方式,只不过配置文件有所不同。有空再配置一下集群版。 

参考资料

分布式文件存储FastDFS之环境搭建篇_weixiaohuai的博客-CSDN博客

FastDFS 单机版环境搭建

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/441480
推荐阅读
相关标签
  

闽ICP备14008679号