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 负载均衡器以及具有 Windows 服务器故障转移群集和 Always On 可用性组的可用性集。

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

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

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

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

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

注意

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

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

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

重要

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

创建网络和子网

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

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

类型 Local 远程区域
地址空间 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. 在“市场”搜索框中搜索“虚拟网络”,然后从 Microsoft 选择“虚拟网络”磁贴。

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

    1. 在“项目详细信息”下,对于“订阅”,请选择相应的 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”的对等互连的名称。
    订阅 选择远程虚拟网络的订阅。
    虚拟网络 选择“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”中,确认部署模型为“资源管理器”,然后选择“创建”。

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

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

Azure 会创建虚拟机。

配置域控制器

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

设置首选 DNS 服务器地址

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

  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 帐户远程连接到虚拟机。
  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. 选择“下一步”,直到出现“先决条件检查”对话框。 然后选择“安装”。

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

创建 SQL Server VM

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

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

  • 存储:Azure 托管磁盘

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

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

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

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

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

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

创建并配置 SQL Server VM

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

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

用户名 = DomainAdmin

密码 = Contoso!0000

订阅 = 自己的订阅

资源组 = 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 密钥保管库集成 = 已禁用

注意

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

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

将该服务器加入域

若要将 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 帐户登录到 sqlserver-2。

    提示

    在前面的步骤中,使用的是 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 都需要以域帐户的身份运行。

创建 Azure 负载均衡器

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

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

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

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

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

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

  3. 选择“创建”。

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

    设置
    订阅 使用虚拟机所在的同一个订阅。
    资源组 使用虚拟机所在的同一资源组。
    名称 为负载均衡器使用文本名称(例如“remoteLB”)。
    区域 使用与虚拟机相同的区域。
    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. 选择“添加”,将后端池与新创建的 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. 使用 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 的默认实例。
  • Azure 负载均衡器探测:任何可用端口。 示例中经常使用 59999。
  • 群集核心负载均衡器 IP 地址运行状况探测:任何可用端口。 示例中经常使用 58888。
  • 数据库镜像终结点:任何可用端口。 示例中经常使用 5022。

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

  1. 在 SQL Server 的“开始”屏幕上,打开高级安全 Windows 防火墙。

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

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

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

    该屏幕截图显示了用于为防火墙创建新的入站规则的选择。

  5. 选择“下一页”。

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

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

  8. 在“名称”页的“名称”框中指定一个规则名称(如 Azure LB Probe),然后选择“完成”。

将 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 地址”,然后在“地址”框中,从新的 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. 从“开始”屏幕打开 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 中可用性组验证结果的页面的屏幕截图。

    注意

    侦听器配置的警告显示你尚未配置可用性组侦听程序。 可以忽略此警告,因为侦听器已设置。 它是在本地区域创建 Azure 负载均衡器后创建的。

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

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

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

查看可用性组

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

该屏幕截图显示了 SSMS 中的对象资源管理器,其中显示了用于打开可用性组仪表板的选择。

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

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-1 主要 同步 自动
主数据中心 SQL-2 次要 同步 自动
辅助或远程数据中心 SQL-3 辅助副本 异步 手动

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

后续步骤

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