使用 Azure 门户为 Azure VM 上的 SQL Server 配置多子网可用性组

适用于:Azure 上的 SQL Server

提示

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

本文介绍如何通过创建以下项使用 Azure 门户为多个子网中 Azure VM 上的 SQL Server 配置可用性组:

  • 采用 SQL Server 的新虚拟机。
  • Windows 故障转移群集。
  • 可用性组。
  • 侦听器。

注意

此部署方法在 Windows Server 2016 及更高版本上支持 SQL Server 2016 及更高版本。

通过门户部署多子网可用性组为用户提供了轻松的端到端体验。 它通过遵循高可用性和灾难恢复 (HADR) 最佳做法来配置虚拟机。

虽然本文使用 Azure 门户配置可用性组环境,但也可以手动进行配置。

先决条件

若要使用 Azure 门户配置 Always On 可用性组,必须满足以下先决条件:

注意

本教程假定 DNS 服务器和域控制器都位于同一虚拟机上。 如果在与域控制器所在虚拟机不同的虚拟机上配置 DNS 服务器,则同步对象时出现的延迟可能会导致自动部署问题。

选择 Azure 市场映像

使用 Azure 市场从虚拟机库中选择一个预配置的映像:

  1. 在 Azure 门户的左侧菜单上,选择“Azure SQL”。 如果 Azure SQL 不在列表中,请选择“所有服务”,在搜索框中键入“Azure SQL”,并选择结果。

  2. 选择“+ 创建”以打开“选择 SQL 部署选项”窗格。

  3. 在“SQL 虚拟机”下,选中“高可用性”复选框。 在“映像”框中,键入感兴趣的 SQL Server 版本(如 2019),然后选择 SQL Server 映像(例如“免费 SQL Server 许可证:Windows Server 2019 上的 SQL 2019 Developer”)。

    选中“高可用性”复选框后,门户会显示支持的 SQL Server 版本(从 SQL Server 2016 开始)。

    Azure 门户的屏幕截图,其中显示了用于选择 SQL Server 部署选项的页面,并且已选中“高可用性”。

  4. 选择“创建”。

选择基本设置

在“基本信息”选项卡上,选择订阅和资源组。 此外,提供为可用性组创建的 SQL Server 实例的详细信息。

  1. 从下拉列表中,选择包含域控制器以及要在其中部署可用性组的订阅和资源组。

    Azure 门户的屏幕截图,其中显示了用于指定订阅和资源组的框。

  2. 使用滑块选择要为可用性组创建的虚拟机数。 最小值为 2,最大值为 9。 虚拟机名称已预先填充,但可以通过选择“编辑名称”进行编辑。

    Azure 门户的屏幕截图,其中显示了用于选择虚拟机数的滑块,以及用于编辑名称的选项。

  3. 对于“区域”,选择一个区域。 所有 VM 将部署到同一区域。

  4. 对于“可用性选项”,选择“可用性区域”或“可用性集”。 有关可用性选项的详细信息,请参阅可用性。 选择“可用性区域”时,每个 VM 将分配到区域中的某个区域,但稍后可以在“网络”选项下自定义此设置。

  5. 在“映像”列表中,选择包含 SQL Server 版本和所需操作系统的映像。 使用下拉列表更改要部署的映像。 选择“配置 VM 生成”以选择 VM 生成。

  6. 对于虚拟机大小,请选择“查看所有大小”。 创建的所有 VM 的大小相同。 对于生产工作负载,请参阅 Azure VM 中 SQL Server 的性能最佳做法中建议的计算机大小和配置。

  7. 在“虚拟机管理员帐户”下,提供用户名和密码。 密码必须至少为 12 个字符,且符合定义的复杂性要求。 此帐户将是 VM 的管理员。

  8. 在“许可”下,可以选择启用“Azure 混合权益”将现有 Windows Server 许可证引入 Azure。 仅当你是软件保障客户时,此选项才可用。

    如果要启用 Azure 混合权益,请选择“是”,然后通过选中复选框确认你拥有软件保障。 如果选择了免费的 SQL Server 映像(如开发人员版),则此选项不可用。

  9. 在“SQL Server 许可证”下,可以选择启用 Azure 混合权益,以使用自己的 SQL Server 许可证并节省许可成本。 仅当你是软件保障客户时,此选项才可用。

    如果要启用 Azure 混合权益,请选择“是”,然后通过选中复选框确认你拥有软件保障。 如果选择了其中一个免费 SQL Server 映像(例如开发人员版本),此选项将不可用。

    Azure 门户的屏幕截图,其中显示了有关 SQL Server 许可证和 Azure 混合权益的信息。

  10. 选择“下一页:网络”。

