跨Azure区域配置可用性组 - Azure VM 上的SQL Server

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

本教程介绍如何在与主副本不同的 Azure 区域中,为 Azure 虚拟机(VM)上的 SQL Server 配置 Always On 可用性组副本。 可以将此配置用于灾难恢复 (DR)。

还可以使用本文中的步骤将现有本地可用性组扩展到Azure。

本教程基于在单一区域的单个子网中手动部署可用性组的教程。 本文中提到的本地区域是指已在首个区域中配置的虚拟机和可用性组。 远程区域是本教程中要添加的新基础结构。

按照本教程中的步骤将副本添加到单个子网,该子网需要使用负载均衡器。 将副本部署到多个子网无需负载均衡器。 若要了解如何将可用性组副本部署到多个子网,请参阅跨Azure区域配置多子网可用性组

概述

下图显示了Azure虚拟机上可用性组的常见部署:

图示显示 Azure 负载均衡器和包含 Windows Server 故障转移群集及 Always On 可用性组的可用性集。

在关系图中显示的部署中,所有虚拟机都位于一个Azure区域中。 在 SQL-1 和 SQL-2 上,可以使用自动故障转移为可用性组副本配置同步提交。 若要生成此体系结构,请参阅 Azure VM 上的 SQL Server 上的 Always On 可用性组

如果Azure区域不可访问,则此体系结构很容易停机。 若要克服此漏洞,请在其他Azure区域中添加副本。 下图显示了新体系结构的外观:

可用性组灾难恢复场景的示意图。

示图显示了名为 SQL-3 的新虚拟机。 SQL-3 位于不同的Azure区域中。 它已添加到 Windows Server 故障转移群集,并可以托管可用性组副本。

SQL-3 的Azure区域具有新的Azure负载均衡器。 在此体系结构中,远程区域中的副本通常配置了异步提交可用性模式和手动故障转移模式。

注意

如果多个虚拟机位于同一区域,则需要Azure可用性集。 如果区域中只有一个虚拟机,则不需要可用性集。

只有在创建时才能将虚拟机放入可用性集。 如果虚拟机已在可用性集中,以后可为附加的副本添加虚拟机。

当可用性组副本位于不同的 Azure 区域中的 Azure 虚拟机上时,可以使用 虚拟网络对等互连站点到站点 VPN 网关连接虚拟网络。

重要

此体系结构对于在不同Azure区域之间复制的数据产生出站流量费用。 请参阅带宽定价

创建网络和子网

在新 区域中创建虚拟网络和子网之前,请确定要用于远程区域的地址空间、子网网络、群集 IP 和可用性组侦听器 IP 地址。

下表列出了本地(当前)区域的详细信息以及新远程区域中设置的值。

类型 本地 远程区域
地址空间 192.168.0.0/16 10.36.0.0/16
子网网络 192.168.15.0/24 10.36.1.0/24
群集 IP 192.168.15.200 10.36.1.200
可用性组侦听程序 IP 192.168.15.201 10.36.1.201

若要在 Azure 门户中的新区域中创建虚拟网络和子网,请执行以下作:

  1. Azure 门户中转到资源组并选择 + 创建

  2. 在 Marketplace 搜索框中搜索“虚拟网络”,然后从 Microsoft 选择“虚拟网络”图块。

  3. 在“创建虚拟网络”页面上,选择“创建”。 然后在“基本信息”选项卡中输入以下信息:

    1. Project 详细信息下,对于 订阅,请选择相应的 Azure 订阅。 对于“资源组”,请选择之前创建的资源组,例如 SQL-HA-RG
    2. 在“实例详细信息”下,提供虚拟网络的名称(例如 remote_HAVNET)。 然后选择新的远程区域。

    Azure 门户的截图,展示了在远程区域创建虚拟网络的选择。

  4. 在“IP 地址”选项卡上,选择“+ 添加子网”旁边的省略号 (...)。 如果需要其他地址范围,请选择“删除地址空间”以移除现有的地址空间。

    Azure门户的屏幕截图,显示了删除虚拟网络中现有地址空间的选项。

  5. 选择“添加 IP 地址空间”,打开窗格以创建所需的地址空间。 本教程使用远程区域的地址空间:10.36.0.0/16。 选择 并添加

    显示添加地址空间选择的 Azure 门户的截图,适用于虚拟网络。

  6. 选择+ 添加子网,然后:

    1. 为“子网名称”提供值,例如“admin”.

    2. 提供虚拟网络地址空间中的唯一子网地址范围。

      例如,如果地址范围为 10.36.0.0/16,请为 admin 子网输入以下值:10.36.1.0 表示起始地址,/24 表示子网大小。

    3. 选择添加来添加您的新子网。

    Azure门户截图,显示了将子网添加到虚拟网络的选项。

