我目前正在配置基于CakePHP(1.3)的Web应用程序以在HA安装程序中运行。我有4个Web框运行应用程序本身是一个用于数据库后端的MySQL集群。我有用户每周上传12,000 - 24,000张图片(35-70 GB)。然后,该应用程序从原始图像生成2个附加文件,缩略图和中等大小的图像进行预览。这意味着每周总共有36,000 - 72,000个可能的文件添加到存储库中。
我想要解决的是如何处理来自试图查看这些图像的用户的大量静态文件请求。我的意思是我可以有多个Web服务器只提供静态文件,负载均衡器可以调度请求。
但是,有没有人对如何保持所有静态文件服务器同步有任何想法?
如果您有任何想要分享的经历或任何有用的链接,我们将非常感激。
谢谢,
serialk
答案 0 :(得分:2)
这是一个非常棘手的问题。
从技术上讲,您可以通过NFS(或SMB,如果您喜欢)等方式获得高可用性共享目录,使用DRBD和Linux-HA进行主动/被动设置。这样的设置对于单个服务器丢失具有良好的可用性,但是,这样的设置非常浪费并且不容易扩展 - 您必须让应用程序自己决定去哪个服务器,配置NFS安装等,这一切都变得相当复杂。
所以我可能会提示避免将图像保存在文件系统中 - 或者至少不是传统类型。我假设您需要灵活地在未来添加更多存储 - 如果您可以保持存储和IO要求不变,DRBD,HA NFS可能是一个很好的系统。
用于在灵活的“云”中存储文件,
或许,在推动下,Cassandra,需要更多的整合,但在某些方面可能更好。
MySQL-cluster对于大blob并不是很好,因为它(主要)将数据保存在ram中;它提供的高一致性还需要大量锁定,这使得更新在高工作负载下(相对)严重。
但你仍然可以考虑将图像放在mysql-cluster中,特别是当你已经设置它时 - 它不需要更多的操作开销。