选择网络设置

在“网络”选项卡上配置网络选项:

  1. 从下拉列表中选择虚拟网络。 该列表根据之前在“基本信息”选项卡上选择的区域和资源组预先填充。所选虚拟网络应包含域控制器 VM。

    注意

    如果所选虚拟网络中不存在域控制器,部署将失败。

  2. 在“NIC 网络安全组”下选择基本安全组或高级安全组。 通过选择“基本”选项可为 SQL Server VM 选择入站端口。 通过选择“高级”选项卡可选择现有网络安全组或创建新的安全组。

  3. 根据需要,通过选择“允许选定的端口”来配置“公共入站端口”。 然后使用下拉列表选择允许的公共端口。

  4. 选择“公共 IP SKU”类型。 所有计算机都将使用此公共 IP 类型。

  5. 创建的每个虚拟机都必须位于其自己的子网中。

    在“创建子网”下,选择“管理子网配置”,以打开虚拟网络的“子网”窗格。 然后,为每个虚拟机创建一个子网(“+子网”),或验证要为可用性组创建的每个虚拟机都有可用子网。

    完成后,使用“X”关闭子网管理窗格,并返回到可用性组部署页面。

    Azure 门户的屏幕截图,其中显示了虚拟网络的子网管理窗格。

  6. 使用下拉列表将子网、公共 IP 地址和侦听器 IP 地址分配给要创建的每个 VM。 如果使用的是 Windows Server 2016 映像,则还需要分配群集 IP 地址。 如果选择了“基本”选项卡下的“可用性区域”作为可用性选项,则每个虚拟机都会分配到不同的区域。 如果需要,请将每个虚拟机重新分配到一个区域,但请注意,虚拟机不能放置在同一可用区域中。

    在将子网分配给虚拟机时,侦听器和群集框中会预先填充可用 IP 地址。 如果要编辑 IP 地址,请将光标置于框中。 如果需要创建新的 IP 地址,请选择“新建”。

    Azure 门户的屏幕截图,其中显示了用于配置子网和 IP 地址的页面。

  7. 如果要在删除 VM 时删除新创建的公共 IP 地址和 NIC,请选中此复选框。

  8. 选择“下一步: WSFC 和凭据”。

选择故障转移群集设置

在“WSFC 和凭据”选项卡上,提供帐户信息来配置和管理 Windows Server 故障转移群集和 SQL Server。

注意

要使部署正常工作,所有帐户都需要已在域控制器 VM 的 Active Directory 中存在。 此部署过程不会创建任何帐户,如果提供的帐户无效,此部署过程便会失败。 有关所需权限的详细信息,请查看在 Active Directory 中配置群集帐户

  1. 在“Windows Server 故障转移群集详细信息”下,提供要用于故障转移群集的名称。

  2. 从下拉列表中,选择要用于云见证的存储帐户。 如果不存在,请选择“创建新的存储帐户”。

  3. 在“Windows Active Directory 域详细信息”下:

    • 对于“域加入用户名”和“域加入密码”,请输入在 Active Directory 中创建 Windows Server 故障转移群集名称并将 VM 加入域的帐户的凭据。 此帐户必须具有“创建计算机对象”权限。

    • 对于“域 FQDN”,请输入一个完全限定的域名,例如 contoso.com。

    显示 Windows Active Directory 域详细信息的 Azure 门户的屏幕截图。

  4. 在“SQL Server 详细信息”下,提供 SQL Server 服务帐户的详细信息。 有多种选项可供选择:

    a. 选择“与域加入帐户相同”,使用创建群集并将 VM 加入域的域加入帐户。 这与上述帐户相同。

    b. 通过选择组托管服务帐户 (GMSA),我们将在正在创建的 VM 上安装所有必需的工具和服务,包括安装 ADDS 工具、将 VM 加入 GMSA 安全组以及安装 GMSA 服务。 为了使 GMSA 部署成功,加入域的用户必须至少拥有 GMSA AD 组的写入权限。

    c. 或者,可以选择“自定义”并提供要用于 SQL Server 服务帐户的不同帐户详细信息。

    Azure 门户的屏幕截图,其中显示了有关 SQL Server 服务帐户的信息。

  5. 在完成时选择“下一步:磁盘”