连接两个Azure区域中的虚拟网络

创建新的虚拟网络和子网后,即可连接这两个区域,以便它们相互通信。 有两种方法可用于建立此连接:

本教程使用虚拟网络对等互连。 要配置虚拟网络对等互连,请执行以下操作:

  1. 在Azure门户顶部的搜索框中,键入 autoHAVNET,这是本地区域中的虚拟网络。 当“autoHAVNET”出现在搜索结果中时,将其选中。

  2. 在“设置”下选择“对等互连”,然后选择“+ 添加”。

    Azure 门户的屏幕截图,其中显示有关添加虚拟网络对等互连的选项。

  3. 输入或选择以下信息,接受其余设置的默认值,然后选择“添加”。

    设置
    此虚拟网络
    对等互连链接名称 输入 autoHAVNET-remote_HAVNET 作为从 autoHAVNET 到远程虚拟网络的对等连接名称。
    远程虚拟网络
    对等互连链接名称 输入 remote_HAVNET-autoHAVNET 作为从远程虚拟网络到 autoHAVNET 的对等互连名称。
    Subscription 选择要用于远程虚拟网络的订阅。
    虚拟网络 选择“remote_HAVNET”作为远程虚拟网络的名称。 远程虚拟网络可以与“autoHAVNET”位于相同或不同的区域中。

    Azure 门户的截图显示对等设置。

  4. 在“对等连接”页上,“对等连接状态”为“已连接”。

    Azure门户网站的截图,显示虚拟网络对等互连的连接状态。

    如果未看到“已连接”状态,请选择“刷新”按钮。

创建域控制器

如果主站点不可用,则新区域中的域控制器需要提供身份验证。 若要在新区域中创建域控制器,请执行以下操作:

  1. 返回到“SQL-HA-RG”资源组。
  2. 选择+ 新建
  3. 键入 Windows Server 2016 Datacenter,然后选择 Windows Server 2016 Datacenter 结果。
  4. Windows Server 2016 Datacenter 中,验证部署模型是否为 Resource Manager,然后选择 Create

下表显示了这两个计算机的设置:

设置
名称 远程域控制器:ad-remote-dc
VM 磁盘类型 SSD
用户名 DomainAdmin
密码 保护密码
Subscription 订阅
资源组 SQL-HA-RG
位置 你的位置
大小 DS1_V2
存储 使用托管磁盘:是
虚拟网络 remote_HAVNET
子网 admin
公共 IP 地址 与 VM 同名
网络安全组 与 VM 同名
诊断 已启用
诊断存储帐户 自动创建

Azure创建虚拟机。

配置域控制器

执行以下步骤,将 ad-remote-dc 计算机配置为 corp.contoso.com 的域控制器:

设置首选 DNS 服务器地址

更新首选 DNS 服务器时,请使用Azure门户、PowerShell 或Azure CLI。 不要 直接在 VM 中更新 DNS 服务器。

若要使用 Azure 门户设置首选 DNS 服务器地址,请执行以下步骤:

  1. 登录到 Azure 门户

  2. 在门户顶部的搜索框中,输入“网络接口”。 在搜索结果中,选择“网络接口”。

  3. 从列表中选择要查看或更改设置的第二个域控制器的网络接口。

  4. 在“设置”中,选择“DNS 服务器”。

  5. 由于此域控制器与主域控制器不在同一虚拟网络中,因此请选择 “自定义 ”并输入主域控制器的 IP 地址,例如 192.168.15.4。 指定的 DNS 服务器地址仅分配到此网络接口,并会替代该网络接口分配到的虚拟网络的任何 DNS 设置。

  6. 选择“保存”

  7. 返回到Azure门户中的虚拟机并重启 VM。 重启虚拟机后,可以将 VM 加入域。

加入域

接下来,请加入 corp.contoso.com 域。 为此,请执行下列步骤:

  1. 使用 BUILTIN\DomainAdmin 帐户通过 Bastion 远程连接到虚拟机。
  2. 打开 Server Manager,然后选择 Local Server
  3. 选择“WORKGROUP”。
  4. 在“计算机名”部分中,选择“更改”。
  5. 选中“域”复选框并在文本框中键入“corp.contoso.com” 。 选择“确定”
  6. 在“Windows Security弹出对话框中,指定默认域管理员帐户(CORP\DomainAdmin) 的凭据。
  7. 在看到“欢迎使用 corp.contoso.com 域”消息时,选择“确定”。
  8. 选择“关闭”,然后选择弹出对话框中的“立即重启”。

