Azure VM 上的SQL Server
提示
部署可用性组的方法有很多种。 简化您的部署,通过在同一Azure虚拟网络内的多个子网中创建SQL Server虚拟机(VM),消除对Always On 高可用性组的Azure Load Balancer或分布式网络名称(DNN)的需求。 如果已在单个子网中创建可用性组,可以将其迁移到多子网环境。
本文介绍如何将 Storage Spaces Direct 与 SQL Server on Azure Virtual Machines(VM)配合使用来创建故障转移群集实例(FCI)。 Storage Spaces Direct充当基于软件的虚拟存储区域网络(VSAN),用于在Windows群集中的节点(Azure VM)之间同步存储(数据磁盘)。
若要了解详细信息,请参阅有关 Azure VM 上的 SQL Server FCI 的概述和 群集最佳实践。
概述
Storage Spaces Direct (S2D)支持两种类型的体系结构:聚合和超融合。 超融合基础结构将存储放置在托管群集应用程序的同一服务器上,因此每个SQL Server FCI 节点都有自己的存储。
下图显示了完整的解决方案,该解决方案使用超融合Storage Spaces Direct和 Azure VM 上的SQL Server:
完整解决方案的示意图,使用超融合Storage Spaces Direct。
上图显示了同一资源组中的以下资源:
- Windows Server故障转移群集中的两个虚拟机。 位于故障转移群集中的虚拟机也称为“群集节点”或“节点”。
- 每个虚拟机包含两个或更多个数据磁盘。
- Storage Spaces Direct同步数据磁盘上的数据,并将同步存储显示为存储池。
- 存储池向故障转移群集提供群集共享卷 (CSV)。
- SQL Server FCI 群集角色对数据驱动器使用 CSV。
- Azure负载均衡器保存单个子网方案的 SQL Server FCI 的 IP 地址。
- Azure可用性集包含所有资源。
注意
可以通过模板在Azure中创建此整个解决方案。 GitHub Azure快速入门模板页上提供了模板示例。 此示例不是针对任何特定工作负荷设计的,也没有针对任何特定工作负荷进行测试。 可以运行模板来创建一个 SQL Server FCI,它使用连接到您域的 Storage Spaces Direct 存储。 可以评估该模板,并根据用途对其进行修改。
先决条件
在完成本文中的说明之前,请确保具备:
- 一个Azure订阅。 开始使用 trial Azure 帐户。
- 两个或更多预配的 Azure Windows 虚拟机 位于一个 可用性集中。
- 有权在Azure虚拟机和Active Directory中创建对象的帐户。
- 最新版本的 PowerShell。
创建Windows故障转移群集
创建Windows Server故障转移群集的步骤在单个子网和多子网环境之间有所不同。 若要创建群集,请按照多子网方案或单子网方案教程中的步骤执行操作。 尽管这些教程创建了可用性组,但创建群集的步骤与故障转移群集实例的步骤相同。
配置法定人数
尽管磁盘见证是最具弹性仲裁选项,但不支持配置有Storage Spaces Direct的故障转移群集实例。 因此,云见证是 SQL Server 在 Azure VM 上此类群集配置中的推荐仲裁解决方案。
如果群集中的投票为偶数,请配置最适合你的业务需求的仲裁解决方案。 有关详细信息,请参阅SQL Server VM 的 Quorum。
验证群集
在故障转移群集管理器 UI 中或使用 PowerShell 验证群集。
若要使用 UI 验证群集,请在其中一个虚拟机上完成以下步骤:
在 Server Manager 中,选择 Tools,然后选择 Failover Cluster Manager。
在“故障转移群集管理器”中右键单击该群集,选择“验证群集”以打开“验证配置向导”。
在“验证配置向导”中,选择“下一步”。
在“选择服务器或群集”页面中,输入两个虚拟机的名称。
在“测试选项”页面中,选择“仅运行选择的测试”。
选择下一步。
在“测试选择”页面中,选择“存储”以外的所有测试:
选择下一步。
在“确认”页面上,选择“下一步”。 “验证配置”向导会运行验证测试。
若要使用 PowerShell 验证群集,请在某个虚拟机上通过管理员 PowerShell 会话运行以下脚本:
Test-Cluster -Node ("<node1>","<node2>") -Include "Storage Spaces Direct", "Inventory", "Network", "System Configuration"
添加存储
Storage Spaces Direct的磁盘需要为空。 它们不能包含分区或其他数据。 若要清理磁盘,请按照 Deploy Storage Spaces Direct 中的说明进行操作。
-
以下 PowerShell 脚本启用Storage Spaces Direct:
Enable-ClusterS2D现在,“故障转移群集管理器”中会显示存储池。
创建卷。
启用Storage Spaces Direct时会自动创建存储池。 接下来,可以创建卷。 PowerShell cmdlet
New-Volume自动完成卷的创建过程。 此过程包括格式设置、将卷添加到群集,以及创建 CSV。 此示例创建一个 800 千兆字节 (GB) 的 CSV:New-Volume -StoragePoolFriendlyName S2D* -FriendlyName VDisk01 -FileSystem CSVFS_REFS -Size 800GB运行上述命令后,一个 800-GB 的卷被装载为集群资源。 该卷位于
C:\ClusterStorage\Volume1\。此屏幕截图显示了包含Storage Spaces Direct的 CSV:
测试群集故障转移
测试你的群集的故障转移。 在“故障转移群集管理器”中,右键单击你的群集并选择“更多操作”“移动核心群集资源”“选择节点”,然后选择群集的其他节点>>。 将核心群集资源移到群集的每个节点,再将它移回主节点。 如果可以成功将群集移动到每个节点,则可以安装SQL Server。
创建 SQL Server FCI
配置故障转移群集和所有群集组件(包括存储)后,可以创建 SQL Server FCI。
在 SQL FCI 中创建第一个节点
若要在 SQL Server FCI 中创建第一个节点,请执行以下步骤:
使用 Bastion连接到第一个虚拟机。
在“故障转移群集管理器”中,确保所有核心群集资源位于第一个虚拟机上。 如有必要,请将所有资源移到该虚拟机。
如果操作系统的版本为 Windows Server 2019,并且使用默认 Distributed Network Name (DNN) 创建 Windows 群集,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 安装完成后,可以删除包含临时 客户端访问点的角色。
找到安装媒体。 如果虚拟机使用其中一个 Azure Marketplace 镜像,则媒体位于
C:\SQLServer_<version number>_Full。 选择“设置”。在 SQL Server 安装中心中,选择 Installation。
选择新建 SQL Server 故障转移群集安装。 按照向导中的说明安装 SQL Server FCI。
在 Cluster 网络配置页上,提供的 IP 因SQL Server VM 部署到单个子网或多个子网而异。
- 对于单一子网环境,请提供计划添加到 Azure Load Balancer 的 IP 地址。
- 对于多子网环境,请提供您之前指定为故障转移群集实例网络名称的第一个 SQL Server 虚拟机子网中的备用 IP 地址:
在 Database Engine 配置中,FCI 数据目录需要位于群集存储上。 使用Storage Spaces Direct,它不是共享磁盘,而是每个服务器上的卷的装入点。 Storage Spaces Direct同步两个节点之间的卷。 该卷作为 CSV 提供给群集。 使用数据目录的 CSV 装入点。
完成向导中的说明后,安装程序会在第一个节点上安装SQL Server FCI。
向 SQL FCI 添加额外的节点
若要向 SQL Server FCI 添加额外的节点,请执行以下步骤:
在第一个节点上成功安装 FCI 后,使用 Bastion 连接到第二个节点。
打开 SQL Server 安装中心。 选择“安装”。
选择 将节点添加到SQL Server故障转移群集。 按照向导中的说明安装SQL Server并将节点添加到 FCI。
对于多子网场景,在Cluster 网络配置中,在您之前指定为故障转移群集实例网络名称 IP 地址的第二个 SQL Server 虚拟机的子网中输入辅助 IP 地址。
在
Cluster Network Configuration Next> 后,安装程序会显示一个对话框,指示SQL Server安装程序检测到示例图像中的多个子网。 请选择“是”以确认。
完成向导中的说明后,安装程序将添加第二个SQL Server FCI 节点。
在要添加到SQL Server故障转移群集实例的任何其他节点上重复这些步骤。
注意
Azure Marketplace图库映像附带已安装的SQL Server Management Studio。 如果未使用市场镜像,请安装最新版本的 SQL Server Management Studio(SSMS)。
向 SQL IaaS 代理扩展注册
若要从门户管理SQL Server VM,请将其注册到 SQL IaaS 代理扩展。 SQL Server具有故障转移群集实例的 VM 只有 限制功能。
注意
目前,注册在 SQL IaaS 代理扩展上的 Azure 虚拟机中的 SQL Server 故障转移群集实例仅支持通过基本注册提供的有限功能。 它们不支持需要代理的功能,例如自动备份、修补、Microsoft Entra身份验证和高级门户管理。 若要了解详细信息,请参阅 优势表。
使用 PowerShell 注册SQL Server VM。 参数 -LicenseType 可以是 PAYG 或 AHUB:
# 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。 可以使用 Azure 负载均衡器配置虚拟网络名称 (VNN),或者为故障转移群集实例配置分布式网络名称。 查看两者之间的差异,然后为故障转移群集实例部署 分布式网络名称 或 虚拟网络名称和 Azure 负载均衡器。
限制
只有在将作为 NTFS 格式磁盘连接的磁盘添加到群集时取消选中或清除磁盘资格选项后,才能使用 Storage Spaces Direct。
SQL Server注册到 SQL IaaS 代理扩展的 FCI 不支持需要代理的功能,例如自动备份、修补、Microsoft Entra身份验证和高级门户管理。 有关详细信息,请参阅 权益表。
使用 Storage Spaces Direct 作为共享存储的故障转移群集实例不支持将磁盘见证用作群集的仲裁机制。 请改用云见证。
SQL Server 在部署到 Azure 上使用存储空间直接的 VM 故障转移群集实例时,不支持 Microsoft 分布式事务协调器(MSDTC)。 有关更多信息,请查看 FCI 限制。
Microsoft Distributed Transaction Coordinator(MSDTC)在 Azure 虚拟机上得到支持,适用于 Windows Server 2019 及更高版本,并且是部署在专用群集共享卷(CSV)上,且使用 标准负载均衡器。 Windows Server 2016及更早版本不支持 MSDTC。
有限的扩展支持
目前,SQL Server Azure使用 SQL IaaS 代理扩展注册的虚拟机上的故障转移群集实例仅支持少量通过基本注册提供的功能,而不支持需要代理的功能,例如自动备份、修补和高级门户管理。 请参阅权益表以了解更多信息。
如果您的 SQL Server VM 已注册到 SQL IaaS 代理扩展,并且已启用了任何需要该代理的功能,则需要通过删除相应 VM 的 SQL 虚拟机 资源,从 SQL Server VM 中删除该扩展,然后再次将其注册到 SQL IaaS 代理扩展。 使用 Azure 门户删除 SQL 虚拟机资源时,请清除正确的虚拟机旁边的复选框以避免删除虚拟机。
后续步骤
如果 Storage Spaces Direct 不是适合您的 FCI 存储解决方案,请考虑改用 Azure 共享磁盘 或 高级文件共享 来创建 FCI。
若要了解更多信息,请参阅以下文章: