分布式架构高可用架构篇_05_fastdfs集群的安装

时间:2022-07-10 19:44:54

参考: 龙果学院http://www.roncoo.com/share.html?hamc=hLPG8QsaaWVOl2Z76wpJHp3JBbZZF%2Bywm5vEfPp9LbLkAjAnB%2BnHpF8rHqMAsZ9U%2Ff1CcK%2Fi%2BOWuJ8pVcwcq6A%3D%3D

FastDFS 介绍(参考:http://www.oschina.net/p/fastdfs) 

FastDFS 是一个开源的分布式文件系统,它对文件进行管理,功能包括:文件存储、文件同步、文件访问(文件上传、文件下载)等,解决了大容量存储和负载均衡的问题。特别适合以文件为载体的在线服 务,如相册网站、视频网站等等。 

FastDFS 服务端有两个角色:跟踪器(tracker)和存储节点(storage)。跟踪器主要做调度工作,在访问上起负载均衡的作用。存储节点存储文件,完成文件管理的所有功能:存储、同步和提供存取接口,FastDFS 同时对文件的 meta data 进行管理。所谓文件的 meta data 就是文件的相关属性,以键值对(keyvalue pair)方式表示,如:

idth=1024,其中的 key 为 width,value 为 1024。文件 meta data 是文件属性列表,可以包含多个键值对。FastDFS 系统结构如下图所示:

跟踪器和存储节点都可以由一台多台服务器构成。跟踪器和存储节点中的服务器均可以随时增加或下 线而不会影响线上服务。其中跟踪器中的所有服务器都是对等的,可以根据服务器的压力情况随时增加或 减少。为了支持大容量,存储节点(服务器)采用了分卷(或分组)的组织方式。存储系统由一个或多个卷组成,卷与卷之间的文件是相互独立的,所有卷的文件容量累加就是整个存储系统中的文件容量。一个卷 可以由一台或多台存储服务器组成,一个卷下的存储服务器中的文件都是相同的,卷中的多台存储服务器 起到了冗余备份和负载均衡的作用。在卷中增加服务器时,同步已有的文件由系统自动完成,同步完成后, 系统自动将新增服务器切换到线上提供服务。当存储空间不足或即将耗尽时,可以动态添加卷。只需要增 加一台或多台服务器,并将它们配置为一个新的卷,这样就扩大了存储系统的容量。FastDFS 中的文件标识 分为两个部分:卷名和文件名,二者缺一不可。

FastDFS 上传文件交互过程:

分布式架构高可用架构篇_05_fastdfs集群的安装

跟踪器和存储节点都可以由一台多台服务器构成。跟踪器和存储节点中的服务器均可以随时增加或下 线而不会影响线上服务。其中跟踪器中的所有服务器都是对等的,可以根据服务器的压力情况随时增加或 减少。为了支持大容量,存储节点(服务器)采用了分卷(或分组)的组织方式。存储系统由一个或多个卷组成,卷与卷之间的文件是相互独立的,所有卷的文件容量累加就是整个存储系统中的文件容量。一个卷 可以由一台或多台存储服务器组成,一个卷下的存储服务器中的文件都是相同的,卷中的多台存储服务器 起到了冗余备份和负载均衡的作用。在卷中增加服务器时,同步已有的文件由系统自动完成,同步完成后, 系统自动将新增服务器切换到线上提供服务。当存储空间不足或即将耗尽时,可以动态添加卷。只需要增 加一台或多台服务器,并将它们配置为一个新的卷,这样就扩大了存储系统的容量。FastDFS 中的文件标识 分为两个部分:卷名和文件名,二者缺一不可。

FastDFS 上传文件交互过程:

分布式架构高可用架构篇_05_fastdfs集群的安装

1. client 询问 tracker 上传到的 storage,不需要附加参数;

 2. tracker 返回一台可用的 storage;

 3. client 直接和 storage 通讯完成文件上传。

 客户端 client 发起对 FastDFS 的文件传输动作,是通过连接到某一台 Tracker Server 的指定端 口来实现的,Tracker Server 根据目前已掌握的信息,来决定选择哪一台 Storage Server ,然后将这个Storage Server 的地址等信息返回给 client,然后 client 再通过这些信息连接到这台 Storage Server, 将要上传的文件传送到给 Storage Server 上。 

FastDFS 下载文件交互过程:

分布式架构高可用架构篇_05_fastdfs集群的安装

1. client 询问 tracker 下载文件的 storage,参数为文件标识(卷名和文件名); 

2. tracker 返回一台可用的 storage;

3. client 直接和 storage 通讯完成文件下载。

FastDFS 集群规划: 

跟踪服务器 1:192.168.1.81edu-dfs-tracker-1

跟踪服务器 2:192.168.1.82edu-dfs-tracker-2

存储服务器 1:192.168.1.83edu-dfs-storage-group1-1

存储服务器 2:192.168.1.84edu-dfs-storage-group1-2

存储服务器 3:192.168.1.85edu-dfs-storage-group2-1

存储服务器 4:192.168.1.186edu-dfs-storage-group2-2

环境:CentOS 6.6

用户:root

数据目录:/fastdfs (数据目录按你的数据盘挂载路径而定

 FastDFS v5.05

 libfastcommon-master.zip(是从 FastDFS  FastDHT 中提取出来的公共 C 函数库) 

fastdfs-nginx-module_v1.16.tar.gz

 nginx-1.6.2.tar.gz fastdfs_client_java._v1.25.tar.gz

 源码地址:https://github.com/happyfish100/

 下载地址:http://sourceforge.net/projects/fastdfs/files/

 官方论坛:http://bbs.chinaunix.net/forum-240-1.html

分布式架构高可用架构篇_05_fastdfs集群的安装

一、FastDFS 的安装(所有跟踪服务器和存储服务器均执行如下操作)

 1、编译和安装所需的依赖包:

 # yum install make cmake gcc gcc-c++ 

2、安装 libfastcommon (https://github.com/happyfish100/libfastcommon

 (1)上传或下载 libfastcommon-master.zip 到/usr/local/src 目录,解压

分布式架构高可用架构篇_05_fastdfs集群的安装

 分布式架构高可用架构篇_05_fastdfs集群的安装


(3) 编译、安装 

分布式架构高可用架构篇_05_fastdfs集群的安装

分布式架构高可用架构篇_05_fastdfs集群的安装

libfastcommon 默认安装到了 

/usr/lib64/libfastcommon.so 

/usr/lib64/libfdfsclient.so 

(4)因为 FastDFS 主程序设置的 lib 目录是/usr/local/lib,所以需要创建软链接. 

分布式架构高可用架构篇_05_fastdfs集群的安装

3、安装 FastDFS (https://github.com/happyfish100/fastdfs/releases) 

(1)上传或下载 FastDFS 源码包(FastDFS_v5.05.tar.gz)到 /usr/local/src 目录,解压 

cd /usr/local/src/ 

tar -zxvf FastDFS_v5.05.tar.gz 

cd FastDFS

(3)编译、安装(编译前要确保已经成功安装了 libfastcommon) 

./make.sh 

./make.sh install 

采用默认安装的方式安装,安装后的相应文件与目录 

A、服务脚本在 

/etc/init.d/fdfs_storaged /etc/init.d/fdfs_tracker 

B、配置文件在样例配置文件: 

/etc/fdfs/client.conf.sample 

/etc/fdfs/storage.conf.sample 

/etc/fdfs/tracker.conf.sample 

C、命令工具在/usr/bin/目录下的 

fdfs_appender_test fdfs_appender_test1 fdfs_append_file 

fdfs_crc32 fdfs_delete_file fdfs_download_file fdfs_file_info fdfs_monitor fdfs_storaged fdfs_test fdfs_test1 fdfs_trackerd

 fdfs_upload_appender fdfs_upload_file stop.sh restart.sh

 

(4)因为 FastDFS 服务脚本设置的 bin 目录是/usr/local/bin,但实际命令安装在/usr/bin,可以进入 

/user/bin 目录使用以下命令查看 fdfs 的相关命令: 

cd /usr/bin/ 

ls | grep fdfs