使用Azure共享磁盘创建 FCI(Azure VM 上的SQL Server)

Azure VM 上的SQL Server

本文介绍如何使用 Azure 虚拟机(VM)上的 SQL Server 与 Azure 共享磁盘,创建故障转移群集实例(FCI)。

若要了解详细信息,请参阅有关 Azure VM 上的 SQL Server FCI 的概述群集最佳实践

先决条件

在完成本文中的说明之前,请确保具备:

提示

在同一个 Azure 虚拟网络的多个子网中创建 SQL Server 虚拟机 (VM),简化您的部署流程,并消除对 Azure Load Balancer 或分布式网络名称 (DNN) 的需求,从而简化故障转移群集实例的设置。

添加Azure共享磁盘

部署启用了共享磁盘功能的托管磁盘。 将 maxShares 设置为与群集节点的数目一致,以使磁盘可在所有 FCI 节点之间共享。 高级 SSD 和 Ultra Disk 是支持用于 SQL Server 故障转移群集实例的磁盘类型。

尽可能使用区域冗余存储(ZRS)。

将共享磁盘附加到 VM

将共享磁盘部署后,如果 maxShares 设置为 1 以上,可以将该磁盘装载到在群集中的节点上运行的 VM。

若要将共享磁盘附加到SQL Server VM,请执行以下步骤:

  1. 在 Azure 门户中选择您将共享磁盘附加到的虚拟机。
  2. 在“设置”窗格中选择“磁盘”。
  3. 选择“附加现有磁盘”,将共享磁盘附加到 VM。
  4. “磁盘名称 ”下拉列表中选择共享磁盘。
  5. 选择“保存” 。
  6. 为每个群集节点SQL Server VM 重复这些步骤。

片刻之后,共享数据磁盘会附加到 VM,并显示在该 VM 的数据磁盘列表中。

初始化共享磁盘

将共享磁盘附加到所有 VM 后,初始化这些要用作群集中节点的 VM 上的所有磁盘。

若要初始化 SQL Server VM 的磁盘,请执行以下步骤:

  1. 连接一个 VM。
  2. 在 VM 中,打开“开始”菜单,然后在搜索框中键入“diskmgmt.msc”以打开“磁盘管理”控制台。
  3. “磁盘管理”识别出新的未初始化磁盘,并显示“初始化磁盘”窗口 。
  4. 请确保选择新磁盘,然后选择“确定”对其进行初始化 。
  5. 新的磁盘显示为“未分配” 。 右键单击磁盘上任意位置,选择“新建简单卷”。 此时会打开“新建简单卷向导”窗口 。
  6. 完成向导中的每一步,保留所有默认值,完成后,选择“完成” 。
  7. 关闭“磁盘管理” 。
  8. 此时出现一个弹出窗口,通知你需要先格式化新磁盘才能使用新磁盘。 选择“格式化磁盘” 。
  9. 在“格式化新磁盘”窗口中,检查设置,然后选择“启动” 。
  10. 此时出现一条警告,通知你格式化磁盘会擦除所有数据。 选择“确定” 。
  11. 完成格式化后,选择“确定” 。
  12. 对要在 FCI 中使用的每个SQL Server VM 重复这些步骤。

创建Windows故障转移群集

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

配置仲裁

由于磁盘见证是最具弹性仲裁选项,FCI 解决方案使用Azure共享磁盘,因此请将磁盘见证配置为仲裁解决方案。

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

验证群集

在其中一台虚拟机上,使用故障转移群集管理器 UI 或 PowerShell 来验证群集。

若要使用 UI 验证群集,请执行以下步骤:

  1. Server Manager 中,选择 Tools,然后选择 Failover Cluster Manager
  2. 右键单击故障转移群集管理器中的群集,选择验证群集以打开验证配置向导
  3. 在“验证配置向导”中,选择“下一步”。
  4. 在“选择服务器或群集”页面中,输入两个虚拟机的名称。
  5. 在“测试选项”页面中,选择“仅运行选择的测试”。
  6. 选择 “下一步”。
  7. 在“测试选择”页面中,选择“存储”以外的所有测试。
  8. 选择 “下一步”。
  9. 在“确认”页面上,选择“下一步”。 “验证配置”向导会运行验证测试。

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

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

