使用 Azure 虚拟机和托管磁盘实现高可用性的最佳做法

Azure 提供了多个配置选项,用于确保 Azure 虚拟机 (VM) 和 Azure 托管磁盘的高可用性。 本文介绍托管磁盘的默认可用性和持久性,并提供进一步提高应用程序可用性和复原能力的建议。

速览

配置 建议 好处
在单个 VM 上运行的应用程序 使用超级磁盘、高级 SSD v2 和高级 SSD 磁盘 仅使用高级 SSD 磁盘作为 OS 磁盘,以及使用超级磁盘、高级 SSD v2 或高级 SSD 磁盘作为数据磁盘的单个 VM 具有最高的运行时间服务级别协议 (SLA),并且这些磁盘类型可提供最佳性能。
使用区域冗余存储 (ZRS) 磁盘 即使整个区域遇到中断,也能访问数据。
多个 VM 上运行的应用程序 使用具有灵活业务流程模式的区域冗余虚拟机规模集,或者跨三个可用性区域部署 VM 和磁盘,实现跨多个可用性区域分配 VM 和磁盘。 跨多个区域部署时,多个 VM 的运行时间 SLA 最高。
使用具有灵活业务流程模式的区域虚拟机规模集可用性集跨多个容错域部署 VM 和磁盘。 跨容错域部署时,多个 VM 具有第二高的运行时间 SLA。
在 VM 之间共享磁盘时使用 ZRS 磁盘 防止共享磁盘成为单一故障点。

托管磁盘的可用性和持久性

在了解实现更高可用性的建议之前,应了解托管磁盘的默认可用性和持久性。

托管磁盘设计为 99.999% 的可用性,并提供至少 99.999999999%(11 9’秒)的持久性。 使用托管磁盘时,数据将复制三次。 如果这三个副本中的一个不可用,Azure 会自动在后台生成数据的新副本。 这可确保数据的持久性和高容错能力。

托管磁盘有两个冗余模型:本地冗余存储 (LRS) 磁盘和区域冗余存储 (ZRS) 磁盘。 下图描述了如何使用任一模型复制数据。

显示 LRS 在一个可用性区域中复制数据,而 ZRS 在三个不同的可用性区域中复制数据的图示。

LRS 磁盘在给定年份提供至少 99.999999999% (11 个 9)的持久性,ZRS 磁盘在给定年份提供至少 99.9999999999% (12 个 9)的持久性。 此体系结构可帮助 Azure 一致地为基础结构即服务 (IaaS) 磁盘提供企业级持续性,年化故障率为行业领先的百分之零。

针对在单个 VM 上运行的应用程序的建议

旧版应用程序、传统 Web 服务器、业务线应用程序、开发和测试环境以及小型工作负荷都是可能在单个 VM 上运行的应用程序示例。 这些应用程序无法受益于跨多个 VM 的复制,但磁盘上的数据仍复制三次,你可以执行以下步骤来进一步提高可用性。

使用超级磁盘、高级 SSD v2 或高级 SSD

仅使用高级 SSD 磁盘作为 OS 磁盘,以及使用超级磁盘高级 SSD v2高级 SSD 磁盘作为数据磁盘的单个 VM 具有最高的单一 VM 正常运行时间 SLA,并且这些磁盘类型可提供最佳性能。

使用区域冗余存储磁盘

区域冗余存储 (ZRS) 磁盘跨三个可用性区域同步复制数据,这些区域是在具有独立电源、冷却和网络基础结构的区域中的分离式数据中心。 使用 ZRS 磁盘时,即使发生区域性服务中断,数据也能访问。 此外,使用 ZRS 数据磁盘,可以将其从遇到问题的 VM 中强制拆离。 ZRS 磁盘存在限制,请参阅“冗余选项”一文的限制部分了解详细信息。

针对在多个 VM 上运行的应用程序的建议

基于 Quorum 的应用程序、群集数据库(SQL、MongoDB)、企业级 Web 应用程序和游戏应用程序都是在多个 VM 上运行的应用程序示例。 在多个 VM 上运行的应用程序可以指定一个主 VM 和多个辅助 VM,并跨这些 VM 复制数据。 如果主 VM 出现故障,则此设置允许故障转移到辅助 VM。

多个 VM 在跨多个可用性区域部署时具有最高的运行时间服务级别协议 (SLA),在跨多个存储和计算容错域部署时,它们具有第二高的运行时间 SLA。

跨可用性区域分配 VM 和磁盘

