4

背景

我们公司设计和托管网站的时间约为。500 个客户,每个客户有一个网站。每个网站都建立在 ASP.net 上。我们当前的托管基础​​架构建立在带有运行 Windows 的虚拟机的虚拟机管理程序之上。我们有 3 台虚拟机都运行相同的规格(8 核,24 GB RAM)。500 个客户端站点分布在这三个 Web 服务器上,没有负载平衡或容错——该网站仅存在于一个位置。

因此,随着我们积累客户端,每个 Web 服务器的站点数量都会增加。当我们最大化每台服务器时,我们将另一台联机并重新启动,然后一旦该服务器已满,我们启动另一台 VM 等等。

目标

我们希望(最终)将我们的站点迁移到 Azure,但是我们不想复制我们在 Azure 上的当前设置,而是希望将每个网站迁移到 Azure Web 应用程序,而不是利用扩展。

我们还希望在增加在线网站时对我们的成本进行更细粒度的控制。目前,我们上线了一个虚拟机并花费我们 X (对于一个空服务器),我们可能需要 3 个月来填补这个。我们希望稳步增加我们的托管主机,而不是大步前进。

我的问题

我已经对此进行了很多天的调查,但找不到关于托管 100 个网站时在 Azure Web 应用程序上的理想设置的教程或指南。几乎所有教程都假设您只会拥有一个网站,因此网站和基础资源之间存在 1:1 的关系。他们从不谈论您应该如何将您的应用程序组织到应用程序服务计划等中。

我了解添加网站、选择适当的定价层和设置规模设置的概念,但我不明白为什么人们在网上谈论横向扩展 Azure 应用程序——当然如果 ASP.net 网站消耗一定数量的 RAM一个系统,通过使另一个 VM 联机,您所做的只是立即在另一个系统上再次消耗该数量的 RAM。所以从这个意义上说,向外扩展只是为了提高可用性——这是正确的吗?

如果有人在处理 Azure 上的许多网站时能够提供一些自己的经验(如果他们拥有一家在 Azure 上托管的网页设计公司,那就更好了),那将非常感激。

4

2 回答 2

3

将 AppService 计划视为同时运行相同应用程序并共享相同数据磁盘的 VM 或 VM 池(如果您运行多个实例)。如果向外扩展,则将新 VM 添加到池中,如果向上扩展,则更改 VM 的大小(实际上它们不是 VM,但从用户的角度来看是相似的)。

所以基本上在像你这样的情况下,你运行许多应用程序(可能)较小的应用程序,扩大/缩小建立基线 - 你可以运行多少个网站,你可以在内存中容纳多少个应用程序。然后横向扩展为您提供更好的可靠性和更多的 CPU 能力,帮助您应对高流量。

我们公司比你们小得多,我们托管了几十个网站而不是几百个。但是我们的经验告诉我们一些要点:

  • 至少使用具有 2 个内核的 S2 实例,使用 S1 实例,单个应用程序可以轻松降低同一 AppService 计划中其他应用程序的性能

  • 使用流量管理器。如果有需要(例如您所在地区的服务中断),您可以轻松转移到另一个地区

  • 在更小的 AppService 计划之间拆分网站,并将具有与 AppService 计划相似的使用模式的应用程序并置。这样,您可以在流量较低时运行一个实例,并在流量激增时启动新实例。

于 2015-11-13T20:34:18.700 回答
2

您是正确的,在所有定价层(免费和共享除外)中,Web 应用程序都扩展到应用程序服务计划中的所有计算机。从 Web 应用程序的角度来看,这是一项可用性功能。将应用服务计划从 1 台机器扩展到 2 台机器(或自动扩展)本质上是在所有机器上配置相同的 Web 应用程序。这当然对您的情况没有好处,但并没有失去一切。通常,缩放的单位是应用服务计划。您可以将 Web 应用程序分解为多个应用程序服务计划。先说 AppServicePlan1 中的 100 多个 Web 应用程序,然后转到 AppServicePlan2 中的下 100 多个 Web 应用程序。缺点是您必须管理跟踪将下一个 Web 应用程序放入的应用程序服务计划。

于 2015-11-13T19:30:21.820 回答