你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

使用存储空间直通创建 FCI(Azure VM 上的 SQL Server)

适用于: Azure VM 上的 SQL Server

提示

部署可用性组的方法有很多种。 通过在同一 Azure 虚拟网络中的多个子网中创建 SQL Server 虚拟机 (VM),可以简化部署,使 Always On 可用性组不再需要 Azure 负载均衡器或分布式网络名称 (DNN)。 如果已在单个子网中创建可用性组,可以将其迁移到多子网环境

本文介绍了如何使用存储空间直通为 Azure 虚拟机 (VM) 上的 SQL Server 创建故障转移群集实例 (FCI)。 存储空间直通充当基于软件的虚拟存储区域网络 (VSAN),在 Windows 群集中的节点 (Azure VM) 之间同步存储(数据磁盘)。

若要了解详细信息,请参阅对 Azure VM 上的 SQL Server 的 FCI群集最佳做法的概述。

注意

现在,可以使用 Azure Migrate 将故障转移群集实例解决方案直接迁移到 Azure VM 上的 SQL Server。 有关详细信息,请参阅迁移故障转移群集实例

概述

存储空间直通 (S2D) 支持两种类型的体系结构:融合与超融合。 超融合基础设施将存储放置在托管群集应用程序的服务器上,使存储位于每个 SQL Server FCI 节点上。

下图显示了完整的解决方案,该解决方案将超融合存储空间直通与 Azure VM 上的 SQL Server 配合使用:

使用超融合存储空间直通的完整解决方案的示意图。

上图显示了同一资源组中的以下资源:

  • Windows Server 故障转移群集中的两个虚拟机。 位于故障转移群集中的虚拟机也称为“群集节点”或“节点”。
  • 每个虚拟机包含两个或更多个数据磁盘。
  • 存储空间直通同步数据磁盘上的数据,并以存储池的形式提供同步的存储。
  • 存储池向故障转移群集提供群集共享卷 (CSV)。
  • SQL Server FCI 群集角色为数据驱动器使用 CSV。
  • 单子网方案中用于保存 SQL Server FCI IP 地址的 Azure 负载均衡器。
  • Azure 可用性集保存所有资源。

注意

可以在 Azure 中基于模板创建整个解决方案。 GitHub Azure 快速入门模板页面上提供了一个模板示例。 此示例不是针对任何特定工作负荷设计的,也没有针对任何特定工作负荷进行测试。 运行该模板可以使用与域连接的存储空间直通存储创建 SQL Server FCI。 可以评估该模板,并根据用途对其进行修改。

先决条件

在按本文中的说明操作之前,你应已具备以下条件:

创建 Windows 故障转移群集

创建 Windows Server 故障转移群集的步骤在单个子网和多子网环境之间有所不同。 若要创建群集,请按照多子网方案单子网方案教程中的步骤执行操作。 尽管这些教程可创建可用性组,但创建群集的步骤对于故障转移群集实例是相同的。

配置仲裁

虽然磁盘见证是最具复原能力的仲裁选项,但配置了存储空间直通的故障转移群集实例不支持该选项。 因此,对于 Azure VM 上的 SQL Server 的此类群集配置,云见证是建议的仲裁解决方案。

如果群集中的投票数为偶数,请配置最适合你的业务需求的仲裁解决方案。 有关详细信息,请参阅 SQL Server VM 上的仲裁

验证群集

在故障转移群集管理器 UI 中或使用 PowerShell 验证群集。

若要使用 UI 来验证群集,请在某个虚拟机中执行以下步骤:

  1. 在“服务器管理器”中,依次选择“工具”、“故障转移群集管理器”。

  2. 右键单击“故障转移群集管理器”中的群集,选择“验证群集”以打开“验证配置向导”。

  3. 在“验证配置向导”中,选择“下一步”。

  4. 在“选择服务器或群集”页面中,输入两个虚拟机的名称。

  5. 在“测试选项”页面中,选择“仅运行选择的测试”。

  6. 选择下一步

  7. 在“测试选择”页面中,选择“存储”以外的所有测试:

    选择群集验证测试的屏幕截图。

  8. 选择下一步

  9. 在“确认”页面上,选择“下一步”。 “验证配置”向导会运行验证测试。