选择磁盘设置

在“磁盘”选项卡上,为虚拟机和 SQL Server 存储配置都配置磁盘选项:

  1. 在“OS 磁盘类型”下,选择要用于操作系统的磁盘类型。 建议为生产系统使用高级版,但高级版不适合用于基本 VM。 若要使用高级 SSD,请更改虚拟机大小。

  2. 为磁盘选择加密类型值。

  3. 在“存储配置”下,选择“更改配置”以打开“配置存储”窗格并指定存储要求。 可以选择保留默认值,也可以手动更改存储拓扑,以满足每秒输入/输出操作 (IOPS) 需求。 有关详细信息,请参阅为 SQL Server VM 配置存储

    Azure 门户的屏幕截图,其中显示了当前存储配置和用于更改配置的按钮。

  4. 在“数据存储”下,选择数据驱动器的位置、磁盘类型和磁盘数量。 也可以选中该复选框以将系统数据库存储在数据驱动器上,而不是本地 C 驱动器上。

    Azure 门户的屏幕截图,其中显示了数据存储的配置设置。

  5. 在“日志存储”下,可以选择使用与事务日志文件的数据驱动器相同的驱动器,也可以从下拉列表中选择单独的驱动器。 也可选择驱动器的名称、磁盘类型和磁盘数量。

    Azure 门户的屏幕截图,其中显示了日志存储的配置设置。

  6. 在“TempDb 存储”下,配置 tempdb 数据库设置。 选项包括数据库文件的位置、文件数、初始大小和自动增长大小(以 MB 为单位)。

    目前,在部署期间,tempdb 文件的最大数目为 8。 但你可以在部署 SQL Server VM 后添加更多文件。

    Azure 门户的屏幕截图,其中显示了 tempdb 存储的配置设置。

  7. 选择“确定”,保存存储配置设置。

  8. 选择“下一步: SQL Server 设置”。

选择 SQL Server 设置

在“SQL Server 设置”选项卡上,配置 SQL Server 和可用性组的特定设置和优化:

  1. 在“可用性组详细信息”下:

    1. 提供可用性组和侦听器的名称。

    2. 为要创建的每个虚拟机选择角色(“主要”或“辅助”)。

    3. 选择最适合业务需求的可用性组设置。

    显示可用性组详细信息的 Azure 门户的屏幕截图。

  2. 在“安全性与网络”下,选择“SQL 连接”以访问 VM 上的 SQL Server 实例。 有关连接选项的详细信息,请参阅连接

  3. 如果需要 SQL Server 身份验证,请选择“SQL Server 身份验证”下的“启用”,并提供登录名和密码。 这些凭据将用于要部署的所有 VM。 有关身份验证选项的详细信息,请参阅身份验证

  4. 对于“Azure Key Vault 集成”,如果要使用 Azure Key Vault 来存储用于加密的安全机密,请选择“启用”。 然后,填写所需信息。 有关详细信息,请参阅 Azure Key Vault 集成

  5. 选择“更改 SQL 实例设置”以修改 SQL Server 配置选项。 这些选项包括服务器排序规则、最大并行度 (MAXDOP)、最小和最大内存,以及是否要针对临时工作负载进行优化。

    Azure 门户的屏幕截图,其中显示了 SQL Server 实例设置和用于更改这些设置的按钮。

选择“先决条件验证”

若要成功部署,需要满足几个先决条件。 若要更轻松地验证所有权限和要求是否正确,请使用此选项卡上可供下载的 PowerShell 先决条件脚本。

该脚本中将会预填充前面步骤中提供的值。 在域控制器虚拟机或已加入域的 Windows Server VM 上以域用户身份运行 PowerShell 脚本。

执行脚本并验证先决条件后,选中“确认”复选框。

显示“先决条件验证”选项卡的 Azure 门户的屏幕截图。

  1. 选择“查看 + 创建” 。

  2. 在“查看 + 创建”选项卡上,查看摘要。 然后选择“创建”,创建 SQL Server、故障转移群集、可用性组和侦听器。

    如果需要,可以选择“下载自动化模板”。

