2010-12-02 32 views
3

我目前正在配置基于CakePHP(1.3)的web应用程序以在HA安装程序中运行。我有4个运行应用程序本身的Web框,它们是数据库后端的MySQL集群。我有用户每周上传12,000 - 24,000张图片(35-70 GB)。该应用程序然后从原始,缩略图和中等大小的图像生成2个额外的文件进行预览。这意味着每周共有36,000 - 72,000个可能的文件添加到存储库中。CakePHP高可用性服务器场设置

我想包裹我的头是如何处理来自用户尝试查看这些图像的大量静态文件请求。我的意思是我可以有多个网页框只提供静态文件,负载均衡器调度请求。

但是,有没有人在这里有关于如何保持所有静态文件服务器同步的任何想法?

如果您有任何经验想要分享,或者对我有用,请不吝赐教。

感谢,

serialk

+1

不确定这是否有帮助,但Facebook使用Varnish来提供其图像| http://www.varnish-cache.org – RabidFire 2010-12-02 14:41:38

+0

感谢您的链接RabidFire,我有一些阅读我的板块大声笑 – serialk 2010-12-02 20:56:24

回答

2

这是一个相当棘手的问题。

从技术上讲,通过使用DRBD和Linux-HA进行主动/被动设置,您可以通过NFS(或SMB,如果您喜欢)等东西获得高可用性共享目录。这样的设置对于单服务器丢失具有良好的可用性,但是,这样的设置非常浪费并且不容易扩展 - 您必须让应用程序自己决定要使用哪台服务器,配置NFS挂载等,这一切都变得相当复杂。

所以我可能会提示避免将图像保存在文件系统中 - 或者至少不是传统类型。我假设你需要灵活地在未来增加更多的存储 - 如果你能保持存储和IO的要求不变,DRBD,HA NFS可能是一个很好的系统。

对于灵活的“云”存储文件,要么

Tahoe LAFS

或许,在一推,卡珊德拉,这将需要更多的积分,但在某些方面也许更好。

MySQL集群对于大数据块并不好,因为它(主要)会将数据保存在内存中;而且它所提供的高一致性需要大量的锁定,这使得在高负载下更新(相对)严重。

但是你仍然可以考虑把图像放在mysql-cluster中,特别是你已经设置了它 - 它不需要更多的操作开销。