配置域控制器

将服务器加入域后,可以将它配置为第二个域控制器。 为此,请执行下列步骤:

  1. 如果尚未连接,请打开辅助域控制器的 Bastion 会话,然后打开 Server Manager 仪表板(默认情况下可能打开)。

  2. 选择仪表板上的“添加角色和功能”链接。

    服务器管理器的屏幕截图 - 添加角色。

  3. 选择“下一步”,直到到达“服务器角色”部分。

  4. 选择 Active Directory Domain ServicesDNS 服务器角色。 出现提示时,请为这些角色添加任何其他必需的功能。

  5. 安装完功能后,返回到 Server Manager 仪表板。

  6. 选择左侧窗格中的新“AD DS”选项。

  7. 选择黄色警告栏上的“更多”链接。

  8. 在“所有服务器任务详细信息”对话框的“操作”栏中,选择“将此服务器提升为域控制器”。

  9. 在“部署配置”下面,选择“将域控制器添加到现有域”。

  10. 选择 选择

  11. 使用管理员帐户(CORP\DomainAdmin)进行连接。

  12. 在“从林中选择域”中,选择你的域,然后选择“确定”。

  13. 在“域控制器选项”中,使用默认值并设置 DSRM 密码。

    注意

    “DNS 选项”页可能会警告您无法为此 DNS 服务器创建委托。 可以在非生产环境中忽略此警告。

  14. 选择“下一步”,直到出现“先决条件检查”对话框。 然后选择“安装”。

在服务器完成配置更改后,重启服务器。

创建SQL Server VM

域控制器重启后,下一步是在新区域中创建SQL Server虚拟机

在继续操作之前,请考虑以下设计决策:

  • Storage:Azure托管磁盘

    对于虚拟机存储,请使用Azure托管磁盘。 建议为SQL Server虚拟机使用托管磁盘。 托管磁盘在后台处理存储。 此外,当具有托管磁盘的虚拟机位于同一可用性集中时,Azure分发存储资源以提供适当的冗余。

    有关详细信息,请参阅 Azure 托管磁盘介绍。 有关在可用性集内使用托管磁盘的具体信息,请参阅为可用性集中的 VM 使用托管磁盘

  • 网络:生产环境中的专用 IP 地址

    本教程为虚拟机使用公共 IP 地址。 使用公共 IP 地址可以通过 Internet 直接远程连接到虚拟机,从而使配置过程更加轻松。 在生产环境中,建议仅使用专用 IP 地址。 专用 IP 地址可减少SQL Server VM 的漏洞占用。

  • 网络:每个服务器一个 NIC

    每个服务器(群集节点)使用一个网络接口卡 (NIC),并使用一个子网。 Azure网络具有物理冗余,这使得在 Azure VM 来宾群集上不需要添加 NIC 和子网。 群集验证报告会警告你,节点只能在单个网络上访问。 可以忽略在Azure虚拟机客户机故障转移群集上的此警告。

创建和配置SQL Server VM

若要创建SQL Server VM,请返回到 SQL-HA-RG 资源组,然后选择 Add。 搜索相应的图库项目,选择虚拟机,然后选择从图库中。 若要创建 VM,请使用下表中的信息:

页面 设置
选择相应的图库项目 SQL Server 2016 SP1 Enterprise on Windows Server 2016
虚拟机配置:基本信息 sqlserver-2

用户名 = DomainAdmin

密码 = 安全密码

订阅 = 自己的订阅

资源组 = SQL-HA-RG

位置 = 你的远程区域
虚拟机配置:大小 大小 = DS2_V2 (2 个 vCPU,7 GB)

大小必须支持 SSD 存储(高级磁盘支持)。
虚拟机配置:设置 存储:使用托管磁盘

虚拟网络 = remote_HAVNET

“子网”“admin (10.36.1.0/24)” =

公共 IP 地址 = 自动生成

网络安全组 =

监视诊断 = 已启用

诊断存储帐户 = 使用自动生成的存储帐户
虚拟机配置SQL Server设置 SQL 连接性 = 专用(在虚拟网络内)

端口 = 1433

SQL 身份验证 = 已禁用

存储配置 = 通用

自动修补 = 星期日 2:00

自动备份 = 已禁用

Azure Key Vault 集成 = 禁用

注意

此表中建议的计算机大小用于测试Azure虚拟机中的可用性组。 要在生产工作负荷中获得最佳性能,请参阅 清单:Azure VM 上 SQL Server 的最佳实践中关于 SQL Server 机器大小和配置的建议

完全预配 VM 后,需将其加入到 corp.contoso.com 域中,并向这些计算机授予 CORP\Install 管理权限。

