具有负载平衡的 Umbraco 8 应用程序

Umbraco 8 application with load balancing

我有一个托管在 AWS EC2 服务器上的 Umbraco 8.2.2 应用程序。
最近偶尔遇到服务器可用性问题导致宕机
我想到的解决方案之一是维护一个额外的 AWS EC2 服务器来托管相同的应用程序(相同的代码,相同的数据库)并在它们之间配置负载平衡。
它将托管客户端和服务器。

根据您的经验,这在多大程度上是可能的?
我该如何处理共享媒体和缓存文件夹等障碍,因为它们应该相同?
我听说过 S3 作为一个选项。
我可能面临哪些额外的障碍,我应该关注什么?
谢谢。

这听起来像是 Amazon EFS 的一个很好的用例,它为您提供一个共享的 POSIX 文件系统。您可以将媒体和缓存文件夹所在的目录挂载到 EFS 共享,然后将 EFS 共享挂载到负载均衡器后面的后端 EC2 实例。此解决方案需要对您的应用程序本身进行很少或不需要更改,您只需更改应用程序中某些文件的存储介质。

至于障碍,EFS 是一个网络文件系统,因此,通常不建议从 EFS 共享执行代码或将其用于需要极低存储延迟的应用程序。如果是这种情况,那么您可以考虑使用 Amazon FSx,但这是一个非常昂贵的解决方案。

如果您无法避免从 EFS 执行代码,只需尝试一下,看看它如何影响您的应用程序的性能。 EFS 适用于大量 Web 应用程序用例。这里 a tutorial 介绍了如何在负载平衡环境后使用 EFS 托管一个简单的网站,以帮助您入门。

如果 EFS 不是一个选项,那么您可以尝试将您的静态内容卸载到 Amazon S3 并通过 CloudFront 提供它。这可能是一个更便宜的选择,可以从您的负载均衡器和 EC2 实例卸载大量流量,但它也可能需要更多工作,因为您必须重构您的应用程序以通过 CloudFront 为您的内容提供服务。 a tutorial(网上有很多)介绍如何创建通过 CloudFront 提供内容的静态网站。在您的情况下,您将通过 S3/CloudFront 提供内容(即您的媒体文件),然后更新应用程序中使用的链接以从 CloudFront 端点检索该内容,而不是直接从您的 application/load 平衡器端点...所以您需要做的工作有两个方面,设置 S3/CloudFront 环境,以及配置您的应用程序以将内容卸载到 S3 并通过 CloudFront 提供它。