测试群集故障转移

测试集群故障转移功能。 在故障转移群集管理器中,右键单击你的群集,选择更多操作,然后选择>,再选择选择节点,最后选择群集的另一个节点。 将核心群集资源移到群集的每个节点,再将它移回主节点。 在安装SQL Server之前,请确保可以成功将群集移动到每个节点。

通过将核心资源移到其他节点来测试群集故障转移

将共享磁盘添加到群集

使用故障转移群集管理器将附加Azure共享磁盘添加到群集。

若要将磁盘添加到群集,请执行以下步骤:

  1. Server Manager 仪表板中,选择 Tools,然后选择 Failover Cluster Manager

  2. 选择群集并在导航窗格中将其展开。

  3. 选择“存储”,然后选择“磁盘”。

  4. 右键单击“磁盘”,然后选择“添加磁盘”:

    添加磁盘

  5. 将磁盘添加到群集窗口中选择Azure共享磁盘。 选择“确定” 。

    选择磁盘

  6. 将共享磁盘添加到群集后,可在故障转移群集管理器中看到它。

    群集磁盘

创建 SQL Server FCI

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

在 SQL FCI 中创建第一个节点

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

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

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

  3. 如果操作系统的版本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 安装完成后,可以删除包含临时 客户端访问点的角色。
  4. 找到安装媒体。 如果虚拟机使用其中一个 Azure Marketplace 镜像,请在 C:\SQLServer_<version number>_Full 找到媒体。

  5. 选择“设置”。

  6. SQL Server 安装中心中,选择 Installation

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

  8. “群集磁盘选择 ”页上,选择附加到 VM 的所有共享磁盘。

    群集磁盘选择的屏幕截图。

  9. Cluster 网络配置页上,提供的 IP 取决于是将SQL Server VM 部署到单个子网还是多个子网。

    1. 对于<单一子网环境>,请提供计划插入到 的 IP 地址。
    2. 对于 multi-subnet environment,请提供以前指定为故障转移群集实例网络名称的 IP 地址的 first SQL Server VM 的子网中的辅助 IP 地址

    在第一个 SQL Server 虚拟机的子网中截屏以提供备用 IP 地址。

  10. Database Engine Configuration 页上,确保数据库目录位于Azure共享磁盘上。

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

向 SQL FCI 添加额外的节点

若要向 SQL Server FCI 添加额外的节点,请执行以下步骤:

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

  2. 打开 SQL Server 安装中心,然后选择 Installation

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

  4. 对于多子网方案,在Cluster Network Configuration中,输入第二个SQL Server VM 子网中已指定为故障转移群集实例网络名称IP 地址的子网内的辅助 IP 地址。

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

    Cluster 网络配置1 中选择 Next 后,安装程序会显示一个对话框,指示SQL Server安装程序检测到多个子网。 请选择“是”以确认。

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

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

  6. 在想要参与SQL Server故障转移群集实例的任何其他SQL Server VM 上重复这些步骤。

注意

Azure Marketplace图库映像附带已安装的SQL Server Management Studio。 如果未使用市场镜像,请安装最新版本的 SQL Server Management Studio(SSMS)

向 SQL IaaS 代理扩展注册

若要从门户管理SQL Server VM,请将其注册到 SQL IaaS 代理扩展

注意

目前,注册到 SQL IaaS 代理扩展的 Azure 虚拟机上的 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。 可以使用 Azure 负载均衡器配置虚拟网络名称 (VNN),或者为故障转移群集实例配置分布式网络名称。 查看两者之间的差异,然后为故障转移群集实例部署 分布式网络名称虚拟网络名称和 Azure 负载均衡器

限制

  • Windows Server 2016及更早版本不支持 MSDTC。

有限的扩展支持

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

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

如果 Azure 共享磁盘不是适合您的 FCI 存储解决方案,请考虑使用 高级文件共享Storage Spaces Direct 创建 FCI。

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