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

适用于:Azure 上的 SQL Server

提示

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

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

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

先决条件

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

添加 Azure 共享磁盘

部署已启用共享磁盘功能的托管高级 SSD 磁盘。 将 maxShares 设置为与群集节点的数目一致,以使磁盘可在所有 FCI 节点之间共享。

将共享磁盘附加到 VM

在使用 maxShares > 1 部署了共享磁盘后,可将该磁盘装载到将作为群集中节点参与的虚拟机。

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

  1. 在 Azure 门户中选择要将共享磁盘附加到的 VM。
  2. 在“设置”窗格中选择“磁盘”。
  3. 选择“附加现有磁盘”,将共享磁盘附加到 VM。
  4. 从“磁盘名称”下拉菜单中选择共享磁盘。
  5. 选择“保存” 。
  6. 为每个群集节点 SQL Server VM 重复上述步骤。

稍后,共享数据磁盘会附加到 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 故障转移群集的步骤会有所不同,具体取决于你是将 SQL Server VM 部署到单个子网还是多个子网。 若要创建群集,请按照多子网方案单子网方案教程中的步骤执行操作。 尽管这些是创建可用性组的教程,但创建群集的步骤是相同的。

配置仲裁

由于磁盘见证是最可复原的仲裁选项,而且 FCI 解决方案使用 Azure 共享磁盘,因此建议将磁盘见证配置为仲裁解决方案。

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

验证群集

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

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

  1. 在“服务器管理器”下,依次选择“工具”、“故障转移群集管理器”。
  2. 在“故障转移群集管理器”下,依次选择“操作”、“验证配置”。
  3. 选择“下一页”。
  4. 在“选择服务器或群集”下,输入两个虚拟机的名称。
  5. 在“测试选项”下,选择“仅运行选择的测试”。
  6. 选择“下一页”。
  7. 在“测试选择”中,选择除“存储”以外的所有测试。
  8. 选择“下一页”。
  9. 在“确认”下,选择“下一步” 。 “验证配置”向导会运行验证测试。

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

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

测试群集故障转移

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

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

将共享磁盘添加到群集

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

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

  1. 在“服务器管理器”仪表板中,选择“工具”,然后选择“故障转移群集管理器” 。

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

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

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

    Add Disk

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

    Select Disk

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

    Cluster Disk

创建 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. 选择“设置”。

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

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

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

    Cluster Disk Selection

  9. 在“群集网络配置”页上,你提供的 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

  10. 在“数据库引擎配置”页上,确保数据库目录位于 Azure 共享磁盘上。

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

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

  13. 打开“SQL Server 安装中心”,然后选择“安装”。

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

  15. 对于多子网方案,请在“群集网络配置”中输入供第二个 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

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

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

注意

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 及更早的版本不支持分布式事务处理协调器。
  • 注册到扩展的 SQL Server FCI 不支持需要代理的功能,例如自动备份、修补和高级门户管理。 请参阅权益表

后续步骤

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

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