若要使用 PowerShell 验证群集,请在某个虚拟机上通过管理员 PowerShell 会话运行以下脚本:

Test-Cluster –Node ("<node1>","<node2>") –Include "Storage Spaces Direct", "Inventory", "Network", "System Configuration"

添加存储

存储空间直通的磁盘需是空的。 它们不能包含分区或其他数据。 若要清除磁盘,请按照部署存储空间直通中的说明进行操作。

  1. 启用存储空间直通

    以下 PowerShell 脚本启用存储空间直通:

    Enable-ClusterS2D
    

    现在,“故障转移群集管理器”中会显示存储池。

  2. 创建卷

    启用存储空间直通后,它会自动创建存储池。 接下来,可以创建卷。 PowerShell cmdlet New-Volume 自动完成卷的创建过程。 此过程包括格式设置、将卷添加到群集,以及创建 CSV。 此示例创建一个 800 千兆字节 (GB) 的 CSV:

    New-Volume -StoragePoolFriendlyName S2D* -FriendlyName VDisk01 -FileSystem CSVFS_REFS -Size 800GB
    

    运行前面的命令后,一个 800 GB 的卷将装载为群集资源。 该卷位于 C:\ClusterStorage\Volume1\

    此屏幕截图显示了一个采用存储空间直通的 CSV:

    屏幕截图显示采用存储空间直通的群集共享卷。

测试群集故障转移

测试你的群集的故障转移。 在“故障转移群集管理器”中,右键单击你的群集并选择“更多操作”>“移动核心群集资源”>“选择节点”,然后选择群集的其他节点。 将核心群集资源移到群集的每个节点,再将它移回主节点。 如果可以成功将群集移到每个节点,则表示你已为安装 SQL Server 做好了准备。

屏幕截图中显示了如何通过将核心资源移到其他节点来测试群集故障转移。

创建 SQL Server FCI

配置故障转移群集和所有群集组件(包括存储)后,可以创建 SQL Server FCI。

在 SQL FCI 中创建第一个节点

若要在 SQL Server FCI 中创建第一个节点,请执行以下步骤:

  1. 使用 RDP 或 Bastion 连接到第一个虚拟机。

  2. 在“故障转移群集管理器”中,确保所有核心群集资源位于第一个虚拟机上。 如有必要,请将所有资源移到该虚拟机。

  3. 如果操作系统的版本是 Windows Server 2019 并且 Windows 群集是使用默认的分布式网络名称 (DNN) 创建的,则 SQL Server 2017 及更低版本的 FCI 安装将失败并出现错误 The given key was not present in the dictionary

    在安装过程中,SQL Server 安装程序会查询现有的虚拟网络名称 (VNN),但无法识别 Windows 群集 DNN。 该问题已在 SQL Server 2019 安装程序中修复。 对于 SQL Server 2017 及以下版本,请执行以下步骤以避免安装错误:

    • 在故障转移群集管理器中,连接到群集,右键单击“角色”,并选择“创建空角色”。
    • 右键单击新创建的空角色,选择“添加资源”并选择“客户端访问点”。
    • 输入任意名称并完成向导以创建客户端访问点。
    • SQL Server FCI 安装完成后,可以删除包含临时客户端访问点的角色。
  4. 找到安装媒体。 如果虚拟机使用某个 Azure 市场映像,该媒体将位于 C:\SQLServer_<version number>_Full。 选择“设置”。

  5. 在“SQL Server 安装中心”中选择“安装”。

  6. 选择“新建 SQL Server 故障转移群集安装”。 遵照向导中的说明安装 SQL Server FCI。

  7. 在“群集网络配置”页上,你提供的 IP 会有所不同,具体取决于你的 SQL Server VM 是部署到单个子网还是多个子网。

    1. 对于单子网环境,请提供计划添加到 Azure 负载均衡器的 IP 地址。
    2. 对于多子网环境,请提供第二个 IP 地址,它应该位于之前指定为故障转移群集实例网络名称的 IP 地址的第一个 SQL Server VM 的子网中:

    在第一个 SQL Server VM 的子网中提供辅助 IP 地址的屏幕截图。

  8. 在数据库引擎配置中,FCI 数据目录需位于群集存储中。 使用存储空间直通时,该存储不是共享磁盘,而是每个服务器上的卷的装入点。 存储空间直通在两个节点之间同步该卷。 该卷作为 CSV 提供给群集。 使用数据目录的 CSV 装入点。

    “数据”目录的屏幕截图。

  9. 根据向导中的说明完成操作后,安装程序会在第一个节点上安装 SQL Server FCI。

