Compartir a través de

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

适用于:Azure VM 上的 SQL Server

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

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

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

概述

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

图中显示本教程中部署的资源。

在图中所示的部署中,所有虚拟机都位于一个 Azure 区域中。 可用性组副本可与 SQL-VM-1 和 SQL-VM-2 上的自动故障转移进行同步提交。 若要构建此体系结构,请参阅可用性组模板或教程

如果无法访问 Azure 区域,此体系结构很容易停机。 为了解决此漏洞,可在不同的 Azure 区域添加一个副本。 下图显示了新体系结构的外观:

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

图中显示了名为 SQL-VM-3 的新虚拟机。 SQL-VM-3 位于其他 Azure 区域。 它已添加到 Windows Server 故障转移群集,可以托管可用性组副本。 在此体系结构中,远程区域中的副本通常配置了异步提交可用性模式和手动故障转移模式。

注意

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

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

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

重要

在 Azure 区域之间复制数据时,使用此体系结构需支付出站数据费用。 请参阅带宽定价

创建网络和子网

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

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

类型 Local 远程区域
地址空间 10.38.0.0/16 10.19.0.0/16
DC 子网网络 10.38.0.0/24 10.19.0.0/24
SQL 子网 1 网络 10.38.1.0/24 10.19.1.0/24
SQL 子网 2 网络 10.38.2.0/24 不适用
群集 IP 1 10.38.1.10 10.19.1.10
群集 IP 2 10.38.2.10 不适用
可用性组侦听程序 IP 1 10.38.1.11 10.19.1.11
可用性组侦听程序 IP 1 10.38.2.11 不适用

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

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

  2. 在“市场”搜索框中搜索“虚拟网络”,然后从 Microsoft 选择“虚拟网络”磁贴。

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

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

    该屏幕截图显示了 Azure 门户,其中显示了用于在远程区域中创建虚拟网络的选项。

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

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

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

    该屏幕截图显示了 Azure 门户,其中显示了用于为虚拟网络添加地址空间的选项。

  6. 为域控制器和 SQL Server 添加子网。

    1. 选择“+ 添加子网”

    2. 为“子网名称”提供值,例如“DC-Subnet”。

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

      例如,如果地址范围为 10.19.0.0/16,请为 DC-Subnet 子网输入以下值:10.19.1.0 表示起始地址,/24 表示子网大小。

    4. 选择“添加”以添加新子网。

    5. 对 SQL-subnet1 重复此过程。 完成后,应具备远程区域中域控制器的子网,以及远程区域中每个 SQL Server 的子网。 例如,在本教程中,远程区域虚拟网络包含:

    该屏幕截图显示了 Azure 门户,其中显示用于将子网添加到虚拟网络的选择。

  7. 选择“查看 + 创建”以创建虚拟网络。

配置虚拟网络 DNS

创建虚拟网络后,将其配置为使用本地域控制器或主域控制器中的 DNS 服务器。

要配置虚拟网络以使用 DNS,请执行以下步骤:

  1. Azure 门户中转到资源组,并选择虚拟网络(例如 remote-HAVNET)。
  2. 选择“设置”窗格下的“DNS 服务器”,然后选择“自定义”。
  3. 在“IP 地址”字段中输入之前标识的 专用 IP 地址,例如 10.38.0.4
  4. 选择“保存” 。

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

创建新的虚拟网络和子网后,即可连接这两个区域,以便它们相互通信。 可通过两种方法完成此操作:

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

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

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

    该屏幕截图显示了 Azure 门户,其中显示用于添加虚拟网络对等互连的选择。

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

    设置
    此虚拟网络
    对等互连链接名称 输入 autoHAVNET-remote_HAVNET 作为从“autoHAVNET”到远程虚拟网络的对等互连的名称。
    远程虚拟网络
    对等互连链接名称 输入 remote_HAVNET-autoHAVNET 作为从远程虚拟网络到“autoHAVNET”的对等互连的名称。
    订阅 选择远程虚拟网络的订阅。
    虚拟网络 选择“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”中,确认部署模型为“资源管理器”,然后选择“创建”。

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

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

Azure 会创建虚拟机。

