FastDFS服务双硬盘加验证配置

举报
郁唯xiaolin 发表于 2019/01/16 11:46:05 2019/01/16
【摘要】 主要介绍FastDFS使用多硬盘的方式进行扩容,并对可能产生的告警进行说明。

一、FastDFS扩容的方法介绍

    FastDFS扩容有大概两种方式:

        第一种方法比较简单快速,增加storage的group组即可;

            就是增加一组storage服务组,在其中的配置文件出,修改group_name,修改tracker_server为已有的tracker且必须全部都要写上,不然可能tracker_server之间的信息状态会不同步。

        第二种是在已有组中增加硬盘的方法,此方法在之前的文章中有介绍,其中稍微有一些缺陷:

            在此重新介绍下双硬盘的storage的配置:双硬盘是在已有的storage组里每台机器添加容量相同的硬盘,并挂载到其中的盘符下。如下图,磁盘挂载到/home1目录下面。然后在其中创建目录。

            如果不考虑使用nginx取文件,则到此就可以结束了,但是有时候会通过使用nginx取查看文件,所以,,需要修改nginx的配置文件,nginx.conf 、mod_fastdfs.conf,使nginx能够支持对不同的group组和存储路径(如M00、M01)的文件的查看

            6c2db33e-4038-4708-b106-2f8325baa718.png

        第三种:在华为云购买的云主机和云硬盘的话,还有一种扩容方式是直接扩容磁盘大小。

            华为云购买的数据盘,挂载到服务器之后,不进行分区直接使用mkfs -t ext4 /dev/vdX进行格式化,然后挂载到云主机的某个目录下。

            扩容时,在云主机卸载磁盘,然后云平台卸载磁盘,然后在云平台进行扩容磁盘操作(要花钱的哦哈哈。。),之后云平台挂载到云主机,找到华为云帮助文档,查看到需要在云主机中执行命令e2fsck -f /dev/vdX(检查系统文件的正确性)和resize2fs /dev/vdX (扩展文件系统的大小)

            

 

二、FastDFS扩容操作步骤

    由于已有的磁盘存储已经到80%,所以,FastDFS必须扩容。综合考虑增加组的话既增加硬盘又增加主机、已有的组的存储数据只有读取而且读取的频率不会太高,现有业务产生的系统IO也不太高,所以综合下决定采用在已有的storage组中添加磁盘的方式进行扩容。

    由于公司业务修改之后需要使用NGINX从storage中获取图片的,所以,需要配置nginx以支持从nginx中获取FastDFS中的文件内容

    

    1、修改FastDFS的storage配置文件

        修改storage.conf

        6c2db33e-4038-4708-b106-2f8325baa718.png

        此处修改了storage.conf的配置之后,需要重启storage服务,在重启其中一个的时候,会产生报错,重启了同组的另一个storage服务之后,报错就会消失。

报错内容如下图:

TIM截图20190116114330.png

报错原因:两台storage的store_path_count 必须一致不然存在M01的数据同步不到另外一台storage上。


        这个连接中有解释:https://blog.csdn.net/vichou_fa/article/details/78774368

    2、修改mod_fastdfs.conf配置文件

        首先nginx服务得能支持mod_fastdfs模块,安装方法自行百度吧。

        修改 mod_fastdfs.conf   ,需要修改下图中的几处。 

        4d55d4e9-481b-4767-809e-4d95813962a8.png

        修改以上两处,和storage的地方相同,建议每一个组都采用这种方式;

        64fdd934-4382-4902-ace0-5202cef40953.png

        修改此两处,特别注意group_name/storage_path_count/store_path的配置,一定要正确,如果有两个path,就写两个,有几个组就写几个组。此处现实生产中的配置中有一些不一样的地方,在文章结尾处写这个问题)

    3、修改storage服务器中的nginx的配置文件

修改nginx配置文件/usr/local/nginx/conf/nginx.conf

9fa53fdc-8193-4583-b3b8-dc6f5ca7d770.png

        在此处有location ,我觉得可以将M00和M01这个东西给去掉,然后在最前端的nginx中做不同组的不同的转发后端,这地方写配置文件的话,就不需要写那么多group了,只需要写此NGINX所在storage的group组即可。

    注意,此处有M00和M01 ,需要在storage的数据目录做软链接,支持这种操作,命令如下:

 

ln -s /home/fastdfs/storage/data/ /home/fastdfs/storage/data/M00

ln -s /home1/fastdfs/storage/data/ /home/fastdfs/storage/data/M01

 

4、由于nginx的话,可能会被遍历目录,所以采用token限制访问,token是程序那边返回的,且设定限定有效时间,需要在配置文件中放开。

    配置如下:

        5d1451f6-97a5-4819-aa2d-836e52150dbd.png

有一个timg.jpg的图片,需要注意,写对,理论上这个图片可以是任意图片,但是路径一定要对。

注意开启http.anti_steal.check_token=true,注意写对secret_key这个。

 

###后续补充为什么nginx的mod_fastdfs.conf配置文件在集群中有不一样的配置。

FastDFS集群配置.png

集群配置如上,因为在这个扩容的过程中不牵涉到tracker ,故没有在此图中画出。

1、其中负载均衡后的nginx,是业务层根据域名做的域名请求转发。不同的group组转发到相应的FastDFS-nginx组上

2、FastDFS-nginx中有nginx和storage两个服务,其中storage服务的配置文件正常的配置双硬盘的方法;nginx的nginx.conf的配置文件也需要按照上面nginx的配置添加配置内容如下:

location ~/group([0-9])/M01 {

   ngx_fastdfs_module;

}

nginx.conf配置文件修改好之后,修改mod_fastdfs.conf配置的时候,在group1组的只需要在末尾那些配置group组的配置文件的地方填写group1的配置即可,group2组只需要填写group1的配置,不需要每个storage的mod_fastdfs.conf的末尾的配置完全一样。这样就会造成不同组的mod_fastdfs.conf最后不一致。但是官方给的方案是要一致。可能是考虑到负载均衡或者是单独的对一个fastdfs的nginx请求的时候,不管是请求那个组都请求一个nginx ,那样的话,会造成请求不到的情况。如果区分好了请求group1只给group1的storage服务器中的nginx。那样就不会出错。

 

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。