使用高级文件共享创建 FCI(Azure VM 上的 SQL Server)

适用于:Azure 上的 SQL Server

提示

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

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

高级文件共享由 SSD 支持,它提供持续低延迟文件共享,在 Windows Server 2012 或更高版本上完全支持将它们用于 SQL Server 2012 或以上版本的故障转移群集实例。 高级文件共享提供更高的灵活性,使你能在不停机的情况下对文件共享进行大小调整和缩放。

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

先决条件

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

装载高级文件共享

若要装载高级文件共享,请执行以下步骤:

  1. 登录到 Azure 门户,转到你的存储帐户。

  2. 转到“数据存储”下的“文件共享”,然后选择要用于 SQL 存储的高级文件共享 。

  3. 选择“连接”使系统显示文件共享的连接字符串。

  4. 在下拉列表中,选择要使用的驱动器号,选择“存储帐户密钥”作为身份验证方法,然后将代码块复制到文本编辑器(如记事本)。

    Screenshot showing how to copy the PowerShell command from the file share connect portal.

  5. 使用远程桌面协议 (RDP),通过 SQL Server FCI 将用作服务帐户的帐户连接到 SQL Server VM。

  6. 打开 PowerShell 命令管理控制台。

  7. 运行之前从文件共享门户复制到文本编辑器的命令。

  8. 使用文件资源管理器或“运行”对话框(键盘上的 Windows + R)转到共享。 使用网络路径 \\storageaccountname.file.core.chinacloudapi.cn\filesharename。 例如: \\sqlvmstorageaccount.file.core.chinacloudapi.cn\sqlpremiumfileshare

  9. 在新连接的文件共享上创建至少一个文件夹以将 SQL 数据文件放入其中。

  10. 在将加入群集的每个 SQL Server VM 上重复这些步骤。

重要

考虑对备份文件使用单独的文件共享,以便节省此共享中数据和日志文件占用的每秒输入/输出操作数 (IOPS) 和空间容量。 可将高级或标准文件共享用于备份文件。

创建 Windows 故障转移群集

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

配置仲裁

对于 Azure VM 上的 SQL Server 的此类群集配置,云见证是建议的仲裁解决方案。

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

验证群集

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

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

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

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

  3. 选择“下一页”。

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

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

  6. 选择“下一页”。

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

    Screenshot showing how to select cluster validation tests.

  8. 选择下一步

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

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

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

测试群集故障转移

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

Screenshot showing how to 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. 选择“设置”。

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

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

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

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

    Screenshot of the secondary IP address in the subnet of the first VM.

  9. 在数据库引擎配置中,数据目录需位于高级文件共享中。 输入共享的完整路径,格式为:\\storageaccountname.file.core.chinacloudapi.cn\filesharename\foldername。 系统将显示一条警告,提示你已将文件服务器指定为数据目录。 预计会出现此警告。 请确保在保存文件共享时通过 RDP 访问 VM 时所用的用户帐户,是 SQL Server 服务用来避免可能的故障的同一帐户。

    Screenshot showing to use file share as SQL data directories.

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

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

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

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

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

    Screenshot entering the secondary IP address in the subnet of the second SQL Server VM subnet.

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

    Screenshot showing multi subnet confirmation.

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

  16. 在要添加到 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 负载均衡器

限制

  • Windows Server 2016 及更低版本不支持 Microsoft 分布式事务处理协调器 (MSDTC)。
  • 使用高级文件共享的故障转移群集不支持文件流。 若要使用文件流,请改用存储空间直通Azure 共享磁盘部署你的群集。
  • 注册到扩展的 SQL Server FCI 不支持需要代理的功能,例如自动备份、修补和高级门户管理。 请参阅权益表
  • 由于稀疏文件限制,Azure 文件存储当前不支持数据库快照。
  • 由于不支持数据库快照,用户数据库的 CHECKDB 会回退到 CHECKDB WITH TABLOCK。 TABLOCK 会限制所执行的检查 – DBCC CHECKCATALOG 不会在数据库上运行,Service Broker 数据也不会被验证。
  • 不支持在 master 数据库和 msdb 数据库上进行 DBCC CHECKDB。
  • 使用高级文件共享部署的故障转移群集实例不支持使用内存中 OLTP 功能的数据库。 如果你的业务需要内存中 OLTP,请考虑改用 Azure 共享磁盘存储空间直通来部署 FCI。

有限的扩展支持

目前,Azure 虚拟机上向 SQL IaaS 代理扩展注册的 SQL Server 故障转移群集实例仅支持数量有限的功能。 请参阅权益表

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