使用高级文件共享创建 FCI(Azure VM 上的 SQL Server)
本文介绍了如何使用高级文件共享为 Azure 虚拟机 (VM) 上的 SQL Server 创建故障转移群集实例 (FCI)。
高级文件共享由 SSD 支持,它提供持续低延迟文件共享,在 Windows Server 2012 或更高版本上完全支持将它们用于 SQL Server 2012 或以上版本的故障转移群集实例。 高级文件共享提供更高的灵活性,使你能在不停机的情况下对文件共享进行大小调整和缩放。
若要了解详细信息,请参阅 Azure VM 上的 SQL Server 的 FCI 和群集最佳做法。
先决条件
在按本文中的说明操作之前,你应已具备以下条件:
- Azure 订阅。
- 有权限在 Azure 虚拟机和 Active Directory 中创建对象的帐户。
- 一个可用性集中的或不同的可用性区域中的两个或更多个已准备好的 Azure Windows 虚拟机。
- 要基于数据库中数据文件的存储配额,用作群集驱动器的高级文件共享。
- 最新版本的 PowerShell。
提示
通过在同一 Azure 虚拟网络中的多个子网中创建 SQL Server 虚拟机 (VM),可以简化部署,使故障转移群集实例不再需要 Azure 负载均衡器或分布式网络名称 (DNN)。
装载高级文件共享
若要装载高级文件共享,请执行以下步骤:
登录到 Azure 门户,转到你的存储帐户。
转到“数据存储”下的“文件共享”,然后选择要用于 SQL 存储的高级文件共享 。
选择“连接”使系统显示文件共享的连接字符串。
在下拉列表中,选择要使用的驱动器号,选择“存储帐户密钥”作为身份验证方法,然后将代码块复制到文本编辑器(如记事本)。
使用远程桌面协议 (RDP),通过 SQL Server FCI 将用作服务帐户的帐户连接到 SQL Server VM。
打开 PowerShell 命令管理控制台。
运行之前从文件共享门户复制到文本编辑器的命令。
使用文件资源管理器或“运行”对话框(键盘上的 Windows + R)转到共享。 使用网络路径
\\storageaccountname.file.core.chinacloudapi.cn\filesharename
。 例如:\\sqlvmstorageaccount.file.core.chinacloudapi.cn\sqlpremiumfileshare
在新连接的文件共享上创建至少一个文件夹以将 SQL 数据文件放入其中。
在将加入群集的每个 SQL Server VM 上重复这些步骤。
重要
考虑对备份文件使用单独的文件共享,以便节省此共享中数据和日志文件占用的每秒输入/输出操作数 (IOPS) 和空间容量。 可将高级或标准文件共享用于备份文件。
创建 Windows 故障转移群集
创建 Windows Server 故障转移群集的步骤在单个子网和多子网环境之间有所不同。 若要创建群集,请按照多子网方案或单子网方案教程中的步骤执行操作。 尽管这些教程可创建可用性组,但创建群集的步骤对于故障转移群集实例是相同的。
配置仲裁
对于 Azure VM 上的 SQL Server 的此类群集配置,云见证是建议的仲裁解决方案。
如果群集中的投票数为偶数,请配置最适合你的业务需求的仲裁解决方案。 有关详细信息,请参阅 SQL Server VM 上的仲裁。
验证群集
使用故障转移群集管理器 UI 或 PowerShell 在其中一个虚拟机上验证群集。
若要使用 UI 来验证群集,请在某个虚拟机中执行以下步骤:
在“服务器管理器”中,依次选择“工具”、“故障转移群集管理器”。
右键单击“故障转移群集管理器”中的群集,选择“验证群集”以打开“验证配置向导”。
在“验证配置向导”中,选择“下一步”。
在“选择服务器或群集”页面中,输入两个虚拟机的名称。
在“测试选项”页面中,选择“仅运行选择的测试”。
选择下一步。
在“测试选择”页面中,选择除“存储”和“存储空间直通”以外的所有测试:
选择下一步。
在“确认”页面上,选择“下一步”。 “验证配置”向导会运行验证测试。
若要使用 PowerShell 验证群集,请在某个虚拟机上通过管理员 PowerShell 会话运行以下脚本:
Test-Cluster -Node ("<node1>","<node2>") -Include "Inventory", "Network", "System Configuration"
测试群集故障转移
测试你的群集的故障转移。 在“故障转移群集管理器”中,右键单击你的群集并选择“更多操作”>“移动核心群集资源”>“选择节点”,然后选择群集的其他节点。 将核心群集资源移到群集的每个节点,再将它移回主节点。 如果可以成功将群集移到每个节点,则表示你已为安装 SQL Server 做好了准备。
创建 SQL Server FCI
配置故障转移群集和所有群集组件(包括存储)后,可以创建 SQL Server FCI。
在 SQL FCI 中创建第一个节点
若要在 SQL Server FCI 中创建第一个节点,请执行以下步骤:
使用 RDP 或 Bastion 连接到第一个虚拟机。
在“故障转移群集管理器”中,确保所有核心群集资源位于第一个虚拟机上。 如有必要,请将所有资源移到此虚拟机。
如果操作系统的版本是 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 安装完成后,可以删除包含临时客户端访问点的角色。
找到安装媒体。 如果虚拟机使用某个 Azure 市场映像,该媒体将位于
C:\SQLServer_<version number>_Full
。选择“设置”。
在“SQL Server 安装中心”中选择“安装” 。
选择“新的 SQL Server 故障转移群集安装”,然后按照向导中的说明安装 SQL Server FCI。
在“群集网络配置”页上,你提供的 IP 会有所不同,具体取决于你的 SQL Server VM 是部署到单个子网还是多个子网。
- 对于单子网环境,请提供计划添加到 Azure 负载均衡器的 IP 地址。
- 对于多子网环境,请提供第二个 IP 地址,它应该位于之前指定为故障转移群集实例网络名称的 IP 地址的第一个 SQL Server VM 的子网中:
在数据库引擎配置中,数据目录需位于高级文件共享中。 输入共享的完整路径,格式为:
\\storageaccountname.file.core.chinacloudapi.cn\filesharename\foldername
。 系统将显示一条警告,提示你已将文件服务器指定为数据目录。 预计会出现此警告。 请确保在保存文件共享时通过 RDP 访问 VM 时所用的用户帐户,是 SQL Server 服务用来避免可能的故障的同一帐户。完成向导中的步骤后,安装程序会在第一个节点上安装 SQL Server FCI。
将其他节点添加到 SQL FCI
若要将其他节点添加到 SQL Server FCI,请遵循以下步骤:
在第一个节点上成功安装 FCI 后,请使用 RDP 或 Bastion 连接到第二个节点。
打开“SQL Server 安装中心”,然后选择“安装”。
选择“将节点添加到 SQL Server 故障转移群集”。 按照向导中的说明安装 SQL Server 并将此节点添加到 FCI。
对于多子网方案,请在“群集网络配置”中输入供第二个 IP 地址,它应该位于之前指定为故障转移群集实例网络名称的 IP 地址的第二个 SQL Server VM 的子网中。
在“群集网络配置”中选择“下一步”后,安装程序会显示一个对话框,指示 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 (FCI) 故障转移群集实例的 SQL Server VM 可使用有限的功能。
如果 SQL Server VM 已注册到 SQL IaaS 代理扩展,并且已启用任何需要该代理的功能,需要从 SQL Server VM 中删除扩展,然后在安装 FCI 后再次注册。
使用 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。 可为故障转移群集实例配置虚拟网络名称 (VNN) 及 Azure 负载均衡器,或部署分布式网络名称。 查看两者之间的差异;然后,为故障转移群集实例部署分布式网络名称或虚拟网络名称及 Azure 负载均衡器。
限制
- Windows Server 2016 及更低版本不支持 Microsoft 分布式事务处理协调器 (MSDTC)。
- 使用高级文件共享的故障转移群集不支持文件流。 若要使用文件流,请改用存储空间直通或 Azure 共享磁盘部署你的群集。
- 向 SQL IaaS 代理扩展注册的 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 Server VM 中删除该扩展,然后再次将其注册到 SQL IaaS 代理扩展。 使用 Azure 门户删除 SQL 虚拟机资源时,请取消勾选相应虚拟机旁边的复选框,从而避免删除该虚拟机。