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

适用于:Azure 上的 SQL Server

提示

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

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

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

概述

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

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

Diagram of the complete solution, using hyperconverged Storage Spaces Direct

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

  • Windows Server 故障转移群集中的两个虚拟机。 位于故障转移群集中的虚拟机也称为“群集节点”或“节点”。

  • 每个虚拟机包含两个或更多个数据磁盘。

  • 存储空间直通同步数据磁盘上的数据,并以存储池的形式提供同步的存储。

  • 存储池向故障转移群集提供群集共享卷 (CSV)。

  • SQL Server FCI 群集角色为数据驱动器使用 CSV。

  • 单子网方案中用于保存 SQL Server FCI IP 地址的 Azure 负载均衡器。

  • Azure 可用性集保存所有资源。

    注意

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

先决条件

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

创建 Windows 故障转移群集

创建 Windows Server 故障转移群集的步骤会有所不同,具体取决于你是将 SQL Server VM 部署到单个子网还是多个子网。 若要创建群集,请按照多子网方案单子网方案教程中的步骤执行操作。 尽管这些是创建可用性组的教程,但创建群集的步骤是相同的。

配置仲裁

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

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

验证群集

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

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

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

  2. 在“故障转移群集管理器”下,依次选择“操作”、“验证配置”。

  3. 选择“下一页”。

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

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

  6. 选择“下一步”。

  7. 在“测试选择”下,选择除“存储”以外的所有测试,如下所示:

    Select cluster validation tests

  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:

    Screenshot of a Cluster Shared Volume with Storage Spaces Direct

测试群集故障转移

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

Test cluster failover by moving the core resource to the other nodes

创建 SQL Server FCI

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

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

  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 的子网中:

    provide the secondary IP address in the subnet of the first SQL Server VM that you previously designated as the IP address of the failover cluster instance network name

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

    Data directories

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

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

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

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

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

    enter the secondary IP address in the subnet of the second SQL Server VM subnet that you previously designated as the IP address of the failover cluster instance network name

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

    Multi Subnet Confirmation

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

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

注意

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

向 SQL IaaS 代理扩展注册

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

如果 SQL Server VM 已注册到 SQL IaaS 代理扩展,并且你已启用任何需要该代理的功能,需要从扩展中取消注册 SQL Server VM,并在安装 FCI 后重新注册它。

使用 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 负载均衡器

限制

  • Azure 虚拟机支持 Windows Server 2019 上的 Microsoft 分布式事务处理协调器 (MSDTC),其中的存储位于 CSV 和标准负载均衡器上。 Windows Server 2016 及更早的版本不支持分布式事务处理协调器。
  • 如果将存储添加到群集,则仅当未选中或清除了磁盘资格选项时,已作为 NTFS 格式的磁盘附加的磁盘才能与存储空间直通一起使用。
  • 使用存储空间直通作为共享存储的故障转移群集实例不支持使用磁盘见证来进行群集仲裁。 请改用云见证。

后续步骤

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

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