在 Windows Azure 网站中进行纵向扩展和横向扩展

编辑人员注释: 本文章由 Windows Azure 网站团队的项目经理 Byron Tardif 撰写。

当您开始一个新的 Web 项目,或者刚刚开始开发一般的网站和应用程序时,您可能希望从小处着手。但是,您可能不会停滞不前。在概念证明阶段,您可能不希望在新的 Web 场上耗费资源,但随着事业不断发展,您无法使用一小台服务器来实施大型市场营销活动。在 Windows Azure 网站的云中进行开发和部署时也一样。

在本博客文章中,我将向您介绍您可以采用的开发、测试和实施方式,同时控制好预算的时间和成本。

Windows Azure 网站中的标准、免费和共享模式

部署网站时最重要的注意事项之一是为您的网站选择合适价位的平台。一旦您完成开发和测试周期,此网站便是贵公司的网站,或者是一个重要的新数字市场营销活动或业务线应用程序。因此,您要确保您的网站根据业务需求可用且可响应,同时不超出预算。

您的选择取决于多种因素,如:

  • 您计划托管多少个站点? 例如,数字市场营销活动可能包括您使用的每个服务的社交媒体页,以及每个目标市场的不同主页。
  • 您期望网站的受欢迎程度如何? 何时流量水平会更改? 您的评估可能基于业务线应用程序的员工数量,或者营销网站的 Twitter 粉丝和 Facebook 爱好者的数量。您可能还期望流量能够因季节性因素、商务拓展活动(如社交媒体活动)和广告而有所差异。
  • 这些站点将使用多少资源(CPU、内存和带宽)?  

Windows Azure 网站的好处之一就是,将 Web 应用程序和网站投入生产时您不需要回答这些问题。使用管理门户中提供的伸缩选项,您可以根据用户需求和业务目标实时地伸缩您的网站。

Windows Azure 网站中的站点模式

Windows Azure 网站 (WAWS) 提供 3 种模式:标准、免费和共享。

其中每种模式(标准、共享和免费)均提供不同的配额,用于控制您的站点可以使用的资源量,并提供不同的伸缩能力。下图汇总了这些配额。

标准模式和服务级别协议 (SLA)

标准模式在专用实例上运行,因此不同于购买 Windows Azure 网站的其他方式。此外,该模式对 CPU 使用率没有限制,并且在 3 种模式中的存储量最大。请参阅上表了解详细信息。

标准模式还有一些值得一提的重要功能:

  • 没有数据输出带宽限制 – 站点上的前 5 GB 出站数据免费提供,额外带宽按照“即付即用”费率定价。
  • 自定义 DNS 名称 – 免费模式不允许使用自定义 DNS。标准模式允许使用 CNAME 记录和 A 记录。

标准模式支持每月 99.9% 的企业级 SLA(服务级别协议),即使站点只有一个实例也是如此。Windows Azure 网站可以在单个实例站点上提供此 SLA,因为我们的设计包括实时站点配置功能。配置发生在后台,而不需要更改您的站点,并且对任何站点访问者都是透明的。这样即可消除伸缩均衡中可用性方面的顾虑。

共享模式和免费模式

简而言之,共享模式和免费模式不提供标准模式的伸缩灵活性,并且它们有一些重要的限制。

免费模式与免费或共享模式下的其他站点共享计算资源运行,并且对该站点(以及订阅中的其他免费站点)在每个配额间隔可以使用的 CPU 时间量设置了上限。达到该限制后,该站点(以及订阅中的其他免费站点)将停止返回内容/数据,直到下一个配额间隔。此外,免费模式对站点可以向客户端提供的数据量(也称为“数据出站”)也设置了上限。

正如其名称所示,共享模式也使用共享计算资源,并且也具有 CPU 限制(尽管比免费模式高),如上表所述。共享模式还允许 5 GB 出站数据,如果超出此限制,则按“即付即用”费率计费。

因此,可能由于上述限制,免费模式和共享模式都不是适用于您的生产环境的最佳选择,但它们还是有用的。免费模式非常适用于试用和了解 Windows Azure 网站,例如:了解如何设置发布配置、连接到 Visual Studio,或者使用 TFS、Git 或其他部署工具部署。相比于免费模式,共享模式具有额外的功能,因此非常适用于在有限受控的负载下进行开发和测试您的站点。对于更重要的生产环境,标准模式可以提供更多服务。

