FasterDFS 概述
? FastDFS 是一个开源的轻量级分布式文件系统, 它对文件进行管理, 功能包括: 文件存储, 文件同步, 文件访问 (文件上传, 文件下载) 等, 解决了大容量存储和负载均衡的问题. 特别适合以文件为载体的在线服务, 如相册网站, 视频网站等等.
? FastDFS 为互联网量身定制, 充分考虑了冗余备份, 负载均衡, 线性扩容等机制, 并注重高可用, 高性能等指标, 使用 FastDFS 很容易搭建一套高性能的文件服务器集群提供文件上传, 下载等服务.
? FastDFS 服务端有两个角色: 跟踪器 (tracker) 和存储节点(storage). 跟踪器主要做调度工作, 在访问上起负载均衡的作用.
? 跟踪器和存储节点都可以由一台或多台服务器构成. 跟踪器和存储节点中的服务器均可以随时增加或下线而不会影响线上服务. 其中跟踪器中的所有服务器都是对等的, 可以根据服务器的压力情况随时增加或减少. 在卷中增加服务器时, 同步已有的文件由系统自动完成, 同步完成后, 系统自动将新增服务器切换到线上提供服务.
实验环境
服务器角色 | IP 地址 |
---|---|
tracker | 192.168.45.135 |
storage+nginx | 192.168.45.132 |
第一步: 安装 libfastcommon 服务(所有节点均进行安装)
1. 安装基础环境包
yum -y install libevent libevent-devel perl make gcc zlib zlib-devel pcre pcre-devel gcc-c++ openssl-devel
2. 安装 libfastcommon
- wget https://github.com/happyfish100/libfastcommon/archive/V1.0.38.tar.gz
- tar zxf V1.0.38.tar.gz -C /opt/
- cd /opt/libfastcommon-1.0.38/
3. 编译安装
./make.sh && ./make.sh install
4. 建立软链接方便系统识别
- ln -s /usr/lib64/libfastcommon.so /usr/local/lib/libfastcommon.so
- ln -s /usr/lib64/libfdfsclient.so /usr/local/lib/libfdfsclient.so
- ln -s /usr/lib64/libfdfsclient.so /usr/lib/libfdfsclient.so
第二步: 安装 FastDFS 服务(所有节点均进行安装)
1. 下载安装 fastDFS
- wget https://github.com/happyfish100/fastdfs/archive/V5.11.tar.gz
- tar zxf V5.11.tar.gz -C /opt/
- cd /opt/fastdfs-5.11/
2. 编译安装
./make.sh && ./make.sh install
3. 复制模板文件进行修改
- # 切换配置文件模板路径
- cd /etc/fdfs/
- cp tracker.conf.sample tracker.conf
- cp storage.conf.sample storage.conf
- cp client.conf.sample client.conf
第三步: 配置 tracker 监控端
1. 建立数据文件, 日志文件存放目录
mkdir -m 755 -p /opt/fastdfs
2. 修改 tracker 配置文件
- VIM /etc/fdfs/tracker.conf
- # 修改以下配置
- port=22122
- #tracker 服务默认端口 22122 即可
- base_path=/opt/fastdfs
- #tracker 存储 data 和 log 的跟路径, 必须提前创建好
- http.server_port=8080
- #tracker 服务器上启动 http 服务进程
3. 开启服务并设置开机自启
- # 开启服务(命令支持 start|stop|restart)
- fdfs_trackerd /etc/fdfs/tracker.conf start
- netstat -atnp | grep 22122
- # 设置开机自启
- VIM /etc/rc.local
- # 末行添加
- fdfs_trackerd /etc/fdfs/tracker.conf start
- # 关闭防火墙和安全功能
- systemctl stop firewalld
- setenforce 0
第四步: 配置 storage 服务端
1. 建立数据文件, 日志文件存放目录
mkdir -m 755 -p /opt/fastdfs
2. 修改 storage 配置文件
- VIM /etc/fdfs/storage.conf
- group_name=group1
- # 默认组名, 根据实际情况修改
- port=23000
- #storge 默认 23000, 同一个组的 storage 端口号必须一致
- base_path=/opt/fastdfs
- #storage 日志文件的根路径
- store_path_count=1
- # 与下面路径个数相同, 默认为 1
- store_path0=/opt/fastdfs
- # 提供的存储路径(默认与日志文件存放在一起)
- tracker_server=192.168.45.135:22122
- #tracker 服务器 IP
- http.server_port=80
- #http 访问文件的端口默认为 8888,nginx 中配置的监听端口保持一致
3. 开启服务并设置开机自启
- # 开启服务(命令支持 start|stop|restart)
- fdfs_storaged /etc/fdfs/storage.conf start
- netstat -atnp | grep 23000
- # 设置开机自启
- VIM /etc/rc.local
- # 末行添加
- fdfs_storaged /etc/fdfs/storage.conf start
- # 关闭防火墙和安全功能
- systemctl stop firewalld
- setenforce 0
4. 检查是否与 tracker 监控端关联成功
- fdfs_monitor /etc/fdfs/storage.conf
- Storage 1:
- id = 192.168.45.135
- ip_addr = 192.168.45.135 (storage) ACTIVE
- http domain =
第五步: 在 storage 端安装 nginx 服务
1. 安装 nginx 及其组件
tar zxf nginx-1.12.0.tar.gz -C /opt/
2. 下载 fastdfs-nginx-module 安装包
- wget https://github.com/happyfish100/fastdfs-nginx-module/archive/V1.20.tar.gz
- tar zxf V1.20.tar.gz -C /opt/
3. 编译安装
- cd /opt/nginx-1.12.0
- ./configure --prefix=/usr/local/nginx --add-module=/opt/fastdfs-nginx-module-1.20/src/
- make && make install
解决报错的方案
报错信息:
/usr/include/fastdfs/fdfs_define.h:15:27: fatal error: common_define.h: No such file or directory
处理方法:
修改 fastdfs-nginx-module-1.20/src/config 文件, 然后重新第 7 步开始
- ngx_module_incs="/usr/include/fastdfs /usr/include/fastcommon/"
- CORE_INCS="$CORE_INCS /usr/include/fastdfs /usr/include/fastcommon/"
4. 配置 fastdfs-nginx-module 模块
- cd fastdfs-nginx-module-1.20/src
- cp mod_fastdfs.conf /etc/fdfs/
- # 移动其配置文件至 fdfs 目录下
- # 修改配置文件 mod-fasts.conf
- VIM /etc/fdfs/mod_fastdfs.conf
- # 检查以下配置
- base_path=/opt/fastdfs
- # 存放数据文件, 日志的路径
- tracker_server=192.168.45.132:22122
- #tracker 端的地址
- url_have_group_name = true
- #url 是否包含 group 名称
- storage_server_port=23000
- # 需要和 storage 配置的相同
- store_path_count=1
- # 存储路径个数, 需要和 store_path 个数匹配
- store_path0=/opt/fastdfs
- # 文件存储的位置
5. 修改 nginx 配置文件
- VIM /usr/local/nginx/conf/nginx.conf
- # 空行处追加以下内容
- location ~/M00 {
- root /opt/fastdfs/data;
- ngx_fastdfs_module;
- }
6. 拷贝 fastdfs 并解压目录中的 http.conf 和 mime.types
- cd /opt/fastdfs-5.11/conf/
- cp mime.types http.conf /etc/fdfs/
7. 开启 Nginx 服务
- # 创建软连接让系统识别 nginx 启动脚本
- ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/
- # 开启服务
- nginx
第六步: 配置 client 客户端
修改配置文件
- VIM /etc/fdfs/client.conf
- base_path=/opt/fastdfs
- #tracker 服务器文件路径
- tracker_server=192.168.45.132:22122
- #tracker 服务器 IP 地址和端口号
- http.tracker_server_port=8080
- #tracker 服务器的 http 端口号, 必须和 tracker 的设置对应起来
三, 验证分布式效果命令
上传测试文件命令
/usr/bin/fdfs_upload_file <config_file> <local_filename>
实例演示
/usr/bin/fdfs_upload_file /etc/fdfs/client.conf test.jpg
查看上传的图片
下载文件命令
/usr/bin/fdfs_download_file <config_file> <file_id> [local_filename]
删除文件命令
/usr/bin/fdfs_delete_file <config_file> <file_id>
FasterDFS 分布式文件系统(实例!!!)
来源: http://www.bubuko.com/infodetail-3346082.html