Compartir a través de

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

适用于:Azure 虚拟机上的 SQL Server

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

高级文件共享受 SSD 支持,提供一致的低延迟文件共享,这些文件共享完全支持在 Windows Server 2012 或更高版本上用于 SQL Server 2012 或更高版本的 FCI。 高级文件共享提供更高的灵活性,使你能在不停机的情况下对文件共享进行大小调整和缩放。

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

先决条件

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

  • Azure订阅。 如果没有帐户,请开始使用 trial Azure 帐户
  • 有权在Azure虚拟机和Active Directory中创建对象的帐户。
  • 可用性集中或者在不同的可用性区域中准备的两个或两个以上的Azure Windows虚拟机
  • 基于数据库的数据文件存储配额,高级文件共享 将被用作群集驱动器。
  • 最新版本的 PowerShell

提示

简化您的部署,消除对Azure负载均衡器或分布式网络名称(DNN)的需求。通过在同一Azure虚拟网络中的多个子网中创建SQL Server虚拟机(VM)来实现故障转移群集实例。

装载高级文件共享

使用SQL Server服务帐户凭据在每个SQL Server VM 上装载高级文件共享存储;对于单子网和多子网部署,此过程完全相同。

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

  1. 登录到 Azure 门户,然后转到存储帐户。

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

  3. 选择 Connect 来显示高级文件共享的连接字符串。

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

    屏幕截图中显示了如何从文件共享连接门户复制 PowerShell 命令。

  5. 使用 Bastion 连接到 SQL Server 虚拟机,并使用 SQL Server FCI 将用于服务帐户的 帐户

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

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

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

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

  10. 在 PowerShell 中运行 Test-Path "\\storageaccountname.file.core.chinacloudapi.cn\filesharename" ,验证高级文件共享是否可访问。 该命令应返回 True

  11. 在将参与群集的每个SQL Server VM 上重复这些步骤。

重要

请考虑为备份文件使用单独的文件存储,以便保留高级文件存储上的 IOPS 和空间容量用于数据和日志文件。 可将高级或标准文件共享用于备份文件。

创建 Windows 故障转移集群

使用具有“创建计算机对象”权限的域帐户在所有SQL Server VM 上创建Windows Server故障转移群集(WSFC);单子网(需要负载均衡器)和多子网(使用分布式网络名称)环境之间的设置步骤不同。

创建 WSFC 的步骤在单个子网和多子网环境之间有所不同。 若要创建群集,请按照多子网方案单子网方案教程中的步骤执行操作。 尽管这些教程创建了可用性组,但创建群集的步骤与 FCI 的步骤相同。

配置仲裁

使用云见证(建议在 Azure VM 上使用具有群集管理员权限的域帐户SQL Server)配置群集仲裁;对于单子网和多子网部署,仲裁配置完全相同。

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

验证群集

使用故障转移群集管理器或 PowerShell,通过具有群集管理员权限的域帐户验证 WSFC 配置(不包括存储测试)。此验证对于获得与 Azure 支持至关重要,且适用于单个子网及多子网的部署。

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

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

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

  2. 故障转移群集管理器中右键单击该群集,然后选择验证群集以打开验证配置向导

  3. 在“验证配置向导”中,选择“下一步”。

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

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

  6. 选择“下一步”。

  7. 测试选择页面,选择所有测试,但排除StorageStorage Spaces Direct

    显示如何选择群集验证测试的屏幕截图。

  8. 选择“下一步”。

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

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

Test-Cluster -Node ("<node1>","<node2>") -Include "Inventory", "Network", "System Configuration"  # Example: ("sqlvm1","sqlvm2")

测试群集故障转移

使用具有群集管理员权限的故障转移群集管理器在所有群集节点上测试 WSFC 核心资源移动,以便在SQL Server FCI 安装之前验证故障转移就绪情况;对于单子网和多子网部署,测试过程完全相同。

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

屏幕截图中显示了如何通过将核心资源移到其他节点来测试群集故障转移。

创建 SQL Server FCI

使用具有本地管理员权限和SQL Server安装权限的域帐户,在所有群集节点上安装 SQL Server FCI;安装在单子网(为负载均衡器提供一个 IP)和多子网(为每个 VM 子网提供辅助 IP)环境之间有所不同。

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