将服务器联接到域

若要将 VM 加入 corp.contoso.com,请对 SQL Server VM 使用以下步骤:

  1. 使用 BUILTIN\DomainAdmin 帐户通过 Bastion 远程连接到虚拟机。
  2. Server Manager 中,选择 Local Server
  3. 选择“工作组”链接。
  4. 在“计算机名”部分中,选择“更改”。
  5. 选中“域名”复选框,然后在文本框中输入“corp.contoso.com”。 然后选择“ 确定”。
  6. 在“Windows Security弹出对话框中,指定默认域管理员帐户(CORP\DomainAdmin) 的凭据。
  7. 在看到“欢迎使用 corp.contoso.com 域”消息时,选择“确定”。
  8. 选择“关闭”,然后选择弹出对话框中的“立即重启”。

添加帐户

下一个任务是将安装帐户添加为SQL Server VM 上的管理员,然后向该帐户和SQL Server中的本地帐户授予权限。 然后,可以更新SQL Server服务帐户。

添加 CORP\Install 用户作为每个群集 VM 上的管理员

SQL Server虚拟机作为域成员重启后,将 CORP\Install 添加为本地管理员组的成员:

  1. 等待 VM 重启,然后从主域控制器打开Remote Desktop协议(RDP)连接。 使用 CORP\DomainAdmin 帐户登录到 sqlserver-2。

    提示

    在前面的步骤中,您使用的是 BUILTIN 管理员帐户。 服务器已位于域中,请确保使用域管理员帐户进行登录。 在 RDP 会话中,指定\用户名

  2. Server Manager 中,选择 Tools,然后选择 Computer Management

  3. 在“计算机管理”窗口中,展开“本地用户和组”,然后选择“组”选项。

  4. 双击“管理员”组。

  5. 在“管理员属性”对话框中,选择“添加”按钮。

  6. 将用户输入为CORP\Install,然后选择确定

  7. 选择“确定”以关闭“管理员属性”对话框。

在每个SQL Server虚拟机上为安装帐户创建一个登录名

使用安装帐户 (CORP\install) 配置可用性组。 此帐户必须是每个 SQL Server VM 上sysadmin固定服务器角色的成员。 以下步骤将创建安装帐户的登录名。 在两SQL Server VM 上完成它们。

  1. 使用 帐户通过 < 连接到服务器。

  2. 打开SQL Server Management Studio并连接到SQL Server的本地实例。

  3. Object Explorer 中,选择 Security

  4. 右键单击登录。 选择“新建登录名”。

  5. 在《Login - New》中,选择《Search》。

  6. 选择位置

  7. 输入域管理员的网络凭据。 使用安装帐户 (CORP\Install)。

  8. 将该登录名设置为 sysadmin 固定服务器角色的成员。

  9. 选择“确定”

配置系统帐户权限

若要创建系统帐户并授予适当的权限,请在每个SQL Server实例上完成以下步骤:

  1. 使用以下脚本为 [NT AUTHORITY\SYSTEM] 创建帐户:

    USE [master]
    GO
    CREATE LOGIN [NT AUTHORITY\SYSTEM] FROM WINDOWS WITH DEFAULT_DATABASE=[master]
    GO
    
  2. [NT AUTHORITY\SYSTEM] 授予以下权限:

    • ALTER ANY AVAILABILITY GROUP
    • CONNECT SQL
    • VIEW SERVER STATE

    以下脚本将授予这些权限:

    GRANT ALTER ANY AVAILABILITY GROUP TO [NT AUTHORITY\SYSTEM]
    GO
    GRANT CONNECT SQL TO [NT AUTHORITY\SYSTEM]
    GO
    GRANT VIEW SERVER STATE TO [NT AUTHORITY\SYSTEM]
    GO
    

设置SQL Server服务帐户

在每个SQL Server VM 上,完成以下步骤来设置SQL Server服务帐户。 使用配置域帐户时创建的帐户。

  1. 打开SQL Server Configuration Manager。
  2. 右键单击SQL Server服务,然后选择 Properties
  3. 设置帐户和密码。

对于SQL Server可用性组,每个SQL Server VM 都需要作为域帐户运行。

创建Azure负载均衡器

远程区域中需要负载均衡器才能支持SQL Server可用性组。 负载均衡器保存可用性组侦听器和Windows Server故障转移群集的 IP 地址。 本部分总结了如何在 Azure 门户中创建负载均衡器。

