在Web服务器之间共享文件和资源

我们的多数客户拥有多个web和应用程序服务器来运行自己的系统。他们这样做出于多种原因,包括高可用性、可扩展性,以及切分不同的功能和服务。
 
这么做带来的问题是,在不同的web服务器之间如何共享各种资源 - 如图像、代码、多媒体文件,等等。方法很多,但其中的某些方法显得更有用,或者说比其他的方法更安全,当然,每种方法在不同的情况或数据大小的情况下,有着各自不同的优点。
 
面 对这样的系统,首要原则是永远不要把应用程序代码放在一个像NFS这样的共享资源上面。因为这会在很多地方产生性能问题和其他严重的可靠性问题,所以不要 这么做。您可以使用rsync方法或者从NFS上复制的办法来产生一份本地拷贝,但是切记,始终要有一份本地拷贝,始终。
 
如非代码,而是网站图像、用户图片、音乐、静态内容等资源,那么如果可能,应该使用共享。
 
要 共享,第一件要考虑的事情是这些文件是从哪里来、谁更新它们。在大多数系统中,所有的web服务器都需要读取和写入文件,例如用户上传图像。但在其他的, 如静态网站图像这样的系统中,一台服务器(如 web1)可能负责写入,而其他服务器则只需从它上面同步,这样会更加方便。
 
最 简单的系统只需要共享静态文件,web1负责写入,web2、web3等负责从web1读取。最简单的方法是通过cron运行rsync,这样做很简单、 很容易,对于任何大小的系统,哪怕即使有成千上万的文件,速度依然非常快。为此,rsync虽然需要设置一些重要的选项,但只要遵循一些基本规则,它依然 是一种良好和可靠的方式。
 
也有更复杂的远程同步程序,通常用于快速变化的文件,如用户上传。用户上传自己的形象后想要立刻看到效果,这很难用rsync实现,但为此有一些特殊工具,如ionotify就可以实现几乎实时的同步,但是使用起来很复杂。
 
另 一种常见的方法是使用NFS共享文件。我们一般不喜欢这种方法,因为NFS难以管理,有安全隐患,而且最重要的是会成为您系统中的一个单点故障。如果 NFS服务器有问题,所有的web服务器都会关闭。此外,NFS有一些内核问题,会在某些情况下引起系统崩溃、迫使系统重启。NFS本身是有用的,也很强 大,但是除非真的有必要,我们都会尝试避免用到它 — — 我们只是不喜欢实时从NFS加载的web服务器。
 
规 模更大、更复杂的系统则可以使用分布式文件系统,如我们已开始使用的GlusterFS。它们允许类似NFS的文件读和写操作,使用用户空间工具或者比 NFS更容易使用的FUSE文件系统,但是安装起来很复杂。但是它们很容易扩展,在很多情况下也可以避免单点故障,因为数据分布在很多服务器上,所以任何 一台服务器的崩溃都不会影响到整个系统的运行。
 
最后,很多网站根本都不再使用任何的传统存储系统; 取而代之的是,他们正将其所有的资源转移到一个云存储系统中去,譬如亚马逊的S3,或者阿里云的OSS。这么做,将不再有大容量磁盘存储或同步的需求。他 们只需上传图像等资料到云存储里,然后就在那儿直接提供服务 - 这么做,简单、容易,而且通常也更经济实惠。
 
当然还有其他的方法,但上面是我们所知道的最常见的几种,希望可以用来解决您的文件共享需求。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值