主页 > 其他 > Web集群中文件存储系统的解决方案

Web集群中文件存储系统的解决方案

PDF版本

Web集群中,文件系统的分布式是最重要的一个环节,因为多个Web节点需要访问同一套文件系统,多个节点之间访问文件需要完全同步,跟一台机器上的文件一样。

首先Web集群需要一个Load Balancer,然后多个节点共享数据库和文件系统,比如访问网站example.com,上传了一个文件,这个时候通过LB转发到了A节点,那么文件保存到了A机器,然后我们刷新页面,LB转发到了B节点,如果这个文件在B机器上不存在,就会产生错误。
在Drual系统中就是Files目录,比如我们在A网站上生成了一个image style,如果LB再访问到B上面,如果这个image style不存在,就会出错。

上面的问题,就是我们本文要解决的Web集群中的文件共享。

另外,drupal也有临时文件目录,这个要不要放到共享文件夹里面呢?这个答案请移步这里:
集群服务器,需要共享temp文件夹吗?

那么WEB服务器集群中,文件同步的方案主要有一下几个解决方案。

Rsync

Rsync是最简单的解决方案,通过Linux的rsync命令,就可以非常迅速的实现多个服务器的文件同步。但是Rsync有致命的缺点,首先,rsync会有延时,因为rsync是定时同步,不可能做到及时同步,因此会出现延时,比如传到A机器的图片在B机器上看不见。

说到延时,可以通过session sticky的方案来解决,session sticky简单来说就是访问A机器的用户,会在之后的请求都访问A机器,这样就可以保证用户在下次访问文件的时候不出错。

但是,rsync还有一些问题,比如,A机器上面有一个文件,而B机器上面没有这个文件,从理论上讲,我们不知道是B机器删除了这个文件,还是A机器新加了这个问题,因此这个时候『同步』就是一个很头疼的问题。

因此,Rsync不是一个有效的解决方案。

GlusterFS

GlusterFS(GNU ClusterFile System)是一个开源的分布式文件系统,它的历史可以追溯到2006年,最初的目标是代替Lustre和GPFS分布式文件系统。现在,GlusterFS在开源社区活跃度非常高,已经与Lustre、MooseFS、CEPH并列成为四大开源分布式文件系统。
Glusterfs主要有三种基本的集群模式,即分布式集群(Distributed cluster)、条带集群(Stripe cluster)、复制集群(Replica cluster)。这三种基本集群还可以采用类似堆积木的方式,构成更加复杂的复合集群。
当然,GlusterFS不是一个完美的分布式文件系统,这个系统自身也有许多不足之处,包括众所周知的元数据性能和小文件问题。

Gluster通过简单的brick组成一个volume,这个volume就可以被各种终端使用,比如FUSE或者NFS协议等等使用。

具体的GlusterFS的讲解请参考这一篇文章:使用GlusterFS做为Drupal文件存储的云服务

NFS

比较简单的解决方案就是使用NFS服务,NFS做完linux系统广泛通用的文件共享系统,从NFSv1,NFSv2到NFSv3和NFSv4,NFS也是非常稳定和久经考验的解决方案。

NFS的缺点也是比较明显的,单节点风险,比如NFS服务挂掉,整个文件就能访问,网站Down掉,因此NFS只能作为一个暂存的解决方案,使用NFS一定要有一个备份系统。

NFS集群

说到NFS的缺点,我们可以使用NFS集群的方案来解决,NFS+DRBD, DRBD是一个用软件实现的、无共享的、服务器之间镜像块设备内容的存储复制解决方案,因此可以通过DRBD分发实现NFS的复制,来解决单节点NFS的缺点。

DRBD实际上是一种块设备的实现,主要被用于Linux平台下的高可用(HA)方案之中。他是有内核模块和相关程序而组成,通过网络通信来同步镜像整个设备,有点类似于一个网络RAID的功能。也就是说当你将数据写入本地的DRBD设备上的文件系统时,数据会同时被发送到网络中的另外一台 主机之上,并以完全相同的形式记录在一个文件系统中(实际上文件系统的创建也是由DRBD的同步来实现的)。本地节点(主机)与远程节点(主机)的数据可以保证实时的同步,并保证IO的一致性。所以当本地节点的主机出现故障时,远程节点的主机上还会保留有一份完全相同的数据,可以继续使用,以达到高可用的目的。

DRBD需要构建在底层设备之上,然后构建出一个块设备出来。对于用户来说,一个DRBD设备,就像是一块物理的磁盘,可以在商脉内创建文件系统。DRBD所支持的底层设备有以下这些类:
1. 一个磁盘,或者是磁盘的某一个分区;
2. 一个soft raid 设备;
3. 一个LVM的逻辑卷;
4. 一个EVMS(Enterprise Volume Management System,企业卷管理系统)的卷;
5. 其他任何的块设备。

nfs-drbd

 

更多参考:

《Drupal 文件系统剖析(二)》

《File System和Stream Wrapper的原理介绍》

PS:本文参考了网上相关文章以及图片。

相关提问,请到drupal大学,http://drupal001.net


声明: 本站所有文章欢迎转载,所有文章未说明,均属于原创,转载均请注明出处。
本文有效链接: http://www.drupal001.com/2015/06/multiple-servers-file-storage/
版权所有: Drupal与高性能网站架构 http://www.drupal001.com


, , ,

评论:1

发表评论
  1. avatar
    回复 nolotus
    15/06/18

    不错,希望多写。或者更多细节,受教了

发表评论

电子邮件地址不会被公开。 必填项已用 * 标注


1 × = 八

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

引用:0

下面所列的是引用到本博客的链接
Web集群中文件存储系统的解决方案 来自 Drupal与高性能网站架构
顶部