此负载均衡器必须满足以下条件:

  • 与新虚拟机位于同一网络和子网中。
  • 可用性组侦听程序具有静态 IP 地址。
  • 包括一个后端池作为负载均衡器,且该后端池只由位于同一区域中的虚拟机组成。
  • 使用特定于 IP 地址的 TCP 端口探测。
  • 具有特定于同一区域中SQL Server实例的负载均衡规则。
  • 如果后端池中的虚拟机不是单个可用性集或虚拟机规模集的一部分,则为标准负载均衡器。 有关详细信息,请查看 什么是 Azure Load Balancer?
  • 如果两个不同区域的两个虚拟网络通过全局虚拟网络对等互连进行对等互连,则为标准负载均衡器。 有关详细信息,请参阅 Azure Virtual Network常见问题解答 (FAQ)

创建负载均衡器的步骤如下:

  1. 在Azure门户中,转到SQL Server实例所在的资源组,然后选择+ 添加

  2. 搜索 负载均衡器。 选择 Microsoft 发布的负载均衡器。

  3. 选择 创建

  4. 配置负载均衡器的以下参数:

    设置
    Subscription 使用虚拟机所在的同一个订阅。
    资源组 使用虚拟机所在的同一资源组。
    名称 为负载均衡器使用文本名称(例如“remoteLB”)。
    Region 使用与虚拟机相同的区域。
    SKU 选择“标准” 。
    类型 选择“内部”。

    Azure门户窗格应如下所示:

    Azure 门户的 截图,显示了用于创建负载均衡器的基本信息。

  5. 选择“下一步: 前端 IP 配置”。

  6. 选择“添加前端 IP 配置”。

    Azure 门户的截图,显示用于添加前端 IP 配置的按钮。

  7. 使用以下值设置前端 IP 地址:

    • 名称:使用标识前端 IP 配置的名称。
    • 虚拟网络:使用与虚拟机相同的网络。
    • 子网:使用与虚拟机相同的子网。
    • 分配:选择“静态”。
    • IP 地址:使用子网中的可用地址。 将该地址用于可用性组侦听程序。 此地址不同于群集 IP 地址。
    • 可用性区域:(可选)选择一个可用性区域来作为部署 IP 地址的目标位置。

    Azure 门户的截图,显示添加前端 IP 配置的对话框。

  8. 选择 并添加

  9. 选择“查看 + 创建”以验证配置,然后选择“创建”以创建负载均衡器和前端 IP 地址。

若要配置负载均衡器,需要创建一个后端池、一个探测,并设置负载均衡规则。

为可用性组侦听程序添加后端池

  1. 在 Azure 门户中,前往您的可用性组。 可能需要刷新视图才能看到新建的负载均衡器。

  2. 选择负载均衡器,选择“后端池”,然后选择“+ 添加”。

  3. 在“名称”处,为后端池提供一个名称。

  4. 在“后端池配置”处,选择“NIC”。

  5. 选择 Add 将后端池与新创建的SQL Server VM 相关联。

  6. 在“虚拟机”下,选择将托管可用性组副本的虚拟机。

  7. 选择“添加”将虚拟机添加到后端池。

  8. 选择“保存”

设置探测

  1. 在 Azure 门户中,选择负载均衡器,选择健康探测,然后选择+添加

  2. 对侦听程序运行状况探测进行如下设置:

    设置 说明 示例
    名称 文本 SQLAlwaysOnEndPointProbe
    协议 选择 TCP TCP
    端口 任何未使用的端口 59999
    时间间隔 尝试探测之间的间隔时间(秒) 5
  3. 选择 并添加

设置负载均衡规则

  1. 在Azure门户中,依次选择负载均衡器、加载均衡规则,然后选择+添加

  2. 将侦听器负载均衡的规则设置如下:

    设置 说明 示例
    名称 文本 SQLAlwaysOnEndPointListener
    “前端 IP 地址” 选择地址 使用创建负载均衡器时所创建的地址。
    后端池 选择后端池 选择包含负载均衡器目标虚拟机的后端池。
    协议 选择 TCP TCP
    端口 使用可用性组侦听程序的端口 1433
    后端端口 为直接服务器返回设置浮动 IP 时,不会使用此字段 1433
    健康探测 为探测指定的名称 SQLAlwaysOnEndPointProbe
    会话持久性 下拉列表 没有
    空闲超时 将 TCP 连接保持打开的分钟数 4
    浮动 IP (直接服务器返回) 启用此设置。

    警告

    直接服务器返回是在创建过程中设置的。 你无法更改此项。

  3. 选择“保存”

将故障转移群集添加到SQL Server VM

