fastdfs-分布式存储设计指导(三)

来源:互联网 发布:自学java如何找工作 编辑:程序博客网 时间:2024/06/05 09:01
分布式文件存储系统是应对海量文件时所使用的的一种HA的存储方案,如何实现文件的横向扩容,文件冗余备份,快速的配置扩展,高效的读取以及跨语言的api是非常重要的。前两章节介绍了关于fastdfs的安装配置已经使用等,下面将从整个系统的架构,谈一谈如何设计一个基于fastdfs的分布式文件存储系统,从而适合各种基本的业务场景。

下面的架构流程图


1、nginx的负载均衡,分发请求至应用服务器。
2、应用服务器集群,每一个服务器的应用都是相同的实例。
3、tracker追踪服务器集群,这里配置两台。
4、storage存储服务器集群,这里分为三组,每一组两台服务存储,互为备份,每一组存储的文件都是相同的。

下面说一下各个集群的配置。
一、应用服务器集群:
(1)应用服务器不需要安装fastdfs,但需要安装fastdfs的php_client扩展安装过程在前面以说们这里不详说),安装完之后,将php_client/fastdfs_client.ini的内容追加到php.ini中,fastdfs_client.ini中注意配置fastdfs_client.tracker_group0 = /etc/fdfs/client.conf

(2)同时需要在/etc/下面建立fdfs文件夹,再在fdfs先建立一个client.conf的文件(先为空,后续它的内容将从安装了fastdfs的服务器中复制过来一份即可)

client.conf这个文件里面,主要是注意tracker_server这个配置项,因为这里有两个tracker,所以这里需要配置两个tracker_server,一行一个。

那么它的整个过程是php通过client.conf这个文件与tracker_server取得联系,从而返回关于一些storage服务器的信息,最后php与storage通信,完成上传文件功能。

二、tracker服务器集群

每一台的tracker服务器都需要安装fastdfs,安装完毕后,将在/etc/fdfs/生产几个个文件,其中一个是trackered.conf,那么对于trackered.conf服务器,只需要配置trackered.conf这个文件即可,(配置过程请看前两章),当然,我们也可以配置一下client.conf这个文件,便于用于命令行测试上传和下载功能。在这里我们可以将client.conf复制内容至应用服务器的client.conf,再根据需求更改配置。

三、storage服务器集群
(1)每一台storage服务器都要安装fastdfs和nginx,还有fastdfs-nginx-module模块(安装过程请看前两章)
(2)安装完成后,每一台服务器都会在/etc/fdfs下生成几个配置文件,有一个storaged.conf配置文件,主要是设置里面的group_name相同,比如group1,相同组名的是相同的一组,文件互为备份。

(2)在配置mod_fastdfs.conf这个模块配置文件,group_name与本组storaged.conf相同,tracker_server有多少个就写多少个,一行一个。例如tracker_server=192.168.1.67:22122,请参考前面两章配置。

然后再配置nginx.conf这个配置文件。


这里mod_fasfdfs.conf这个文件时放在/etc/fastdfs下面的,在nginx.conf配置好之后,将会通过这个配置文件和tracker服务集群取得联系,返回一些storage集群的信息。然后nginx在与storage通信访问。

那么对于上面的这个流程图来说
第一步:
首先在web前端上传文件至应用服务器,上传完毕后,应用服务器通过php_client的api将文件准备传至storag服务器集群。

第二步:
文件上传至storage服务器集群后,返回文件相关的信息,应用服务器保存信息值相关数据库。

第三步:
前端通过nginx代理访问存贮服务器,直接将访问storage服务器集群的文件

以上只是本人在实验性验证过程,还没有在真实生产环境使用,其实这个只是一个大概的过程,里面还有许多技术细节,比如从应用服务器上传至storage集群,这个需要用到异步或者多线程来实现,因为用户在浏览器上传完毕后,这个过程是一直在等待的,上传大文件本来就比较长时间,上传到应用服务器的临时文件夹后,再要上传至storage,那么这个过程就更加长了。所以,我们希望从应用服务器上传至storage集群时,能够异步上传,然后再回调请求应用服务器。
1 0
原创粉丝点击