配置域控制器

在以下步骤中,将 DC-VM-3 计算机配置为 corp.contoso.com 的域控制器:

设置首选 DNS 服务器地址

首选 DNS 服务器地址不应直接在 VM 中更新,应从 Azure 门户、PowerShell 或 Azure CLI 进行编辑。 在 Azure 门户内执行以下步骤以进行更改:

  1. 登录到 Azure 门户

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

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

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

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

  6. 选择“保存” 。

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

加入域

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

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

配置域控制器

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

  1. 如果尚未连接,请打开到辅助域控制器的 RDP 会话,并打开“服务器管理器”仪表板(可能会默认打开)。

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

    服务器管理器的屏幕截图 - 突出显示了“添加角色”。

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

  4. 选择“Active Directory 域服务”和“DNS 服务器”角色。 出现提示时,添加这些角色所需的任何其他功能。

  5. 功能安装完毕后,返回到“服务器管理器”仪表板。

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

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

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

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

  10. 选择“选择” 。

  11. 使用管理员帐户 (CORP.CONTOSO.COM\domainadmin) 和密码 (Contoso!0000) 进行连接。

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

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

    注意

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

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

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

将第二个 DC IP 地址添加到 DNS

在配置远程域控制器后,按照与之前相同的步骤来标识 VM 的专用 IP 地址,并在资源组的虚拟网络(本地虚拟网络和远程虚拟网络)中添加专用 IP 地址作为辅助自定义 DNS 服务器。 在 Azure 门户中添加辅助 DNS 服务器可以实现 DNS 服务冗余。

创建 SQL Server VM

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

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

可用性 - 可用性区域

为实现最高级别的冗余、复原能力和可用性,请将 VM 部署在单独的可用性区域中。 可用性区域是 Azure 区域中独特的物理位置。 每个局部区域由一个或多个数据中心组成,这些数据中心配置了独立的电源、散热系统和网络。 对于尚不支持可用性区域的 Azure 可用性区域,请改为使用可用性集。 请将所有 VM 放在同一可用性集内。

存储:Azure 托管磁盘

将 Azure 托管磁盘用作虚拟机存储。 Azure 建议将托管磁盘用于 SQL Server 虚拟机,因为它们会在后台处理存储。 有关详细信息,请参阅 Azure 托管磁盘概述

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

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

网络 - 每个服务器一个 NIC

每个服务器(群集节点)使用单个 NIC。 Azure 网络具有物理冗余,因此在部署到 Azure 虚拟机的故障转移群集上不需要额外的 NIC。 群集验证报告将发出警告,指出节点只能在单个网络上访问。 故障转移群集位于 Azure 虚拟机上时,可以忽略此警告。

创建并配置 SQL Server VM

若要创建 SQL Server VM,请返回到“SQL-HA-RG”资源组,然后选择“添加”。 搜索相应的库项,选择“虚拟机”,然后选择“从库中”。 参考下表中的信息创建 VM:

设置
选择相应的库项 Windows Server 2016 上的 SQL Server 2016 SP2 Enterprise
虚拟机配置:基本信息 名称 = SQL-VM-3

用户名 = DomainAdmin

密码 = Contoso!0000

订阅 = 自己的订阅

资源组 = SQL-HA-RG

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

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

虚拟网络 = remote-HAVNET

子网 = SQL-subnet1 (10.19.1.0/24)

公共 IP 地址 = 自动生成

网络安全组 =

监视诊断 = 已启用

诊断存储帐户 = 使用自动生成的存储帐户

虚拟机配置:SQL Server 设置 SQL 连接 = 专用(虚拟网络内部)

端口 = 1433

SQL 身份验证 = 已禁用

存储配置 = 通用

自动修补 = 星期日 2:00

自动备份 = 已禁用

Azure 密钥保管库集成 = 已禁用

注意

此处建议的计算机大小适合用于在 Azure 虚拟机中测试可用性组。 为获得生产工作负载的最佳性能,请参阅清单:Azure VM 上 SQL Server 的最佳做法中关于 SQL Server 计算机大小和配置的建议。

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

配置 SQL Server VM

