你好,欢迎访问我的博客!登录
当前位置:首页 - Linux - 正文 君子好学,自强不息!

TFS运维方案

2016-08-08Linux撒加3428°c
A+ A-

TFS使用背景

天天拍车原有图片集中存放在由FastDFS构成的分布式文件系统中,在使用过程中对FastDFS进行过扩容,在扩容的过程中,发现FastDFS有如下的问题:

1、 集群扩容必须是以组为单位进行,每组机器必须有2台存储容量一致的机器构成,比较浪费机器

2、 扩容的机器如果使用裸盘,盘数过多对于Nginx的配置有影响

3、 Fastdfs-nginx-module不支持通过API接口进行图片的上传、删除、修改等,仅支持读取

4、 集群本身不支持负载均衡

为了规避FastDFS集群的一些弊端,选择使用TFS承担其图片存储的业务。

TFS优点

1、 扩容只需要新增DS即可,集群自动对容量进行负载均衡,保持每台机器占用的空间大致相当;

2、 nginx-tfs模块支持通过API对图片进行上传、读取、修改、删除等操作,方便应用的开发;

3、 单机裸盘越多,单机可开启的DS进程就越多,是整机提供DS服务时性能更好

TFS缺点

1、对运维人员技术要求过高,维护性较FastDFS

TFS集群架构介绍

天天拍车TFS集群有2Name Server5Data Server2Tengine with TFS构成,集群裸容量有120TB,在保留2份副本的情况下,集群可用总容量为60T,可提供服务的容量为总容量的90%,当集群使用容量超过90%时就可对集群进行扩容。

方案中Tengine TFS模块与Name Server之间,Name ServerData Server之间均为长连接,降低内核TCP的开销

图片的处理由lua脚本调用gm指令来执行,lua脚本由Tengine with lua来实际处理。

图片上传、修改由安装了Tengine的虚拟机承担

图片的读取及缩放裁剪由安装了Tengine的物理机承担

TFS集群示意图

TFS.png


TFS集群情况

开源组件信息

TFS2.2.16

Tengine2.1.2

 

硬件信息

Tengine1台物理机  1台虚拟机

Name Server2

Data Server5

TFS集群监控

Tfs.diskused:集群已使用容量

Tfs.disktotal:集群总容量

Tfs.conn:集群读取总连接

Tfs.block:集群总block

Tfs.block_0:集群中损坏的block数量

Tfs.block_1:集群中还未复制的block数量

Tfs.block_2:集群中副本数为2block数量

TFS集群注意事项

1、 扩容

当整个集群的可用容量超过90%时就需要对DS进行扩容了,因新加机器会让现有DS迁移block到新加入的DS上,这时会导致网卡流量过大甚至满载,扩容须放在晚上业务低峰期进行,当然可以创建crontab,通过admintool在合适的时间开启和关闭迁移TASK。

2、 硬盘损坏

发现DS有损坏的硬盘的时候,操作流程应为停止对应磁盘的DS进程->更换新的硬盘->使用stfs格式化该硬盘->启动磁盘对应的DS进程

3、 出现坏块

当集群中的DS出现坏块时既某个block的副本数为0时,可通过admintool进入NS命令行管理界面使用remove_block移除坏块,坏块较多时可结合ssm写脚本来处理

4、 RAIDnon-RAID

DS的机器不建议使用RAID,因TFS本身支持多个block的副本,所以不需要硬件层面的RAID来做保障,而应直接将每块磁盘配置为non-RAID模式,提升单机DS的整体IOPS

TFS优化事项

1、 DS可用挂载容量

mount_maxsize配置一般为单块磁盘容量的95%,单位为字节

2、 配置文件中对平均文件大小的设置

avg_file_size单位为字节,可根据集群提供的业务场景进行估算,例如存放图片,图片平均大小为150K,就可以配置为avg_file_size=153600

3、 MTU以及巨型帧的开启

服务器增加MTU可以在传输数据时明显缩短网络传输所好用的时间,同时提升服务器吞吐能力,一般服务器建议MTU设置为9000,在与服务器相连的交换机上开启巨型帧,保证数据从源到目的整个链路都可以支持9000MTU

4、 Tengine TFS模块中的超时时间的设置

tfs_send_timeout 600s;Nginx发送请求到tfs ns的超时时间

tfs_connect_timeout 30s;Nginxtfs ns建立连接的超时时间

tfs_read_timeout 600s;Nginxtfs ns读取数据的超时时间

5、 Tengine开启tfo以及reuseport

TFO以及SO_REUSEPORT均为提升Tengine性能的功能,其中需要TFO功能的话需要将服务器内核升级到3.10

SO_REUSEPORT功能是将Tengine监听的端口可以监听在所有nginx进程上提升性能,该功能在CentOS 6.5以上的内核中直接支持,编译Tengine时将自动编译进该功能,可以在nginx.confevent段设置reuse_port on即可开启。

6、 集群状态的查看

ssm –s NSIP:PORT –i block查看集群中所有block的信息

ssm –s NSIP:PORT –i server查看集群中所有server中每块磁盘的信息

ssm –s NSIP:PORT –i machine 查看集群中每台DS的整机容量信息

  选择打赏方式
微信赞助

打赏

QQ钱包

打赏

支付宝赞助

打赏

  选择分享方式
  移步手机端
TFS运维方案

1、打开你手机的二维码扫描APP
2、扫描左则的二维码
3、点击扫描获得的网址
4、可以在手机端阅读此文章
推荐阅读

发表评论

选填

必填

必填

选填

请拖动滑块解锁
>>


  用户登录