若要添加故障转移群集功能,请在两SQL Server VM 上完成以下步骤:

  1. 使用 Bastion 通过 CORP\Install 帐户连接到 SQL Server 虚拟机。 打开 Server Manager 仪表板。

  2. 选择仪表板上的“添加角色和功能”链接。

    服务器管理器仪表板的截图显示了用于添加角色和功能的链接。

  3. 选择“下一步”,直到看到“服务器功能”部分。

  4. 功能中,选择故障转移群集

  5. 添加任何所需的功能。

  6. 选择“安装”。

注意

现在可以使用 Azure CLI 自动执行此任务,同时实际将SQL Server VM 加入故障转移群集。

调整故障转移群集的网络阈值

在具有SQL Server可用性组的 Azure VM 中运行Windows故障转移群集节点时,请将群集设置更改为更宽松的监视状态。 此更改使群集更加稳定且可靠。 有关详细信息,请参阅 IaaS 和 SQL Server:优化故障转移群集网络阈值

在每个SQL Server VM 上配置防火墙

该解决方案要求在防火墙中打开以下 TCP 端口:

  • SQL Server VM:默认实例 SQL Server的端口 1433。
  • Azure负载均衡器探测:任何可用端口。 示例中经常使用 59999。
  • 群集核心负载均衡器 IP 地址运行状况探测:任何可用端口。 示例中经常使用 58888。
  • 数据库镜像终结点:任何可用端口。 示例中经常使用 5022。

需要在新的 SQL Server VM 上打开防火墙端口。 端口的打开方式取决于所用的防火墙解决方案。 以下步骤演示如何在Windows防火墙中打开端口:

  1. 在 SQL Server Start 屏幕上,打开具有高级安全性的Windows防火墙

  2. 在左窗格中,选择“入站规则”。 在右窗格上,选择“新建规则”。

  3. 对于规则类型,请选择端口

  4. 对于端口,请指定“TCP”并输入相应的端口号。 以下屏幕截图显示了示例:

    显示为防火墙创建新入站规则的选项的屏幕截图。

  5. 选择“下一步”。

  6. 在“操作”页上,保持选中“允许连接”,然后选择“下一步”。

  7. 在“配置文件”页上,接受默认设置,然后选择“下一步”。

  8. Name>Name 页上,在 Name 框中指定规则名称(如 Azure LB Probe),然后选择 Finish

将SQL Server添加到Windows Server故障转移群集

新的SQL Server VM 需要被添加到本地区域内存在的Windows Server 故障转移群集中。

若要将SQL Server VM 添加到群集,请执行以下作:

  1. 使用 Bastion 连接到现有群集中的SQL Server VM。 使用域帐户,该帐户是所有SQL Server虚拟机和见证服务器上的管理员。

  2. Server Manager 仪表板上,选择 Tools,然后选择 Failover Cluster Manager

  3. 在左窗格中,右键单击“故障转移群集管理器”,然后选择“连接到群集”。

  4. 在“选择群集”窗口中的“群集名称”下,选择“此服务器上的群集”。 然后选择“ 确定”。

  5. 在浏览器树中,右键单击群集,并选择“添加节点”。

  6. 在“添加节点向导”中,选择“下一步” 。

  7. Select Servers 页上,添加新SQL Server实例的名称。 在“输入服务器名称”中输入服务器名称,选择“添加”,然后选择“下一步”。

  8. 在“验证警告”页上,选择“否”。 (在生产场景中,应执行验证测试)。 然后,选择下一步

  9. 如果正在使用存储空间,则在“确认”页上,取消选中“将所有符合条件的存储添加到群集”复选框。

    警告

    如果您不清除选择将所有符合条件的存储添加到群集,则在群集过程中,Windows会分离虚拟磁盘。 这样一来,这些虚拟磁盘将不会出现在磁盘管理器或资源管理器之中,除非从群集中删除存储,并通过 PowerShell 将其重新附加。

  10. 选择“下一步”。

  11. 选择完成

    “故障转移群集管理器”显示群集具有一个新的节点,并将该节点在“节点”容器中列出

为Windows Server故障转移群集添加 IP 地址

注意

在 Windows Server 2019 上,群集创建一个 分布式服务器名称而不是 群集网络名称。 如果您正在使用 Windows Server 2019,请跳到 为可用性组侦听器添加 IP 地址。 可以使用 PowerShell 创建群集网络名称。 有关详细信息,请查看博客文章故障转移群集:群集网络对象

