Azure VM 上的SQL Server
本文介绍在使用Azure 虚拟机中的 SQL Server(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共享磁盘 | 高级文件共享 | 存储空间直通 (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共享磁盘配置故障转移群集实例。
存储空间直通
存储空间直通是一个Windows Server功能,其在Azure 虚拟机上支持故障转移群集。 它提供基于软件的虚拟 SAN。
Supported OS:Windows Server 2016 及更高版本
支持的 SQL 版本:SQL Server 2016 及更高版本
优点:
- 充足的网络带宽可实现可靠且性能高的共享存储解决方案。
- 支持Azure blob 缓存,因此可以从缓存本地提供读取。 (更新同步复制到两个节点。)
- 支持文件流。
限制:
- 仅适用于Windows Server 2016及更高版本。
- 不支持可用性区域。
- 要求对两个虚拟机附加相同的磁盘容量。
- 由于仍在进行的磁盘复制,需要高网络带宽来实现高性能。
- 由于对每个 VM 附加了存储,因此需要更大的 VM 大小且存储费用加倍。
- 不支持Microsoft 分布式事务处理协调器(MSDTC)。
若要开始,请参阅 使用存储空间直通配置故障转移群集实例。
高级文件共享
Premium 文件共享是 Azure 文件存储 的一项功能。 高级文件共享由 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 分布式事务处理协调器(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 负载均衡器 或分布式网络名称(DNN)的额外依赖,从而将流量路由到 FCI。
如果将SQL Server VM 部署到单个子网,则可以配置虚拟网络名称(VNN)和Azure 负载均衡器,或分布式网络名称(DNN)将流量路由到故障转移群集实例。 查看两者之间的差异;然后,为故障转移群集实例部署分布式网络名称或虚拟网络名称。
建议尽可能地使用分布式网络名称,因为这样可以加快故障转移的速度,而且可以消除负载均衡器的管理开销和成本。
使用 DNN 时,大多数SQL Server功能在 FCI 中透明地工作,但某些功能可能需要特殊考虑。 有关详细信息,请参阅 FCI 和 DNN 互操作性。
注意
如果在同一群集上有多个可用性组或 FCI,并且使用 DNN 或 VNN 侦听器,则每个可用性组或 FCI 都需要自己的独立连接点。
限制
有限的扩展支持
目前,使用SQL IaaS 代理扩展注册的Azure虚拟机上的SQL Server故障转移群集实例,仅支持通过基本注册提供的有限数量的功能,不支持需要代理的功能,例如自动备份、修补、Microsoft Entra身份验证和高级门户管理。 请参阅权益表以了解更多信息。
如果您的 SQL Server VM 已注册到 SQL IaaS 代理扩展,并且已启用了任何需要该代理的功能,则需要通过删除相应 VM 的 SQL 虚拟机 资源,从 SQL Server VM 中删除该扩展,然后再次将其注册到 SQL IaaS 代理扩展。 使用 Azure 门户删除 SQL 虚拟机资源时,请清除正确的虚拟机旁边的复选框以避免删除虚拟机。
MPEG Audio Layer-3
Azure 虚拟机 支持在 Windows Server 2019 上使用 Clustered Shared Volumes (CSV) 存储的 Microsoft 分布式事务处理协调器 (MSDTC),并结合 Azure 标准负载均衡器,或者支持使用 Azure 共享磁盘的 SQL Server 虚拟机 (VM)。
在Azure 虚拟机上,Windows Server 2016或更早版本不支持使用群集共享卷的 MSDTC,因为:
- 无法将群集 MSDTC 资源配置为使用共享存储。 在Windows Server 2016,如果创建 MSDTC 资源,则它不会显示任何可供使用的共享存储,即使存储可用。 此问题已在Windows Server 2019中修复。