Azure 虚拟机上的 SQL Server 故障转移群集实例

Azure VM 上的SQL Server

本文介绍在使用SQL Server on Azure Virtual Machines(VM)的故障转移群集实例(FCI)时的功能差异。

若要开始, 请准备虚拟机

概述

Azure VM 上的SQL Server使用 Windows Server 故障转移群集(WSFC)功能通过服务器实例级别的冗余提供本地高可用性:故障转移群集实例。 FCI 是一个SQL Server实例,它安装在 WSFC(或只是群集)节点中,并且可能跨多个子网安装。 在网络上,FCI 似乎是在单个计算机上运行的SQL Server的单个实例。 但是,如果当前节点变得不可用,FCI 会实现从一个 WSFC 节点到另一个节点的故障转移。

本文的其余部分重点介绍故障转移群集实例在Azure VM 上使用SQL Server时的差异。 若要详细了解故障转移群集技术,请参阅:

Quorum

在Azure虚拟机上的SQL Server故障转移群集实例中,群集仲裁可以使用磁盘见证、云见证或文件共享见证。

若要了解更多信息,请参阅 在 Azure 上使用 SQL Server VM 的 Quorum 最佳实践

存储

在传统的本地群集环境中,Windows 故障转移群集使用一个由所有节点访问的存储区域网络(SAN)作为共享存储。 SQL Server文件托管在共享存储上,只有活动节点一次可以访问这些文件。

Azure VM 上的SQL Server提供各种选项作为共享存储解决方案,用于部署SQL Server故障转移群集实例:

Azure共享磁盘 高级文件共享 Storage Spaces Direct (S2D)
最低操作系统版本 全部 Windows Server 2012 Windows Server 2016
最低 SQL Server 版本 全部 SQL Server 2012 SQL Server 2016
受支持的 VM 可用性 高级 SSD LRS:包含或不包含邻近放置组的可用性集
高级 SSD ZRS:可用性区域
超级磁盘:同一可用性区域
可用性集和可用性区域 可用性集
支持文件流
支持 MSDTC

本部分的其余部分列出了可用于 Azure VM 上SQL Server的每个存储选项的优点和限制。

Azure共享磁盘

Azure共享磁盘Azure托管磁盘的一项功能。 Windows Server故障转移群集支持将Azure共享磁盘与故障转移群集实例配合使用。

支持的操作系统:All
支持的 SQL 版本:All

优点:

  • 适用于希望迁移到Azure的应用程序,同时保持其高可用性和灾难恢复(HADR)体系结构。
  • 可以按原样将群集应用程序迁移到 Azure 云上,因为支持 SCSI 永久性预留 (SCSI PR)。
  • 支持共享Azure高级 SSD 和Azure超级磁盘存储。
  • 可使用单个共享磁盘或对多个共享磁盘设置带区来创建共享存储池。
  • 支持FILESTREAM。
  • 高级 SSD 支持可用性集。
  • 高级 SSD 区域冗余存储 (ZRS) 支持可用性区域。 FCI 的 VM 部分可以放在不同的可用性区域中。
  • 从Windows Server 2019开始支持微软分布式事务协调器(MSDTC)。

注意

虽然Azure共享磁盘还支持 Standard SSD 大小,但由于性能限制,不建议对SQL Server工作负荷使用标准 SSD。

限制

  • 不支持高级 SSD 缓存。
  • 超磁盘不支持可用性集或区域冗余存储(ZRS)。
  • 超级磁盘支持可用性区域,但 VM 必须位于同一可用性区域中,从而减少虚拟机的可用性。

若要开始,请参阅使用Azure共享磁盘配置故障转移群集实例

Storage Spaces Direct

Storage Spaces Direct是一个Windows Server功能,其在Azure Virtual Machines上支持故障转移群集。 它提供基于软件的虚拟 SAN。

Supported OS:Windows Server 2016 及更高版本
支持的 SQL 版本:SQL Server 2016 及更高版本

优点:

  • 充足的网络带宽可实现可靠且性能高的共享存储解决方案。
  • 支持Azure blob 缓存,因此可以从缓存本地提供读取。 (更新同步复制到两个节点。)
  • 支持文件流。

限制:

  • 仅适用于Windows Server 2016及更高版本。
  • 不支持可用性区域。
  • 要求对两个虚拟机附加相同的磁盘容量。
  • 由于仍在进行的磁盘复制,需要高网络带宽来实现高性能。
  • 由于对每个 VM 附加了存储,因此需要更大的 VM 大小且存储费用加倍。
  • 不支持Microsoft Distributed Transaction Coordinator(MSDTC)。

