FastDFS 集群 安装 配置 使用

2021/03/13

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
即可立即永久解锁本站全部文章