可以从 Azure 门户监视部署情况。 屏幕顶部的“通知”按钮会显示部署的基本状态。

部署完成后,可以浏览到门户中的 SQL 虚拟机资源。 在“设置”下,选择“高可用性”以监视可用性组的运行状况。 选择可用性组名称旁边的箭头,查看所有副本的列表。

Azure 门户的屏幕截图,其中显示了可用性组的运行状况,为当前运行不正常。

注意

在将数据库添加到可用性组之前,Azure 门户的“高可用性”页面上的“同步运行状况”将显示“不正常”。

将数据库添加到可用性组

部署完成后,将数据库添加到可用性组。 以下步骤将使用 SQL Server Management Studio,但也可以使用 Transact-SQL 或 PowerShell

  1. 使用远程桌面连接 (RDP) 等首选方法连接到其中一个 SQL Server VM。 在所有 SQL Server 实例上使用作为 sysadmin 固定服务器角色成员的域帐户。

  2. 打开 SQL Server Management Studio。

  3. 连接到 SQL Server 实例。

  4. 在“对象资源管理器”中展开“Always On 高可用性”。

  5. 展开“可用性组”,右键单击可用性组,然后选择“添加数据库”。

    SQL Server Management Studio 的屏幕截图,其中显示了用于将数据库添加到可用性组的选项。

  6. 按照提示选择要添加到可用性组的数据库。

  7. 选择“确定”以保存设置并添加数据库。

  8. 刷新“对象资源管理器”确认数据库的状态为 synchronized

添加数据库后,可以在 Azure 门户中检查可用性组,并确认状态为“正常”。

Azure 门户的屏幕截图,其中显示了可用性组的运行状况,为当前运行正常。

修改可用性组

通过门户部署可用性组后,对可用性组的所有更改都需要手动完成。 如果要移除副本,可以通过 SQL Server Management Studio 或 Transact-SQL 执行此操作,然后通过 Azure 门户删除 VM。 如果要添加副本,则必须手动将虚拟机部署到资源组,将其加入域,并像通常会在传统的本地环境中那样添加副本

删除群集

可以使用最新版本的 Azure CLI 或 PowerShell 删除群集。

首先,从群集中删除所有 SQL Server VM:

# Remove the VM from the cluster metadata
# example: az sql vm remove-from-group --name SQLVM2 --resource-group SQLVM-RG

az sql vm remove-from-group --name <VM1 name>  --resource-group <resource group name>
az sql vm remove-from-group --name <VM2 name>  --resource-group <resource group name>

如果删除的 SQL Server VM 是群集中仅有的 VM,则该群集将被销毁。 如果群集中还有任何其他 VM,则不会删除这些 VM,也不会销毁群集。

接下来,从 SQL IaaS 代理扩展中删除群集元数据:

# Remove the cluster from the SQL VM RP metadata
# example: az sql vm group delete --name Cluster --resource-group SQLVM-RG

az sql vm group delete --name <cluster name> --resource-group <resource group name>

疑难解答

如果遇到问题,可以检查部署历史记录,并查看常见错误及其解决方法。

通过门户对群集和可用性组进行的更改是通过部署来完成的。 如果在创建或加入群集、或创建可用性组时出现问题,部署历史记录可以提供详细信息进行参考。

如要查看部署的日志,并检查部署历史记录,请执行以下步骤:

  1. 登录 Azure 门户

  2. 转到你的资源组。

  3. 选择“设置”下面的“部署”。

  4. 选择所需的部署,了解有关该部署的详细信息。

    Azure 门户的屏幕截图,其中在部署列表中显示了失败的可用性组部署。

如果部署失败,并且你想要使用门户重新部署,则需要手动清理资源,因为通过门户进行的部署不是幂等的(不可重复)。 这些清理任务包括删除 VM 以及删除 Active Directory 和/或 DNS 中的条目。 但是,如果使用 Azure 门户创建模板来部署可用性组,然后使用该模板进行自动化,则不需要清理资源,因为模板是幂等的。

后续步骤

部署可用性组后,请考虑优化 Azure VM 上的 SQL Server 的 HADR 设置

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