古道长亭

Contact me with ixiaoqiang0011@gmail.com


  • 首页

  • 归档

  • 分类

  • 关于

  • Book

  • 搜索

FastDFS集群和配置优化

时间: 2023-05-08   |   分类: FastDFS   文件/对象存储   | 字数: 1836 字 | 阅读约: 4分钟 | 阅读次数:

FastDFS集群和配置优化

1. 准备

准备3台服务器, 按之前单机的形式安装好

例:
192.168.1.1 group1
192.168.1.2 group1
192.168.1.3 group2

2. 集群架构搭建

2.1 配置tracker集群

vim /etc/fdfs/tracker.conf

store_lookup=0 # 0是轮询,1是指定组,2是剩余存储空间多的group优先
#为便于测试看到效果,设置成轮询

2.2 配置storage集群

vim /etc/fdfs/storage.conf

tracker_server=192.168.1.1:22122 
tracker_server=192.168.1.2:22122 
tracker_server=192.168.1.3:22122 
group_name=group1 #注意组名 192.168.1.3 配置是 group2 (可自定义不同group机器)
port=23000 #storage 的端口号,同一个组的 storage 端口号必须相同
#启动
/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf restart
/usr/bin/fdfs_storaged /etc/fdfs/storage.conf restart

2.3 查看storage日志:tracker集群信息

#注意, 此处为你自定义的日志路径
cat /home/fastdfs/logs/storaged.log

访问FastDFS时可以把Tracker理解成对等的,但实际底层多个Tracker在
运行过程中会选择其中一个作为Leader,由该Leader执行一些唯一性的操作。
在早期版本中Tracker-Leader有两个作用,
分别是:
	为新加入的Storage分配一个源Storage;
  为开启合并存储的Group选择Trunk-Server。
但是在最新的版本中实际上只有第二个作用,也就是选择Trunk-Server。

#查看之后如果连接不上注意防火墙
systemctl stop firewalld 

2.4 查看存储集群信息

/usr/bin/fdfs_monitor  /etc/fdfs/storage.conf

2.5 测试上传

vim/etc/fdfs/client.conf 

tracker_server=192.168.1.1:22122 
tracker_server=192.168.1.2:22122 
tracker_server=192.168.1.3:22122 

#测试上传
/usr/bin/fdfs_upload_file /etc/fdfs/client.conf hello1.txt 

group1/M00/00/00/cnOr3GJr-0-AQ39fAAAABiSnR18363.txt

3. 使用nginx和fastDFS集群结合

vim /etc/fdfs/mod_fastdfs.conf

tracker_server=192.168.1.1:22122 
tracker_server=192.168.1.2:22122 
tracker_server=192.168.1.3:22122
group_name=group1 #注意组名 如果是group2 则一定要改
vim /usr/local/nginx/conf/nginx.conf

#添加如下配置 
server {
  listen 8888; 
  server_name localhost; 
  location ~/group[0-9]/ { 
    ngx_fastdfs_module; 
  } 
}

#启动nginx 或重启
/usr/local/nginx/sbin/nginx 
/usr/local/nginx/sbin/nginx -s reload

测试,通过任意一台nginx访问:

http://192.168.1.1:8888/group1/M00/00/00/cnOItmJr-0qASItAAAAABiSnR18929.txt

4. FastDFS配置优化

4.1 最大连接数设置

配置文件:tracker.conf 和 storage.conf 
参数名:max_connections 
缺省值:256

说明:FastDFS为一个连接分配一个task buffer,为了提升分配效率,FastDFS采用内存池的做法。 FastDFS老版本直接事先分配 max_connections 个buffer,这个做法显然不是太合理,在 max_connections 设置过大的情况下太浪费内存。

v5.04对预分配采用增量方式,tracker一次预分配 1024个,storage一次预分配256个。

  • define ALLOC_CONNECTIONS_ONCE 1024

总的task buffer初始内存占用情况测算如下

  • 改进前:max_connections * buffer_size

  • 改进后:max_connections和预分配的连接中那个小 * buffer_size