在 SQL FCI 中创建第一个节点

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

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

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

  3. 如果操作系统的版本是 Windows Server 2019,并且 Windows 群集是使用默认的 distributed network name (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 安装完成后,可以删除包含临时 Client Access Point 的角色。
  4. 找到安装媒体。 如果虚拟机使用其中一个Azure Marketplace映像,则媒体位于 C:\SQLServer_<version number>_Full

  5. 选择“设置”。

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

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

  8. “群集网络配置 ”页上,根据部署环境提供 FCI 网络名称 IP 地址:

    环境 要提供的 IP 在哪里进行配置
    单个子网 FCI 网络名称 IP 地址(示例: 10.0.0.10 Azure Load Balancer
    多子网 first SQL Server VM 子网中的辅助 IP 地址(例如:10.0.1.10 FCI 网络名称 IP 地址

    第一个 VM 子网中的辅助 IP 地址的屏幕截图。

  9. Database Engine Configuration 中,数据目录需要位于高级文件共享上。 输入高级文件共享的完整路径,格式如下: \\storageaccountname.file.core.chinacloudapi.cn\filesharename\foldername 系统将显示一条警告,提示你已将文件服务器指定为数据目录。 预计会出现此警告。 确保当您通过Bastion访问 VM 并保存高级文件共享时,所用的用户帐户与 SQL Server 服务使用的帐户相同,以避免可能的故障。

    屏幕截图显示如何将文件共享用作 SQL 数据目录。

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

将其他节点添加到 SQL FCI

若要将其他节点添加到 SQL Server FCI,请执行以下步骤:

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

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

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

  4. 对于多子网方案,在 Cluster 网络配置中,在之前指定为 FCI 网络名称 IP 地址第二台 SQL Server VM 的子网中输入辅助 IP 地址

    截图显示在第二个 SQL Server 虚拟机子网中输入辅助 IP 地址。

    Cluster Network ConfigurationNext0> 后,SQL Server安装程序会显示一个对话框,指示SQL Server安装程序检测到了示例映像中的多个子网。 请选择“是”以确认。

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

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

  6. 在要添加到 SQL Server FCI 的任何其他节点上重复这些步骤。

注意

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

向 SQL IaaS 代理扩展注册

使用具有 Contributor 权限的 Azure 帐户,使用 SQL IaaS 代理扩展(仅限 FCI 的基本注册模式)注册每个SQL Server FCI 节点;对于单个子网和多子网部署,注册过程完全相同。

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

注意

目前,通过 SQL IaaS 代理扩展注册的 Azure 虚拟机上的 SQL Server 故障转移群集实例,仅支持通过基本注册提供的有限数量的功能。

使用 PowerShell 注册SQL Server VM(-LicenseType 可以是 PAYGAHUB):

# Get the existing compute VM
$vm = Get-AzVM -Name <vm_name> -ResourceGroupName <resource_group_name>  # Example: -Name "sqlvm1" -ResourceGroupName "sql-fci-rg"

# Register SQL VM with SQL IaaS Agent extension
New-AzSqlVM -Name $vm.Name -ResourceGroupName $vm.ResourceGroupName -Location $vm.Location `
   -LicenseType <license_type>

通过运行以下命令来验证注册:

Get-AzSqlVM -ResourceGroupName <resource_group_name> -Name <vm_name>  # Example: -ResourceGroupName "sql-fci-rg" -Name "sqlvm1"

预期输出显示注册的 SQL VM 资源包括 ProvisioningState: SucceededSqlManagementType: LightWeight.

配置连接

使用分布式网络名称(DNN)或虚拟网络名称(VNN)以及 Azure 负载均衡器配置到 FCI 的客户端连接路由;此步骤仅适用于单子网部署(多子网部署使用直接路由并跳过此步骤)。

如果在多个子网中部署了SQL Server VM,请跳过此步骤。 如果将SQL Server VM 部署到单个子网,则需要配置其他组件以将流量路由到 FCI。 可以通过 Azure 负载均衡器配置 VNN,或者为 FCI 配置 DNN。 比较两者之间的差异,然后为 FCI 部署 DNNVNN 和 Azure Load Balancer

限制

  • 使用高级文件共享的故障转移群集不支持 FILESTREAM。 若要使用 filestream,请改用 Storage Spaces DirectAzure 共享磁盘部署群集。
  • 由于稀疏文件的限制,Azure Files目前不支持数据库快照。
  • 由于不支持数据库快照,用户数据库的 CHECKDB 会回退到 CHECKDB WITH TABLOCK。 TABLOCK 会限制所执行的检查 – DBCC CHECKCATALOG 不会在数据库上运行,Service Broker 数据也不会被验证。
  • 不支持在 master 数据库和 msdb 数据库上进行 DBCC CHECKDB。
  • 使用内存中 OLTP 功能的数据库在使用高级文件共享部署的 FCI 上不受支持。 如果您的企业需要内存中 OLTP,请考虑将 FCI 部署在 Azure 共享磁盘Storage Spaces Direct 上。
  • Microsoft 分布式事务协调器(MSDTC)不支持在部署到高级文件共享的 Azure VM FCI 上运行的 SQL Server,除非使用专用群集共享卷(CSV)和 标准负载均衡器 并运行 Windows Server 2019 或更高版本。 Windows Server 2016及更早版本不支持 MSDTC。 有关更多信息,请查看 FCI 限制

有限的扩展支持

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

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