1,FastDFS基本介绍:
FastDFS 系统有三个角色,跟踪服务器(Tracker Server)、存储服务器(Storage Server)和客户端(Client)。
Tracker Server: 跟踪服务器,主要做调度工作,起到均衡的作用;负责管理所有的 storage server和 group,每个 storage 在启动后会连接Tracker,告知自己所属 group 等信息,并保持周期性心跳。
Storage Server:存储服务器,主要提供容量和备份服务;以 group 为单位,每个 group 内可以有多台 storage server,数据互为备份。
Client:客户端,上传下载数据的服务器,也就是我们自己的项目所部署在的服务器。这里免不了放一张余庆老师介绍 FastDFS 的 PPT 中的一张架构图,清晰的说明了上述职责及关系:
这里免不了放一张余庆老师介绍 FastDFS 的 PPT 中的一张架构图,清晰的说明了上述职责及关系:
上述架构优点:
1.高可靠性:无单点故障
2.高吞吐性:只要 Group 足够多,数据流量将足够分散。
那么怎么上传下载以及同步文件这么操作呢?我在这就不详细说全部流程了,大概上传流程就是客户端发送上传请求到Tracker Server服务器,接着Tracker Server服务器分配group和Storage Server,当然这是有一定规则的,选择好Storage Server后再根据一定规则选择存储在这个服务器会生成一个file_id,这个file_id 包含字段包括:storage server ip、文件创建时间、文件大小、文件 CRC32 校验码和随机数;每个存储目录下有两个 256 * 256 个子目录,后边你会知道一个Storage Server存储目录下有好多个文件夹的,storage 会按文件file_id进行两次 hash ,路由到其中一个子目录,然后将文件存储到该子目录下,最后生成文件路径:group 名称、虚拟磁盘路径、数据两级目录、file_id和文件后缀就是一个完整的文件地址。
2,FastDFS 在 CentOS 下配置安装部署
一、安装 libfastcommon 和 FastDFS
1,下载安装 libfastcommon ,这里是通过wget下载:
wget https://github.com/happyfish100/libfastcommon/archive/V1.0.7.tar.gz
解压 libfastcommon,命令:
tar -zxvf V1.0.7.tar.gz
移动解压目录到/usr/local下:
mv libfastcommon-1.0.7/usr/local/
编译,进入libfastcommon-1.0.7目录,命令:
cd/usr/local/libfastcommon-1.0.7./make.sh
2安装,命令:
./make.shinstall
显示这样的画面,就是安装 libfastcommon 成功啦。
2,下载安装 FastDFS,这里也是通过wget下载
wget https://github.com/happyfish100/fastdfs/archive/V5.05.tar.gz
解压 FastDFS ,命令:
tar -zxvf V5.05.tar.gz
移动解压目录到/usr/local下:
mv fastdfs-5.05//usr/local/
编译,进入fastfds-5.05目录,命令:
cd /usr/local/fastdfs-5.05./make.sh
安装,命令:
./make.sh install
显示这样的画面,就是安装 FastDFS 成功啦。
二、配置 Tracker 服务
上述安装成功后,在/etc/目录下会有一个fdfs的目录,进入它。会看到三个.sample后缀的文件,这是作者给我们的示例文件,我们需要把其中的tracker.conf.sample文件改为tracker.conf配置文件并修改它。参照以下命令:
cd /etc/fdfs/
cp tracker.conf.sample tracker.conf
vim tracker.conf
// 编辑tracker.conf文件,找到你需要修改的两个参数就可以了,我这里不做修改,用默认的
# thebasepathtostore dataandlog files// 数据和日志的存放目录
base_path=/home/yuqing/fastdfs
# HTTP port on this tracker server// http服务端口
http.server_port=8070
修改完成后我们需要建立tracker的工作目录,不然启动报错(上面base_path配置的目录)
mkdir -p /home/yuqing/fastdfs
启动tracker服务:
/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf start
查看监听:
ps -ef|grep fdfs 或 netstat -lnpt|grep fdfs
看到trackerd服务正常启动后,这时候就算 Tracker服务安装成功啦!
三、配置 Storage 服务
现在开始配置 Storage 服务,由于我这是单机器测试,你把 Storage 服务放在多台服务器也是可以的,它有 Group(组)的概念,同一组内服务器互备同步,这里不再演示。直接开始配置,依然是进入/etc/fdfs的目录操作,首先进入它。会看到三个.sample后缀的文件,我们需要把其中的storage.conf.sample文件改为storage.conf配置文件并修改它。参照以下命令:
cd /etc/fdfs/
cp storage.conf.sample storage.conf
vim storage.conf
打开storage.conf文件后,找到下面参数进行修改:
# the base path to store data and log files // 数据和日志的存放目录
base_path=/home/yuqing/fastdfs
# path(disk or mount point) count, default value is 1 // storage在存储文件时支持多路径,默认只设置一个(下面store_path0配置的数量个数)
store_path_count=1
# store_path#, based 0, if store_path0 not exists, it's value is base_path // 配置多个store_path路径,从0开始,如果store_path0不存在,则base_path必须存在
# the paths must be exist
// 此处可以配置多个路径,如:store_path0=xx, store_path1=xx,store_path2=xx
// 多个项目的文件按照文件夹分割,通过/usr/bin/fdfs_upload_file
[storage_ip:port] [store_path_index] 选择storage服务器和store_path角标上传到相应的项目下 store_path0=/home/yuqing/fastdfs
# tracker_server can ocur more than once, and tracker_server format is // 设置tracker_server
# "host:port", host can be hostname or ip address
tracker_server=192.168.2.121:22122
修改完成后我们需要建立tracker的工作目录,不然启动报错(上面base_path配置的目录和store_path0配置的目录)
mkdir-p /home/yuqing/fastdfs
启动storage服务:
/usr/bin/fdfs_storaged /etc/fdfs/storage.conf start
查看监听:
ps -ef|grep fdfs 或 netstat -lnpt|grep fdfs
很好,22122 和 23000端口都在监听了,这个时候你去/home/yuqing/fastdfs文件夹下看的话,会出现一大堆文件夹,而且进去还有一大堆,哈哈,这就是存放文件的啦!
到这里,我们安装配置并启动了 Tracker 和 Storage 服务,也没有报错了。那他俩是不是在通信呢?我们可以监视一下:
/usr/bin/fdfs_monitor /etc/fdfs/storage.conf
看到我红线处ACTIVE这样就 ok 啦!
四、配置 fdfs_upload_file 上传文件
依然是进入/etc/fdfs的目录操作,首先进入它。会看到三个.sample后缀的文件,我们需要把其中的client.conf.sample文件改为client.conf配置文件并修改它。参照以下命令:
cd /etc/fdfs/
cpclient.conf.sample client.conf
vim client.conf
找到下面参数进行修改:
# the base path to store log files // 日志的存放目录
base_path=/home/yuqing/fastdfs
# tracker_server can ocur more than once, and tracker_server format is // tracker_server服务的地址和端口号
# "host:port", host can be hostname or ip address
tracker_server=192.168.2.121:22122
修改完成后我们就可以通过/usr/bin/fdfs_upload_file命令上传文件了,/usr/bin/fdfs_upload_file 命令用法:
[root@localhost fdfs]# /usr/bin/fdfs_upload_file
Usage: /usr/bin/fdfs_upload_file
[storage_ip:port] [store_path_index] // 命令 配置文件 上传的文件 storage_ip和端口 store_path角标