VM 创建完成后,请配置 SQL Server VM:为每台 VM 添加辅助 IP 地址,并将它们加入域。

将辅助 IP 添加到 SQL Server VM

在多子网环境中,将辅助 IP 地址分配给每个 SQL Server VM 以用于可用性组侦听程序,对于 Windows Server 2016 及更早版本,为群集 IP 地址分配每台 SQL Server VM 的辅助 IP 地址。 这样做消除了使用 Azure 负载均衡器的需要,以及位于单个子网环境中的要求。

在 Windows Server 2016 及更早的版本中,需要为每个 SQL Server VM 分配一个额外的辅助 IP 地址,用于 Windows 群集 IP,因为群集使用群集网络名称而不是 Windows Server 2019 中引入的默认分布式网络名称 (DNN)。 使用 DNN 时,群集名称对象 (CNO) 自动注册到群集所有节点的 IP 地址,无需专用 Windows 群集 IP 地址。

如果你使用 Windows Server 2016 和更早的版本,请按照本部分中的步骤为可用性组侦听程序和群集的每个 SQL Server VM 分配辅助 IP 地址。

重要

如果使用 Windows Server 2019 或更高版本上,请仅为可用性组侦听程序分配辅助 IP 地址,并跳过分配 Windows 群集 IP 的步骤,除非你打算为群集配置虚拟网络名称 (VNN) - 在这种情况下,请将这两个 IP 地址分配给每个 SQL Server VM,就像为 Windows Server 2016 分配一样。

若要向 VM 分配其他辅助 IP,请执行以下步骤:

  1. Azure 门户中转到资源组,并选择 SQL Server VM“SQL-VM-3”。

  2. 在“设置”窗格中选择“网络”,然后选择“网络接口”。

  3. 在“网络接口”页上,在“设置”窗格中选择“IP 配置”,然后选择“+ 添加”以添加其他 IP 地址。

  4. 在“添加 IP 配置”页上,执行以下操作:

    1. 指定 Windows 群集 IP 的名称,例如为 Windows 2016 及更早版本指定 windows-cluster-ip。 如果使用 Windows Server 2019 或更高版本,请跳过此步骤。
    2. 将“分配”设置为“静态”。
    3. 输入与 SQL Server VM (SQL-VM-1) 位于同一子网 (SQL-subnet-1) 中的未使用的 IP 地址,例如 10.19.1.10
    4. 将“公共 IP 地址”保留为默认值“解除关联”。
    5. 选择“确定”完成 IP 配置的添加。
  5. 再次选择“+ 添加”以便为可用性组侦听程序(其名称类似 availability-group-listener)配置其他 IP 地址,并再次指定 SQL-subnet-1 中未使用的 IP 地址,例如 10.19.1.11

    Azure 门户的屏幕截图,其中显示了网络接口上的 IP 配置。

现在,你已准备好加入 corp.contoso.com。

将该服务器加入域

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

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

添加帐户

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

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

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

  1. 等待 VM 重启,然后从主域控制器重新打开 RDP 文件。 使用 CORP\DomainAdmin 帐户登录到 SQL-VM-3。

    提示

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

  2. 在“服务器管理器”中,选择“工具”,然后选择“计算机管理”。

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

  4. 双击“管理员”组。

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

  6. 输入“CORP\Install”作为用户,然后选择“确定”。

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

在每个 SQL Server VM 上创建安装帐户的登录名

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

  1. 使用 <MachineName>\DomainAdmin 帐户通过 RDP 连接到服务器。

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

  3. 在“对象资源管理器”中,选择“安全性”。

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

  5. 在“登录名 - 新建”中,选择“搜索”。

  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 配置管理器”。
  2. 右键单击 SQL Server 服务,然后选择“属性”。
  3. 设置帐户和密码。

对于 SQL Server 可用性组,每个 SQL Server VM 都需要以域帐户的身份运行。

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

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

  1. 使用 CORP\install 帐户通过 RDP 连接到 SQL Server 虚拟机。 打开“服务器管理器”仪表板。

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

    该屏幕截图显示了“服务器管理器”仪表板,其中显示了用于添加角色和功能的链接。

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

  4. 在“功能”中,选择“故障转移群集”。

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

  6. 选择“安装” 。