将其他节点添加到 SQL FCI

若要将其他节点添加到 SQL Server FCI,请遵循以下步骤:

  1. 在第一个节点上成功安装 FCI 后,请使用 RDP 或 Bastion 连接到第二个节点。

  2. 打开“SQL Server 安装中心”。 选择“安装”。

  3. 选择“将节点添加到 SQL Server 故障转移群集”。 按照向导中的说明安装 SQL Server 并将此节点添加到 FCI。

  4. 对于多子网方案,请在“群集网络配置”中输入供第二个 IP 地址,它应该位于之前指定为故障转移群集实例网络名称的 IP 地址的第二个 SQL Server VM 的子网中。

    在第二个 SQL Server VM 子网的子网中输入辅助 IP 地址的屏幕截图。

    在“群集网络配置”中选择“下一步”后,安装程序会显示一个对话框,指示 SQL Server 安装程序检测到多个子网,如示例图像中所示。 请选择“是”以确认。

    显示多子网确认的屏幕截图。

  5. 完成向导中的说明后,安装程序将添加第二个 SQL Server FCI 节点。

  6. 在要添加到 SQL Server 故障转移群集实例的任何其他节点上重复这些步骤。

注意

Azure Marketplace 库映像自带已安装的 SQL Server Management Studio。 如果未使用市场映像,请下载 SQL Server Management Studio (SSMS)

向 SQL IaaS 代理扩展注册

若要从门户管理 SQL Server VM,请将它注册到 SQL IaaS 代理扩展。 请注意,只有有限的功能可用于具有 SQL Server 故障转移群集实例 (FCI) 的 SQL Server VM。

注意

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

使用 PowerShell 注册 SQL Server VM(-LicenseType 可以是 PAYGAHUB):

# Get the existing compute VM
$vm = Get-AzVM -Name <vm_name> -ResourceGroupName <resource_group_name>
         
# Register SQL VM with SQL IaaS Agent extension
New-AzSqlVM -Name $vm.Name -ResourceGroupName $vm.ResourceGroupName -Location $vm.Location `
   -LicenseType <license_type>

配置连接

如果在多个子网中部署了 SQL Server VM,请跳过此步骤。 如果已将 SQL Server VM 部署到单个子网,则需要配置其他组件,将流量路由到 FCI。 可为故障转移群集实例配置虚拟网络名称 (VNN) 及 Azure 负载均衡器,或部署分布式网络名称。 查看两者之间的差异;然后,为故障转移群集实例部署分布式网络名称虚拟网络名称及 Azure 负载均衡器

限制

  • 如果将存储添加到群集,则仅当未选中或清除了磁盘资格选项时,已作为 NTFS 格式的磁盘附加的磁盘才能与存储空间直通一起使用。

  • 注册到 SQL IaaS 代理扩展的 SQL Server FCI 不支持需要代理的功能,例如自动备份、修补、Microsoft Entra 身份验证和高级门户管理。 有关详细信息,请参阅权益表

  • 使用存储空间直通作为共享存储的故障转移群集实例不支持对群集仲裁使用磁盘见证。 请改用云见证。

  • 部署到存储空间直通的 Azure VM 故障转移群集实例上的 SQL Server 不支持 Microsoft 分布式事务处理协调器 (MSDTC)。 有关更多信息,请查看 FCI 限制

  • 从 Windows Server 2019 及更高版本开始,部署到专用群集共享卷 (CSV) 并使用标准负载均衡器时,Azure 虚拟机上支持 Microsoft 分布式事务处理协调器 (MSDTC)。 Windows Server 2016 及更早的版本不支持分布式事务处理协调器。

有限的扩展支持

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

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

后续步骤

如果存储空间直通不是适合你的 FCI 存储解决方案,请考虑改用 Azure 共享磁盘高级文件共享来创建 FCI。

若要了解更多信息,请参阅以下文章: