在负载平衡的 Web 应用程序上同步应用程序服务器的最佳方法是什么?

在负载平衡的 Web 应用程序上同步应用程序服务器的最佳方法是什么?

我正在尝试弄清楚如何对应用程序(例如 WordPress)进行负载平衡。我的服务器阵列如下所示:

  1. 负载均衡器。
  2. 数据库服务器。
  3. 2 个或更多应用服务器。

大多数(如果不是全部)内容都将存储在数据库中,因此内容不会成为问题,并且部署也将通过让两台服务器从远程 GIT 存储库克隆来解决,但是如果有人将图像上传到一台服务器会发生什么?它将如何同步到另一台服务器?

我猜我可以使用 rSync 来实现这一点,但我觉得这有点过时了。任何建议都将不胜感激。

答案1

看来你需要看看DRBD集群文件系统以及类似的产品,用于实时复制您的文件。当然,如果网络延迟太小(例如在同一个局域网内部署),此类解决方案的效率会更高。

答案2

如果用户上传的数据未被缓存,和/或存储在集中的网络位置,那就没有问题。

缓存数据肯定是一个问题。至少有几种通用方法。

  • 与特定 Web/应用服务器保持会话亲和性(“粘性”会话)。这实质上使无状态 Web 应用“有状态”,并且该应用现在具有隐含的连接超时。通常,通过负载平衡器具有超时,而 Web 服务器具有连接超时和/或 http 保持活动超时。负载平衡器超时可能是一个更难解决的问题,因为它们的资源可能比应用/Web 服务器更有限。

  • 如果可行的话,请在应用程序中内置一种机制,以便在合作伙伴 Web/应用程序服务器之间同步创建/修改/删除的数据。

中间缓存解决方案(例如 Azure AppFabric)可能不可行。许多缓存大数据的应用程序在使用中间缓存时无法实现相同的性能,尽管这需要通过测试来确定。

相关内容