使用v5.04及后续版本,可以根据实际需要将 max_connections 设置为一个较大的数值,比如 10240 甚至更大。

注意此时需要将一个进程允许打开的最大文件数调大到超过max_connections, 否则FastDFS server启动会报错。

vim /etc/security/limits.conf 重启系统生效

* soft nofile 65535

* hard nofile 65535

另外,对于32位系统,请注意使用到的内存不要超过3GB

4.2 工作线程数设置

配置文件:tracker.conf 和 storage.conf 
参数名: work_threads 
缺省值:4 

说明:为了避免CPU上下文切换的开销,以及不必要的资源消耗,不建议将本参数设置得过大。为了发挥出 多个CPU的效能,系统中的线程数总和,应等于CPU总数。

  • 对于tracker server,公式为: work_threads + 1 = CPU数

  • 对于storage,公式为: work_threads + 1 + (disk_reader_threads + disk_writer_threads) * store_path_count = CPU数

4.3 storage目录数设置

配置文件: storage.conf 
参数名:subdir_count_per_path 
缺省值:256

说明:

FastDFS采用二级目录的做法,目录会在FastDFS初始化时自动创建。存储海量小文件,打开了 trunk存储方式的情况下,建议将本参数适当改小,比如设置为32,此时存放文件的目录数为 32 * 32 = 1024。

假如trunk文件大小采用缺省值64MB,磁盘空间为2TB,那么每个目录下存放的trunk文件数均值 为:2TB/(1024 * 64MB) = 32个

4.4 storage磁盘读写线程设置

配置文件: storage.conf 
参数名:disk_rw_separated:磁盘读写是否分离 
参数名:disk_reader_threads:单个磁盘读线程数 
参数名:disk_writer_threads:单个磁盘写线程数 

如果磁盘读写混合,单个磁盘读写线程数为读线程数和写线程数之和,
对于单盘挂载方式,磁盘读写线程分 别设置为1即可 
如果磁盘做了RAID,那么需要酌情加大读写线程数,这样才能最大程度地发挥磁盘性能

4.5 storage同步延迟相关设置

配置文件: storage.conf 
参数名:sync_binlog_buff_interval
	将binlog buffer写入磁盘的时间间隔,取值大于0,缺省值 为60s 
参数名:sync_wait_msec
	如果没有需要同步的文件,对binlog进行轮询的时间间隔,取值大于0,缺省值为200ms 
参数名: sync_interval
	同步完一个文件后,休眠的毫秒数,缺省值为0 
	
为了缩短文件同步时间,可以将上述3个参数适当调小即可
#FastDFS#
QQ扫一扫交流

标题:FastDFS集群和配置优化

作者:古道长亭

声明: 欢迎加群交流!

如有帮助,欢迎多多交流 ^_^

微信打赏

支付宝打赏

Springboot集成fastDFS集群
FastDFS系统架构和功能原理
  • 文章目录
  • 站点概览
古道长亭

古道长亭

Always remember that your present situation is not your final destination. The best is yet to come.

226 日志
57 分类
104 标签
GitHub Gitee
友情链接
  • 古道长亭的BOOK
  • JAVA学习
标签云
  • Mysql
  • 搜索引擎
  • Mybatis
  • 容器
  • 架构
  • 消息队列
  • Flink
  • Sharding sphere
  • 流处理
  • 缓存
  • 1. 准备
  • 2. 集群架构搭建
    • 2.1 配置tracker集群
    • 2.2 配置storage集群
    • 2.3 查看storage日志:tracker集群信息
    • 2.4 查看存储集群信息
    • 2.5 测试上传
  • 3. 使用nginx和fastDFS集群结合
  • 4. FastDFS配置优化
    • 4.1 最大连接数设置
    • 4.2 工作线程数设置
    • 4.3 storage目录数设置
    • 4.4 storage磁盘读写线程设置
    • 4.5 storage同步延迟相关设置
© 2019 - 2024 京ICP备19012088号-1
0%