负载平衡环境中的图像

时间:2009-02-16 12:06:35

标签: image webserver

我有一个负载均衡的环境,有超过10个运行IIS的Web服务器。所有网站都访问托管所有图片的单个文件存储。我们目前有200GB的图片 - 我们将它们存储在每个目录1000个图像的目录中。现在,所有映像都在连接到用作文件服务器的单个服务器的单个存储设备(RAID 10)中。所有Web服务器都连接到同一LAN上的文件服务器。 我希望改进架构,以便我们没有单点故障。 我正在考虑两种选择:

  1. 将文件存储复制到所有Web服务器,以便它们都可以在本地访问数据
  2. 将文件存储复制到另一个存储,因此如果当前存储发生了某些情况,我们就可以切换到它。
  3. 显然,读取了对文件存储完成的主要操作,但也有很多写操作。您认为首选方法是什么?还有其他想法吗?

    我目前正在排除使用CDN,因为它需要对应用程序进行架构更改,而我们目前无法对其进行更改。

3 个答案:

答案 0 :(得分:0)

在进行换拱之前我通常会考虑的一些事情是

  1. 当前拱门有什么问题
  2. 我当前的拱门做错了什么。(如果这已经工作了一段时间,小调整通常会解决很多问题)
  3. 它会让我轻松成长(这里总会有一个上限)。根据过去的数据增长情况,您可以有效地进行规划。
  4. 可靠性
  5. 易于维护/监控/故障排除
  6. 成本
  7. 200GB不是很多数据,您可以使用一些本土解决方案或使用类似NAS的东西,这将允许您稍后扩展。并且有一个热插拔复制品。

    复制到所有Web服务器的存储是一个非常昂贵的设置,正如您所说的那样,有很多写操作,复制到所有服务器会有很大的开销(这只会随着服务器的数量而增加)和不断增长的数据)。并且还存在由其他节点之一服务的陈旧数据的问题。除了故障排除复制问题将是10和增长节点的混乱。 除非文件的查找/读/写非常关键,否则复制到所有Web服务器并不是一个好主意。用户(网络)几乎不会注意到100ms - 200ms的加载时间差异。

答案 1 :(得分:0)

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

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

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

答案 2 :(得分:0)

由于您的存储中的数据非常少,因此购买多个大型HD或使用Web服务器上的可用空间来保留副本是有意义的。它将消除后端存储系统的压力,当它失败时,您仍然可以为用户提供内容。更好的是,如果你需要扩展(更多下载),你可以简单地添加一个新的服务器,你后端的压力也不会改变。

如果我必须这样做,我会使用rsyncunison将图像文件复制到存储设备上的Web服务器上的完全相同的空间中(这样,你可以随时用网络文件系统安装交换副本。)

不时运行rsync(例如在任何上传或夜晚之后;您会更好地了解哪种尺寸适合您)。

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