若要开始,请参阅 使用存储空间直通配置故障转移群集实例

高级文件共享

Premium 文件共享Azure Files 的一项功能。 高级文件共享由 SSD 提供支持,始终具有低延迟。 它们完全支持在 Windows Server 2012 或更高版本上用于 SQL Server 2012 或更高版本的故障转移群集实例。 高级文件共享提供更高的灵活性,使你能在不停机的情况下对文件共享进行大小调整和缩放。

支持的操作系统:Windows Server 2012 及更高版本
支持的 SQL 版本:SQL Server 2012 及更高版本

优点:

  • 适用于在多个可用性区域中分布的虚拟机的共享存储解决方案。
  • 完全托管的文件系统,具有单位数的延迟和可突发的 I/O 性能。
  • 并非所有 SQL Server 功能都受支持,例如数据库快照、文件流和不带 TABLOCK 选项的 CHECKDB。 有关详细信息,请参阅限制

限制:

  • 仅适用于Windows Server 2012及更高版本。
  • 不支持 FileStream。
  • 不支持Microsoft Distributed Transaction Coordinator(MSDTC)。

首先,请参阅使用高级文件共享配置故障转移群集实例

合作伙伴

有一些合作伙伴群集解决方案采用受支持的存储。

支持的操作系统:All
支持的 SQL 版本:All

一个示例是将 SIOS DataKeeper 用作存储。 有关详细信息,请参阅故障转移群集和 SIOS DataKeeper 博客文章。

iSCSI 和 ExpressRoute

还可以通过Azure ExpressRoute公开 iSCSI 目标共享块存储。

支持的操作系统:All
支持的 SQL 版本:All

例如,NetApp 专用存储(NPS)通过 Equinix 的 ExpressRoute 向 Azure VM 发布 iSCSI 目标。

对于来自Azure合作伙伴的共享存储和数据复制解决方案,如遇到故障转移时的数据访问问题,请联系相关供应商以解决问题。

连接

若要与连接到故障转移群集实例的本地体验相匹配,请将 SQL Server 虚拟机部署到同一虚拟网络内的多个子网。 拥有多个子网可以消除了对 Azure Load Balancer 或分布式网络名称(DNN)的额外依赖,从而将流量路由到 FCI。

如果将SQL Server VM 部署到单个子网,则可以配置虚拟网络名称(VNN)和Azure Load Balancer,或分布式网络名称(DNN)将流量路由到故障转移群集实例。 查看两者之间的差异;然后,为故障转移群集实例部署分布式网络名称虚拟网络名称

建议尽可能地使用分布式网络名称,因为这样可以加快故障转移的速度,而且可以消除负载均衡器的管理开销和成本。

使用 DNN 时,大多数SQL Server功能在 FCI 中透明地工作,但某些功能可能需要特殊考虑。 有关详细信息,请参阅 FCI 和 DNN 互操作性

注意

如果在同一群集上有多个可用性组或 FCI,并且使用 DNN 或 VNN 侦听器,则每个可用性组或 FCI 都需要自己的独立连接点。

限制

有限的扩展支持

目前,SQL Server Azure使用 SQL IaaS 代理扩展注册的虚拟机上的故障转移群集实例仅支持少量通过基本注册提供的功能,而不支持需要代理的功能,例如自动备份、修补和高级门户管理。 请参阅权益表以了解更多信息。

如果您的 SQL Server VM 已注册到 SQL IaaS 代理扩展,并且已启用了任何需要该代理的功能,则需要通过删除相应 VM 的 SQL 虚拟机 资源,从 SQL Server VM 中删除该扩展,然后再次将其注册到 SQL IaaS 代理扩展。 使用 Azure 门户删除 SQL 虚拟机资源时,请清除正确的虚拟机旁边的复选框以避免删除虚拟机。

MPEG Audio Layer-3

Azure Virtual Machines 支持在 Windows Server 2019 上使用 Clustered Shared Volumes (CSV) 存储的 Microsoft Distributed Transaction Coordinator (MSDTC),并结合 Azure Standard Load Balancer,或者支持使用 Azure 共享磁盘的 SQL Server 虚拟机 (VM)。

在Azure Virtual Machines上,Windows Server 2016或更早版本不支持使用群集共享卷的 MSDTC,因为:

  • 无法将群集 MSDTC 资源配置为使用共享存储。 在Windows Server 2016,如果创建 MSDTC 资源,则它不会显示任何可供使用的共享存储,即使存储可用。 此问题已在Windows Server 2019中修复。