我正在AWS上构build一个简单的web应用程序体系结构,如下所示:Elastic Load Balancer – 多个前端 – RDS数据库。
我也build立了一个NFS服务器来存储用户通过networking应用程序上传的所有图像,比如configuration文件图片(我不能使用S3,我只是遵循规范我得到…)。
前端虚拟机由自动缩放组产生。 产生虚拟机时,会从S3存储桶下载Web应用程序源。 问题是,我有这些源文件(主要是静态文件,如mp4或图像)的一些巨大的文件,我想在NFS服务器上存储这些大的静态文件,因为它需要太多的时间从S3下载。
所以我的问题是:什么时候在NFS上存储一个文件是相关的,什么时候最好在每个前端上放一个文件呢? 例如,如果我在NFS上存储mp4,为什么不把整个web应用程序存储在这个NFS上呢?
注意:我不想构build包含这些文件的AMI,因为修改它们时不够灵活
这一切归结于性能。 如果你的NFS存储速度够快,那么就没有任何东西可以阻止你把所有的Web应用程序和Web内容文件放在上面,这样它们可以被所有的前端虚拟机访问。
也就是说,不这样做的最常见的原因是因为当客户端在您的浏览器中加载您的Web应用/站点时,从networking存储检索文件所涉及的额外networking延迟转换为延迟。
显然这取决于虚拟机的底层存储,但通常本地存储几乎总是较低的延迟,因此是存储静态内容的首选。 我参与过的很多负载均衡部署都使用DRDB来保持所有Web服务器的静态内容同步。