可用性区域是区域中具有独立电源、冷却和网络基础结构的分离式数据中心组。 它们足够接近,可与其他可用性区域建立低延迟连接,但又足够远,可降低多个可用性区域受本地中断或天气影响的可能性。 有关详细信息,请参阅什么是可用性区域?

跨三个可用性区域分配时,多个 VM 具有最高 SLA。 对于跨多个可用性区域分配的 VM 和磁盘,磁盘及其父 VM 将分别并置在同一区域中,这可以防止多个 VM 出现故障,即使整个区域遇到中断也是如此。 可用性区域并非在每个区域中都可用,请参阅具有可用性区域支持的 Azure 区域

跨多个可用性区域分配的 VM 的网络延迟可能高于单个可用性区域中分配的 VM,这可能对需要超低延迟的工作负荷来说是个隐患。 如果低延迟是优先考虑事项,请考虑跨多个容错域部署 VM 和磁盘中所述的方法。

若要跨可用性区域部署资源,可以使用区域冗余的虚拟机规模集,或者跨可用性区域部署资源

下图描述了在直接跨可用性区域部署或使用区域冗余虚拟机规模集时,VM 和磁盘如何并置在同一区域中。

描述可用性区域中 VM 和磁盘并置的图示。

使用具有灵活业务流程的区域冗余虚拟机规模集

使用虚拟机规模集可以创建并管理一组负载均衡的 VM。 VM 实例数可以根据需求自动调整,也可以按照定义的计划进行调整。 区域冗余虚拟机规模集是跨多个可用性区域部署的虚拟机规模集。 请参阅区域冗余或区域跨越

使用灵活业务流程模式的区域冗余虚拟机规模集,VM 及其磁盘将复制到部署在区域中的一个或多个区域,以提高应用程序和数据的复原能力和可用性。 默认情况下,此配置以最佳方式将 VM 分散到所选区域,但也提供在部署中指定严格区域平衡的功能。

跨三个可用性区域部署 VM 和磁盘

跨可用性区域分配 VM 和磁盘的另一种方法是跨三个可用性区域部署 VM 和磁盘。 此部署在区域中多个数据中心的 VM 和磁盘中提供冗余,使你能够在数据中心或区域性中断时故障转移到另一个区域。

跨多个容错域部署 VM 和磁盘

如果无法跨可用性区域部署 VM 和磁盘或具有超低延迟要求,可以改为跨容错域部署这些 VM 和磁盘。 容错域定义共享公用电源和网络交换机的 VM 组。 有关详细信息,请参阅可用性集的工作原理?

对于通过以下方法跨容错域部署的 VM 和磁盘,磁盘的存储容错域与其各自的父 VM 的计算容错域保持一致,这可以防止单个存储容错域遇到中断时多个 VM 出现故障。

跨容错域部署时,多个 VM 具有第二高的运行时间 SLA。 若要了解详细信息,请参阅 SLA 的“虚拟机”部分。

若要跨多个容错域部署资源,可以使用区域虚拟机规模集可用性集

下图描述了使用区域虚拟机规模集或可用性集时计算和存储容错域的对齐方式。

容错域与区域虚拟机规模集和可用性集的对齐关系图。

使用具有灵活业务流程的区域虚拟机规模集

区域虚拟机规模集是没有显式定义的可用性区域的虚拟机规模集。 使用区域虚拟机规模集,VM 资源将跨部署在区域中的容错域中复制,以提高应用程序和数据的复原能力和可用性。 默认情况下,此配置将 VM 分散到容错域,但也提供在 VM 创建时分配容错域的功能。 有关详细信息,请参阅此节

区域虚拟机规模集不会防范数据中心或区域中断等大规模服务中断,目前不支持超级磁盘或高级 SSD v2 磁盘。

使用可用性集

可用性集是将 VM 放置在不同容错域中的 VM 的逻辑分组,用以限制相关故障同时关闭相关 VM 的可能性。 与可用性区域相比,可用性集还具有更好的 VM 到 VM 延迟。

可用性集不允许为 VM 选择容错域,不能与可用性区域一起使用,不防范数据中心或区域范围的服务中断,并且当前不支持超级磁盘或高级 SSD v2 磁盘。

在 VM 之间共享磁盘时使用 ZRS 磁盘

在多个 VM 之间共享磁盘时,应使用 ZRS。 如果使用 LRS,则共享磁盘将成为群集应用程序的单一故障点。 这意味着,如果共享 LRS 磁盘遇到中断,则附加此磁盘的所有 VM 都将经历停机。 使用 ZRS 磁盘可缓解此问题,因为磁盘的数据位于三个不同的可用性区域中。 若要详细了解共享磁盘,请参阅共享 Azure 托管磁盘

后续步骤