文章写好有段时间了,如果有任何问题,欢迎留言,我会更正。
😄
1.什么是 FastDFS
FastDFS 是用 c 语言编写的一款开源的分布式文件系统。FastDFS 为互联网量身定制,充分考虑了冗余备份、负载均衡、线性扩容等机制,并注重高可用、高性能等指标,使用 FastDFS 很容易搭建一套高性能的文件服务器集群提供文件上传、下载等服务。
2.FastDFS 架构
FastDFS 架构包括 Tracker server 和 Storage server。客户端请求 Tracker server 进行文件上传、下载,通过 Trackerserver 调度最终由 Storage server 完成文件上传和下载。
Trackerserver 作用是负载均衡和调度,通过 Trackerserver 在文件上传时可以根据一些策略找到 Storageserver 提供文件上传服务。可以将 tracker 称为追踪服务器或调度服务器。
Storageserver 作用是文件存储,客户端上传的文件最终存储在 Storage 服务器上,Storage server 没有实现自己的文件系统而是利用操作系统 的文件系统来管理文件。可以将 storage 称为存储服务器。
2.1 Tracker 集群
FastDFS 集群中的 Tracker server 可以有多台,Tracker server 之间是相互平等关系同时提供服务,Tracker server 不存在单点故障。客户端请求 Tracker server 采用轮询方式,如果请求的 tracker 无法提供服务则换另一个 tracker。
2.2 Storage 集群
Storage 集群采用了分组存储方式。storage 集群由一个或多个组构成,集群存储总容量为集群中所有组的存储容量之和。一个组由一台或多台存储服务器组成,组内的 Storage server 之间是平等关系,不同组的 Storageserver 之间不会相互通信,同组内的 Storageserver 之间会相互连接进行文件同步,从而保证同组内每个 storage 上的文件完全一致的。一个组的存储容量为该组内存储服务器容量最小的那个,由此可见组内存储服务器的软硬件配置最好是一致的。
采用分组存储方式的好处是灵活、可控性较强。比如上传文件时,可以由客户端直接指定上传到的组也可以由 tracker 进行调度选择。一个分组的存储服务器访问压力较大时,可以在该组增加存储服务器来扩充服务能力(纵向扩容)。当系统容量不足时,可以增加组来扩充存储容量(横向扩容)。
2.3 Storage 状态收集
Storage server 会连接集群中所有的 Tracker server,定时向他们报告自己的状态,包括磁盘剩余空间、文件同步状况、文件上传下载次数等统计信息。
3 开始搭建
3.1 FastDFS-tracker 安装
3.1.1 下载
tracker 和 storage 使用相同的安装包,https://github.com/happyfish100/FastDFS.
下面用到与 fastdfs 相关的包,都可以在 https://github.com/happyfish100 找到
3.1.2 gcc
FastDFS 是 C 语言开发,建议在 linux 上运行,本教程使用 Centos6.4 作为安装环境。
安装 FastDFS 需要编译,编译依赖于 gcc 环境,如果没有 gcc 环境,需要安装 gcc:
sudo yum install gcc-c++
3.1.3 libevent
FastDFS 依赖 libevent 库,需要安装:
sudo yum -y install libevent
3.1.4 libfastcommon
libfastcommon 是 FastDFS 官方提供的,libfastcommon 包含了 FastDFS 运行所需要的一些基础库。
将 libfastcommonV1.0.7.tar.gz 解压,执行以下命令
tar -zxvf libfastcommonV1.0.7.tar.gz
cd libfastcommon-1.0.7
./make.sh
./make.sh install /usr/local
注意:如果后面遇到问题,可以试下这里,如果没问题就不需要理会。
libfastcommon.so 安装好后会自动将库文件拷贝至/usr/lib64 下,由于 FastDFS 程序引用 usr/lib 目录所以需要将/usr/lib64 下的库文件拷贝至/usr/lib 下。
3.1.5 tracker 编译安装
tar -zxvf FastDFS_v5.05.tar.gz
cd FastDFS
./make.sh
./make.sh install /usr/local
安装成功将安装目录下的 conf 下的文件拷贝到/etc/fdfs/下。
sudo cp conf/* /etc/fdfs/
3.1.6 配置
安装成功后进入/etc/fdfs 目录:
vi tracker.conf
修改其中内容:
base_path = /home/yuqing/FastDFS
改为:
base_path=/home/FastDFS
这里需要注意,没有 /home/FastDFS 这个目录需要创建
sudo mkdir -p /home/FastDFS
3.1.7 启动
执行以下命令启动
fdfs_trackered /etc/fdfs/tracker.conf restart
第一次启动并没有任何提示,可以进入/home/FastDFS/logs 下查看日志
设置开机自动启动:
sudo vi /etc/rc.d/rc.local
添加以下内容:
fdfs_trackerd /etc/fdfs/tracker.conf restart
3.2 FastDFS-storage 安装
在同一台机子上继续装 storage,编译方法同 tracker,
3.2.1 配置
下面讲下配置
sudo vi /etc/fdfs/storage.conf
修改以下内容:
group_name=group1
base_path=/home/yuqing/FastDFS 改为: base_path=/home/FastDFS
store_path0=/home/yuqing/FastDFS 改为: store_path0=/home/FastDFS/fdfs_storage (这里需要注意,如果fdfs_storage没有创建,需要手工创建)
tracker_server=192.168.36.129:22122 #配置tracker服务器ip
3.2.2 启动
fdfs_storaged /etc/fdfs/storage.conf restart
设置开机自动启动
sudo vi /etc/rc.d/rc.local
添加以下内容:
fdfs_storaged /etc/fdfs/storage.conf restart
3.3 上传图片测试
sudo vi /etc/fdfs/client.conf
修改以下内容:
base_path=/home/FastDFS
tracker_server=192.168.36.129:22122
修改完后,使用以下命令上传图片
fdfs_test /etc/fdfs/client.conf upload /home/llq/Pictures/loading.gif
执行后,会打印出以下内容:
http://192.168.36.129/group1/M00/00/00/wKgkgVqzrQiAaI71AAAqm9RPKXs429.gif
使用浏览器访问此 url,能正常显示图片则为搭建成功。
3.4 FastDFS 和 nginx 整合
由于我们只有一台服务器,所以就在 storage 上安装 nginx。
3.4.1 FastDFS-nginx-module
下载好包后,执行以下命令:
unzip fastdfs-nginx-module-master.zip
cd fastdfs-nginx-module-master/src
将 FastDFS-nginx-module/src 下的 mod_fastdfs.conf 拷贝至/etc/fdfs/下
cp mod_fastdfs.conf /etc/fdfs/
修改 conf 内容:
vi /etc/fdfs/mod_fastdfs.conf
修改以下内容:
base_path=/home/FastDFS
tracker_server=192.168.36.129:22122
url_have_group_name = true
store_path0=/home/FastDFS/fdfs_storage
将 libfdfsclient.so 拷贝至/usr/lib 下
cp /usr/lib64/libfdfsclient.so /usr/lib/
创建 nginx/client 目录
sudo mkdir -p /var/temp/nginx/client
重新配置 nginx,添加模块,然后编译
./configure --prefix=/usr/local/nginx --add-module=/home/llq/developer/fastdfs-nginx-module-master/src
make
make install
添加 nginx 相应的 conf 文件
cd /usr/local/nginx/conf
vi nginx.conf
添加以下内容:
include vhost/*.conf;
进入 vhost,添加配置文件
cd vhost
vi nginx-fdfs.conf
server {
listen 80;
server_name 192.168.36.129;
location /group1/M00/ {
ngx_fastdfs_module;
}
}
添加好之后,重启 nginx
sudo /usr/local/nginx/sbin/nginx -s reload
出现以下字样则成功:
ngx_http_fastdfs_set pid=13534
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于