优化故障转移群集的网络阈值

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

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

可用性组功能依赖于通过以下 TCP 端口的流量:

  • SQL Server VM:端口 1433,用于 SQL Server 的默认实例。
  • 数据库镜像终结点: 任何可用端口。 示例中经常使用 5022。

在两个 SQL Server VM 上打开这些防火墙端口。 打开端口的方法取决于采用的防火墙解决方案,并且可能与本部分提供的 Windows 防火墙示例有所不同。

若要在 Windows 防火墙上这些端口,请执行以下步骤:

  1. 在第一个 SQL Server 的“开始”屏幕中,启动“高级安全 Windows 防火墙”。

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

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

  4. 对于端口,请指定“TCP”,并键入相应的端口号。 请参阅以下示例:

    屏幕截图显示配置 Windows 防火墙的新规则。

  5. 选择“下一页”。

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

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

  8. 在“名称”页的“名称”文本框中指定一个规则名称(如 SQL Inbound),并选择“完成”。

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

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

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

  1. 使用 RDP 连接到现有群集中的 SQL Server VM。 使用一个在 SQL Server VM 和见证服务器上都是管理员帐户的域账户。

  2. 在“服务器管理器”仪表板中,选择“工具”,然后选择“故障转移群集管理器”。

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

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

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

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

  7. 在“选择服务器”页上,添加新 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 地址作为依赖项。

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

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

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

需要将远程区域中侦听器的 IP 地址添加到群集。 添加 IP 地址:

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

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

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

    该屏幕截图显示了故障转移群集管理器,其中显示了用于打开资源属性的选择。

  3. 对于“名称”,请输入新资源的名称。 对于“网络”,请选择远程数据中心的网络。 选择“静态 IP 地址”,然后在“地址”框中,分配之前为侦听程序选择的静态 IP 地址,在本教程中为 10.19.1.11。

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

  4. 依次选择“应用”、“确定” 。

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

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

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

    重要

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

启用可用性组

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

  1. 从“开始”屏幕打开 SQL Server 配置管理器。

  2. 在浏览器树中,选择“SQL Server 服务”。 右键单击“SQL Server (MSSQLSERVER)”服务,并选择“属性”。

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

    该屏幕截图显示了用于在 SQL Server 属性中启用 Always On 可用性组的选择。

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

  5. 重新启动 SQL Server 服务。

将新副本添加到可用性组

在新创建的虚拟机上重启 SQL Server 后,可以将其作为副本添加到可用性组

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

  2. 在 SSMS 的对象资源管理器中,打开“Always On 高可用性组”>“可用性组”。 右键单击可用性组名称,然后选择“添加副本”。

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

  4. 选择“添加副本”并连接到新的 SQL Server VM。

    重要

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

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

    注意

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

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

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

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

    注意

    侦听器配置的警告显示你尚未配置可用性组侦听程序。 可以忽略此警告,因为侦听器已设置。

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

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

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

查看可用性组

在“对象资源管理器”中,展开“AlwaysOn 高可用性”,并展开“可用性组”。 右键单击可用性组,然后选择“显示面板”。

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

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

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

检查可用性组侦听程序

  1. 在对象资源管理器中,展开“Always On 高可用性”,展开“可用性组”,然后展开“可用性组侦听程序”。

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

    SSMS 中“可用性组侦听程序属性”窗口的屏幕截图,其中显示了用于侦听器的两个 IP 地址。

设置多个子网的连接

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

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

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

故障转移到远程区域

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

  1. 在“对象资源管理器”中连接到承载主副本的 SQL Server 实例。

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

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

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

  4. 选择“确定” 。

  5. 在对象资源管理器中,右键单击可用性组,然后选择“显示仪表板”。

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

  7. 在对象资源管理器中,右键单击可用性组,然后选择“故障转移”。 SQL Server Management Studio 将打开向导对 SQL Server 进行故障转移。

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

  9. 连接到 DR 站点上的 SQL Server 实例,然后选择“下一步”。

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

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

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

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

后续步骤

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