FastDFS 集群 安装 配置 使用
参考资料
- 官网地址:
- 下载地址:https://github.com/happyfish100/fastdfs
- 文档地址:
- FastDFS 集群 安装 配置
- 用FastDFS一步步搭建文件管理系统
- CentOS上安装分布式文件系统FastDFS & 配置和问题
一、FastDFS介绍
FastDFS简介: FastDFS 是一个开源的轻量级分布式文件系统。它解决了大数据量存储和负载均衡等问题。特别适合以中小文件(建议范围:4KB < file_size <500MB)为载体的在线服务,如相册网站、视频网站等等。
【存储部署】FastDFS+Nginx及鉴权
1.1 角色
- Storage
存储节点:一个集群中有多个 Storage,Storage 启动时可以指定分组名称,相同分组名的 Storage 组成一个组,同组内 Storage 存储的数据应该是一致的,从而达到数据冗余备份的目的。
Storage 还会定期向 Tracker 汇报自身信息,主要包含自身所属的分组、向同组内其他 Storage 同步数据的进度等。 - Tracker
跟踪节点:一个集群中可以有多个 Tracker,他们的地位是同等的。Tracker 通过接收 Storage 的汇报信息,维护整个集群的状态,并对来自于 Client 的请求进行负载均衡。
由于 Storage 会定期向所有的 Tracker 汇报信息,因此每个 Tracker 都会维护一个从分组名到 Storage 列表的映射关系。Client 向集群写入数据或者读取数据时,都需要先与任意一个 Tracker 连接:
(1)当写入数据时,Tracker 根据一定的策略,从映射关系中选择某个分组的某个 Storage 返回给 Client,然后 Client 连接该 Storage 写入数据。
(2)当读取数据时,结合文件的 ID【ID 中包含分组名等信息】,Tracker 根据一定的策略,从映射关系中选择某个分组的某个 Storage 返回给 Client,然后 Client 连接该 Storage 读取数据。 - Client
请求发起方:Client 通过 API 向 FastDFS 写入、读取、删除数据等。
1.2 集群架构
角色 | 主机 | 存储路径 | 端口 |
---|---|---|---|
tracker | tracker_server_1tracker_server_2 | /data/fdfs_tracker | 22122 |
storage | storage_server_1storage_server_2storage_server_3····(可拓展) | /data/fdfs_storage | 23000(默认) |
client | client_server | /data/fastdfs |
注:
1、搭建时,存储路径及开放端口需按上表规定配置
2、tracker和storage可同时在一个虚拟机上
架构图
二、FastDFS搭建
2.1 安装依赖
//=======安装libfastcommon==========
yum -y install libevent gcc unzip
yum install -y gcc gcc-c++
cd /usr/local
wget https://github.com/happyfish100/libfastcommon/archive/master.zip
unzip master.zip
cd libfastcommon-master/
./make.sh && ./make.sh install
//=======安装fastdfs==========
cd /usr/local
wget https://github.com/happyfish100/fastdfs/archive/master.zip -O fastdfs-master.zip
unzip fastdfs-master.zip
cd fastdfs-master
./make.sh && ./make.sh install
//=======创建数据目录==========
mkdir -p /data/fdfs_tracker
mkdir -p /data/fdfs_storage
2.2.各角色配置
//============tracker节点配置==========
cd /etc/fdfs
cp tracker.conf.sample tracker.conf
vim tracker.conf
disabled=false
port=22122
base_path=/data/fdfs_tracker
http.server_port=80
#外部命令替换
#套接字连接超时秒数,默认30秒
sed -i 's/connect_timeout=30/connect_timeout=10/' /etc/fdfs/tracker.conf
#存储数据和日志文件的基础目录地址(根目录必须存在,子目录会自动创建)
sed -i 's/base_path=\/home\/yuqing\/fastdfs/base_path=\/data\fdfs_tracker/' /etc/fdfs/tracker.conf
sed -i 's/rotate_error_log = false/rotate_error_log = true/' /etc/fdfs/tracker.conf
sed -i 's/log_file_keep_days = 0/log_file_keep_days = 30/' /etc/fdfs/tracker.conf
sed -i 's/http.server_port=8080/http.server_port=80/' /etc/fdfs/tracker.conf
#tracker启动
/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf start
#tracker节点自启动
echo "/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf start">>/etc/rc.d/rc.local
//=======storage节点配置==========
cd /etc/fdfs
cp storage.conf.sample storage.conf
vim storage.conf
disabled=false #启用配置文件
group_name=sfgroup1 #组名,根据实际情况修改
port=23000 #设置storage的端口号
base_path=/data/fdfs_storage #设置storage的日志目录(需预先创建)
store_path_count=1 #存储路径个数,需要和store_path个数匹配
store_path0=/data/fdfs_storage/store #存储路径
tracker_server=tracker_server_1:22122 #tracker服务器的IP地址和端口号 (我这是同一台)
http.server_port=80 #设置http端口号:
#外部命令替换
sed -i 's/connect_timeout=30/connect_timeout=10/' /etc/fdfs/storage.conf
sed -i 's/group_name=group1/group_name=sfgroup1/' /etc/fdfs/storage.conf
#存储数据和日志文件的基础目录地址(根目录必须存在,子目录会自动创
sed -i 's/base_path=\/home\/yuqing\/fastdfs/base_path=\/data\/fdfs_storage/' /etc/fdfs/storage.conf
#逐一配置store_path路径,索引号从0开始,store_path0不配置的话,与base_path路径保持一致
sed -i 's/store_path0=\/home\/yuqing\/fastdfs/store_path0=\/data\/fdfs_storage/store' /etc/fdfs/storage.conf
#指定tracker节点(修改tracker_server ip)
sed -i 's/tracker_server=192.168.209.121:22122/tracker_server=tracker_server_1:22122\ntracker_server=tracker_server_2:22122/' /etc/fdfs/storage.conf
sed -i 's/rotate_error_log = false/rotate_error_log = true/' /etc/fdfs/storage.conf
sed -i 's/log_file_keep_days = 0/log_file_keep_days = 30/' /etc/fdfs/storage.conf
sed -i 's/http.server_port=8888/http.server_port=80/' /etc/fdfs/storage.conf
#storage启动
/usr/bin/fdfs_storaged /etc/fdfs/storage.conf start
#storage节点自启动
echo "/usr/bin/fdfs_storaged /etc/fdfs/storage.conf start">>/etc/rc.d/rc.local
//========client 节点配置, 当需要进fastdfs上传下载时,需要配置client节点===========
mkdir -p /data/fdfs_client
sed -i 's/base_path=\/home\/yuqing\/fastdfs/base_path=\/data\/fdfs_client/' /etc/fdfs/client.conf
#指定tracker节点(修改tracker_server ip)
sed -i 's/tracker_server=192.168.0.197:22122/tracker_server=tracker_server_1:22122\ntracker_server=tracker_server_2:22122/' /etc/fdfs/client.conf
## 上传下载测试 需在配置好fastdfs client配置的节点上进行测试
#上传测试命令:
#fdfs_test /etc/fdfs/client.conf upload upload_file
fdfs_test /etc/fdfs/client.conf upload ~/bd_logo1.png
#下载测试命令:
#fdfs_download_file /etc/fdfs/client.conf
fdfs_download_file /etc/fdfs/client.conf group1/M00/00/00/rBAAe13LwJ-AMSbmAAAexZJI7KM175_big.png
#配置好storge上的nginx后,可使用wget +URL下载
2.3 Nginx搭建
//=========Nginx安装依赖=======
#nginx是c编写的,对于解压的源码进行编译,所以首先设置编译环境: gcc
yum install -y gcc gcc-c++
#Perl库,包括 perl 兼容的正则表达式库
yum install -y pcre pcre-devel
#zlib库提供了很多种压缩和解压缩的方式
yum install -y zlib zlib-devel
#OpenSSL 是一个强大的安全套接字层密码库
yum install -y openssl openssl-devel
//=========Nginx编译安装=======
cp -a nginx-*.tar.gz /usr/loacl
tar -zxvf nginx-*.tar.gz
cd nginx/
./configure --prefix=/data/nginx --user=app --group=app --with-http_ssl_module --with-http_stub_status_module
#--prefix=/data/nginx --user=app --group=app --with-http_ssl_module --with-http_stub_status_module --add-module=../fastdfs-nginx-module-master/src
make && make install
//=========fastdfs-nginx-module插件安装=========
#插件安装
cp fastdfs-nginx-module_*.tar.gz /usr/local
tar -zxvf fastdfs-nginx-module_*.tar.gz
vim fastdfs-nginx-module/src/config
#
:%s/\/usr\/local\/include/\/usr\/include\/fastdfs \/usr\/include\/fastcommon/
cd /usr/lcoal/nginx-*/
./configure --add-module=/usr/local/fastdfs-nginx-module/src
make && make install
//=========Nginx配置=========
cp /usr/local/FastDFS/conf/http.conf /etc/fdfs
cp /usr/local/FastDFS/conf/mime.types /etc/fdfs
cp /usr/local/fastdfs-nginx-module/src/mod_fastdfs.conf /etc/fdfs
vim mod_fastdfs.conf
tracker_server=192.168.194.5:22122
store_path0=/opt/fastdfs_storage
base_path=/opt/fastdfs_storage
load_fdfs_parameters_from_tracker=false
url_have_group_name = true #配置多个tracker时,应该将此项设置为true
//=========Nginx鉴权配置=========
vim /etc/fdfs/http.conf
http.anti_steal.check_token=true
http.anti_steal.token_ttl=60
http.anti_steal.secret_key=FastDFS1234543210
http.anti_steal.token_check_fail=/data/fastdfs/conf/anti-steal.jpg
注意事项
- mod_fastdfs.conf nginx.conf storage.conf 配置中均有组名,一旦改动组名,均需要改动
- 安装Nginx+fastdfs-nginx-module插件是为storage节点提供
三、API集成使用
四、问题记录
Post Directory
扫码关注公众号:暂无公众号
发送 290992
即可立即永久解锁本站全部文章