Image 负载平衡环境中的图像

Image 负载平衡环境中的图像,image,webserver,Image,Webserver,我有一个负载平衡的环境,有超过10台运行IIS的web服务器。所有网站都在访问承载所有图片的单个文件存储。我们目前有200GB的图片-我们将它们存储在每个目录1000个图片的目录中。现在,所有映像都位于单个存储设备RAID 10中,RAID 10连接到作为文件服务器的单个服务器。所有web服务器都连接到同一LAN上的文件服务器。 我希望改进架构,这样我们就不会出现单点故障。 我正在考虑两个备选方案: 将文件存储复制到所有Web服务器,以便它们都在本地访问数据 将文件存储复制到另一个存储,这样,如

我有一个负载平衡的环境,有超过10台运行IIS的web服务器。所有网站都在访问承载所有图片的单个文件存储。我们目前有200GB的图片-我们将它们存储在每个目录1000个图片的目录中。现在,所有映像都位于单个存储设备RAID 10中,RAID 10连接到作为文件服务器的单个服务器。所有web服务器都连接到同一LAN上的文件服务器。 我希望改进架构,这样我们就不会出现单点故障。 我正在考虑两个备选方案:

将文件存储复制到所有Web服务器,以便它们都在本地访问数据 将文件存储复制到另一个存储,这样,如果当前存储发生问题,我们就可以切换到它。 显然,对文件存储执行的主要操作是读取,但也有很多写入操作。你认为首选的方法是什么?还有别的想法吗


<>我现在排除了使用CDN,因为它将需要一个架构上的改变,现在我们不能做的应用程序。

< P> >在进行ARCH更改之前,我通常会考虑的某些事情是

当前arch存在哪些问题 我对当前的arch做了什么错事?如果这已经运行了一段时间,小的调整通常会解决很多问题 它能让我在这里轻松成长吗?总会有一个上限。基于过去数据的增长,您可以有效地进行规划。 可靠性 易于维护/监控/故障排除 费用 200GB并不是很多数据,您可以选择一些自主开发的解决方案,或者使用NAS之类的解决方案,这将允许您以后进行扩展。并且有一个可热插拔的复制品

复制到所有Web服务器的存储是一个非常昂贵的设置,正如您所说的,有很多写操作,复制到所有服务器会有很大的开销,这只会随着服务器数量和数据的增长而增加。此外,还有一个问题,即由其他节点之一提供过时数据。除此之外,对复制问题进行故障排除将使10个和不断增长的节点陷入混乱。 除非文件的查找/读取/写入非常耗时,否则复制到所有Web服务器不是一个好主意。web用户几乎不会注意到加载时间的100ms-200ms差异

对于这类事情有一些建议。但我不怀疑它们很贵。NAS不能很好地扩展。你有一个单一的失败点,这是不好的

有一些方法可以帮助您编写代码。您可以在第一次请求图像时将其缓存在web服务器上,这将减少图像服务器上的负载


您可以设置一个主从机,这样您就有一个主映像服务器,但其他服务器可以从该映像服务器进行复制。您可以对这些文件进行负载平衡,并在代码中加入一些逻辑,这样,如果从机没有映像的副本,您就可以检查主机。您还可以按优先级顺序分配这些,以便在主设备不可用时,第一个从设备将成为主设备

由于您的存储中的数据太少,因此购买几个大的HDs或使用web服务器上的可用空间来保存副本是有意义的。它将减轻后端存储系统的压力,当它出现故障时,您仍然可以为用户提供内容。更好的是,如果您需要扩展更多的下载,您只需添加一个新服务器,后端的压力不会有太大变化

如果我必须这样做,我会在web服务器上的存储设备上使用或复制图像文件。通过这种方式,您可以随时用网络文件系统挂载替换副本

偶尔运行rsync,例如在任何上传后或夜间运行一次;你会更清楚哪些尺码最适合你

一个更通用的解决方案是使用像Bittorreent这样的P2P协议。通过这种方式,您可以将存储后端上的所有更改发布到web服务器,它们会自动优化更新