伸缩操作、代码和用户会话 /体验

操作纵向扩展站点或横向扩展站点可以提高用户体验, 并且伸缩操作对现有用户会话没有任何影响。

此外,每次伸缩操作都很迅速(通常几秒钟内即可完成),并且不需要更改站点的代码,也不需要重新部署站点。

接下来,我们将讨论“纵向扩展”和“横向扩展”的含义。

Windows Azure 网站伸缩动态

Windows Azure 网站提供了多种方式伸缩您的网站, 可以使用管理门户完成这些操作。如果您正在通过 Microsoft Visual Studio 2012 管理站点,则也可以使用这些操作,如我们的服务文档中详细说明。

纵向扩展

纵向扩展操作类似于将您的非云网站移动到更大的物理服务器上。因此,当您的站点达到配额,系统通知您已超出现有模式或选项时,则有必要考虑进行纵向扩展。此外,纵向扩展几乎可以在任何站点上进行,不必担心多实例数据一致性的影响。

Windows Azure 网站中纵向扩展操作的两个示例如下所示:

  • 更改站点模式:例如,如果您选择标准模式,您的网站对 CPU 使用率没有任何配额限制,并且出站数据只需支付超出套餐所含 5 GB/月的出站数据的那部分。
  • 标准模式中的实例大小:在标准模式中,Windows Azure 网站允许选择不同的实例大小:小型、中型和大型。这也类似于移动到更大的物理服务器,CPU核数和内存量越来越多:
    • 小型:1 个核,1.75 GB 内存
    • 中型: 2 个核,3.5 GB 内存
    • 大型: 4 个核,7 GB 内存

横向扩展

横向扩展操作相当于创建您的网站的多个副本,并添加一个负载平衡器以在副本之间分配处理。当您在 Windows Azure 网站中横向扩展某个网站时,不需要单独配置负载平衡,因为平台已提供此配置。

要在 Windows Azure 网站中横向扩展您的站点,如果是共享模式,您需要使用实例计数滑块在 1 到 6 之间更改实例计数;如果是标准模式,则在 1 到 10 之间进行更改。这将生成您的网站的多个运行副本,并且自动处理负载平衡配置,以在所有实例之间分配传入的请求。

要从横向扩展操作中受益,您的站点必须为多实例安全型。编写多实例安全站点超出了本文章的范围,请参考适用于 .NET 语言的 MSDN 资源,例如 https://msdn.microsoft.com/zh-cn/library/3e8s7xdd.aspx

可以在一个网站中组合执行纵向扩展和横向扩展操作,从而提供混合缩放。有关多实例站点的相同考量也将适用于这种情况。

Windows Azure PowerShell 中的自动缩放和缩放

在本博客文章中,我介绍了 Windows Azure 网站中纵向扩展和横向扩展所涉及的概念,着重于通过管理门户手动执行这些任务;Visual Studio 中也提供了类似的手动设置。

我们还向 Windows Azure 网站添加了自动缩放功能,允许根据响应需求在您的网站上对纵向扩展/横向扩展的设置进行无人参与的更改。

此外,Windows Azure PowerShell 还允许执行某些缩放操作,以及对您的站点和订阅实施多种控制。

最后的思考

Windows Azure 网站允许您以较低的成本(甚至成本)开发、部署和测试网站或 Web 应用程序,同时无缝伸缩该站点,直至形成更适合生产的配置,然后以经济高效的方式进一步伸缩。

在本博客文章中,我着重介绍了您网站中的纵向扩展和横向扩展功能,但是请记住,您的站点可能只是使用其他组件(如数据库、数据源、存储或第三方 Web API)的更复杂的应用程序的一部分。每个组件都具有自己的伸缩操作,评估您的伸缩选项时应将其考虑在内。

当然,伸缩网站将会影响成本。有助于评估您的成本以及指定伸缩操作将对您的成本产生的影响的简单方法是使用 Azure 定价计算器

本文翻译自:

https://blogs.msdn.com/b/windowsazure/archive/2013/07/11/scaling-up-and-scaling-out-in-windows-azure-web-sites.aspx