接下来,创建 IP 地址资源并将其添加到新 SQL Server VM 的群集:

  1. 在“故障转移群集管理器”中,选择群集的名称。 右键单击“群集核心资源”下的群集名称,然后选择“属性”:

    故障转移群集管理器的屏幕截图显示了打开群集属性的选项。

  2. 在“群集属性”对话框中,选择“IP 地址”下的“添加”,然后从远程网络区域添加群集名称的 IP 地址。 在“IP 地址”对话框中选择“确定”,然后在“群集属性”对话框中选择“确定”,以保存新的 IP 地址。

    该屏幕截图显示了用于创建群集 IP 地址的对话框。

  3. 为群集核心名称添加 IP 地址作为依赖项。

    再次打开 “群集属性 ”对话框,然后选择“ 依赖项 ”选项卡。为两个 OR IP 地址配置依赖项。

    该屏幕截图显示了“群集属性”对话框,其中显示了用于添加依赖项的选择。

为可用性组侦听程序添加 IP 地址

需要将远程区域中侦听器的 IP 地址添加到群集。 要添加 IP 地址,请执行以下操作:

  1. 在故障转移群集管理器中,右键单击可用性组角色。 依次点击“添加资源”、“更多资源”,然后选择“IP 地址”。

    故障转移群集管理器的屏幕截图,显示了用于添加 IP 地址作为资源的选项。

  2. 若要配置此 IP 地址,请右键选择“其他资源”下的资源,然后选择“属性”。

    故障转移群集管理器的屏幕截图,显示了打开资源属性的选项。

  3. 在“名称”栏中输入新资源的名称。 对于“网络”,请选择远程数据中心的网络。 选择静态 IP 地址,然后在 Address 框中,从新的Azure负载均衡器分配静态 IP 地址。

    该屏幕截图显示了 IP 地址属性的对话框,其中显示了群集中侦听器 IP 的分配。

  4. 选择 应用,然后选择 确定

  5. 将 IP 地址资源设成侦听器客户端访问点(网络名称)群集的依赖项。

    右键单击侦听器客户端接入点,然后选择“属性”。 浏览到“依赖项”选项卡,并将新的 IP 地址资源添加到侦听器客户端接入点。 以下屏幕截图显示了正确配置的 IP 地址群集资源:

    故障转移群集管理器的屏幕截图,显示了为可用性组配置的 IP 地址。

    重要

    该群集资源组包含这两个 IP 地址。 这两个 IP 地址是侦听器客户端接入点的依赖项。 在群集依赖项配置中使用OR运算符。

  6. 在 PowerShell 中设置群集参数

    运行在新区域中的负载均衡器上配置的,且带有群集网络名称、IP 地址和探测端口的 PowerShell 脚本:

    $ClusterNetworkName = "<MyClusterNetworkName>" # The cluster name for the network in the new region (Use Get-ClusterNetwork on Windows Server 2012 or later to find the name.)
    $IPResourceName = "<IPResourceName>" # The cluster name for the new IP address resource.
    $ILBIP = "<n.n.n.n>" # The IP address of the internal load balancer in the new region. This is the static IP address for the load balancer that you configured in the Azure portal.
    [int]$ProbePort = <nnnnn> # The probe port that you set on the internal load balancer.
    
    Import-Module FailoverClusters
    
    Get-ClusterResource $IPResourceName | Set-ClusterParameter -Multiple @{"Address"="$ILBIP";"ProbePort"=$ProbePort;"SubnetMask"="255.255.255.255";"Network"="$ClusterNetworkName";"EnableDhcp"=0}
    

启用可用性组

接下来,启用“Always On 可用性组”功能。 在新SQL Server VM 上完成以下步骤:

  1. Start 屏幕中,打开 SQL Server Configuration Manager

  2. 在浏览器树中,选择SQL Server服务。 右键单击 SQL Server (MSSQLSERVER) 服务,然后选择 Properties

  3. 选择 “AlwaysOn 高可用性 ”选项卡,然后选择“ 启用 AlwaysOn 可用性组”。

    在 SQL Server 属性中启用 Always On 可用性组的选择的截图

  4. 选择应用。 在弹出对话框中选择“确定”。

  5. 重启SQL Server服务。

将新副本添加到可用性组

在新创建的虚拟机上重新启动 SQL Server 后,可以将它添加为可用性组中的副本。

  1. 打开到可用性组中主SQL Server实例的远程桌面会话,然后打开SQL Server Management Studio(SSMS)。

  2. 在 SSMS 中的 Object Explorer 中,打开 Always On High Availability>Availability Groups。 右键单击可用性组名称,然后选择“添加副本”。

  3. 连接到现有副本,然后选择“下一步”。

  4. 选择 Add Replica 并连接到新的SQL Server VM。

    重要

    远程Azure区域中的副本应设置为使用手动故障转移的异步复制。

  5. 在“选择初始数据同步”页上,选择“完全同步”,并指定一个共享网络位置。 对于位置,请使用创建的备份共享。 在此示例中,它是 \\<First SQL Server>\Backup\。 然后选择下一步

    注意

    完全同步在SQL Server的第一个实例上对数据库进行完整备份,并将其还原到第二个实例。 对于大型数据库,不建议进行完全同步,因为这可能需要很长时间。

    可以通过使用 NO RECOVERY 对数据库进行手动备份和还原来缩短该时间。 如果在配置可用性组之前,该数据库已在第二个 SQL Server 实例上通过 NO RECOVERY 进行还原,请选择仅加入。 若想在配置可用性组之后进行备份,请选择“跳过初始数据同步”。

    该屏幕截图显示了选择完全数据同步选项。

  6. 在“验证”页中,选择“下一步”。 此页面应与下图类似:

    显示 SSMS 中可用性组验证结果的页面的屏幕截图。

    注意

    如果看到侦听器配置的警告,指出未配置可用性组侦听器。 您可以不必理会此警告,因为侦听器已设置。 在《在单个区域的单个子网中手动部署可用性组教程》中,当您在本地区域创建 Azure 负载均衡器后,它被创建。

  7. 在“摘要”页面上,选择“完成”,然后等待向导配置完新的可用性组。 在“进度”页上,可选择“更多详细信息”查看详细进度。

    向导完成配置后,请检查“结果”页,确认已成功创建可用性组。

  8. 选择 关闭 以关闭向导。

查看可用性组

Object Explorer 中,展开 Always On High Availability,然后展开 Availability Groups。 右键单击可用性组,然后选择“显示面板”。

SSMS 中的对象资源管理器截图,显示了打开高可用性组仪表板的选项。

可用性组仪表板应与下方屏幕截图类似,现在包含另一个副本:

SSMS 中“可用性组”仪表板的屏幕截图。

仪表板显示副本、每个副本的故障转移模式以及同步状态。

检查可用性组侦听程序

  1. Object Explorer 中,展开 Always On High Availability,展开 Availability Groups,然后展开 Availability Group Listener

  2. 右键单击侦听器名称,并选择“属性”。 现在应会显示侦听程序的两个 IP 地址(每个区域一个)。

    SSMS 中可用性组侦听器属性窗口的截图,显示用于侦听器的两个 IP 地址。

设置多个子网的连接

远程数据中心中的副本属于可用性组,但位于不同子网。 如果此副本成为主副本,则可能会发生应用程序连接超时。 多子网部署中的本地可用性组也存在相同的行为。 若要允许从客户端应用程序建立连接,请更新客户端连接,或者在群集网络名称资源上配置名称解析缓存。

最好更新群集配置以设置 RegisterAllProvidersIP=1,并更新客户端连接字符串以设置 MultiSubnetFailover=Yes。 请参阅使用 MultiSubnetFailover 进行连接

如果无法修改连接字符串,则可以配置名称解析缓存。 请参阅 在多子网环境中连接到 Always On 侦听器时发生超时

故障转移到远程区域

要测试侦听器与远程区域之间的连接,可将副本故障转移到远程区域。 尽管副本是异步的,但故障转移存在丢失数据的可能性。 要故障转移并防止丢失数据,请将可用性模式更改为同步,将故障转移模式设置为自动。 请使用以下步骤:

  1. Object Explorer 中,连接到承载主副本的SQL Server实例。

  2. 在“Always On 可用性组”下,右键单击可用性组,然后选择“属性”。

  3. 在“常规”页上的“可用性副本”下,将灾难恢复 (DR) 站点中的辅助副本设置为使用“同步提交”可用性模式和“自动”故障转移模式。

    如果辅助副本和主副本位于同一站点,且辅助副本具有高可用性,则将辅助副本设置为“异步提交”和“手动”。

  4. 选择“确定”

  5. Object Explorer 中,右键单击可用性组并选择 Show Dashboard

  6. 在控制面板中,验证 DR 站点中的副本是否已同步。

  7. Object Explorer 中,右键单击可用性组,然后选择 Failover。 SQL Server Management Studio打开一个向导来故障转移SQL Server。

  8. 选择 Next,然后选择 DR 站点上的SQL Server实例。 再次选择下一步

  9. 连接到 DR 站点上的SQL Server实例,然后选择 Next

  10. 在“摘要”页上查看设置,然后选择“完成” 。

测试连接性之后,将主要副本移回主数据中心,并将可用性模式设置回其正常运行设置。 下表显示了本文档所述体系结构的正常运行设置:

位置 服务器实例 角色 可用性模式 故障转移模式
主数据中心 SQL-1 主要 同步 自动
主数据中心 SQL-2 次要 同步 自动
辅助或远程数据中心 SQL-3 次要 异步 手动

有关计划内故障转移和强制手动故障转移的详细信息,请参阅以下文章: