教程:手动配置可用性组(Azure VM 上的 SQL Server)

适用于: Azure VM 上的 SQL Server

提示

在同一 Azure 虚拟网络中的多个子网中创建 SQL Server VM,使得 Always On 可用性 (AG) 组不再需要 Azure 负载均衡器。

本教程说明如何在单个子网内的 Azure 虚拟机 (VM) 上为 SQL Server 创建 Always On 可用性组。 完整教程将创建一个数据库副本位于两个 SQL Server 上的可用性组。

时间估计:如果满足先决条件,完成本教程大约需要 30 分钟。

先决条件

本教程假设你已基本了解 SQL Server Always On 可用性组。 如需更多信息,请参阅 Always On 可用性组概述 (SQL Server)

开始本教程之前,需要完成先决条件以便在 Azure 虚拟机中创建 Always On 可用性组。 如果已满足这些先决条件,可转到 创建群集

下表列出了开始本教程之前需要完成的先决条件:

要求 说明
两个 SQL Server 实例 - 位于 Azure 可用性集中
- 位于单个域中
- 已安装故障转移群集功能
Windows Server 用于群集见证的文件共享
SQL Server 服务帐户 域帐户
SQL Server 代理服务帐户 域帐户
防火墙端口已打开 - SQL Server:对于默认实例,为 1433
- 数据库镜像终结点:5022 或任何可用端口
- 可用性组负载均衡器 IP 地址运行状况探测:59999 或任何可用端口
- 群集核心负载均衡器 IP 地址运行状况探测:58888 或任何可用端口
添加故障转移群集功能 两个 SQL Server 实例都需要此功能
安装域帐户 - 每个 SQL Server 上的本地管理员帐户
- 每个 SQL Server 实例的 SQL Server sysadmin 固定服务器角色的成员

创建群集

满足先决条件后,第一步是创建包含两个 SQL Sever 和一个见证服务器的 Windows Server 故障转移群集。

  1. 使用远程桌面协议 (RDP) 连接到第一个 SQL Server。 使用一个在 SQL Server 和见证服务器上都是管理员帐户的域账户。

    提示

    先决条件文档进行操作会创建一个名为 CORP\Install 的帐户。 请使用此帐户。

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

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

    创建群集

  4. 在“创建群集向导”中,使用下表中的设置完成向导的每个页面,创建一个单节点群集:

    设置
    开始之前 使用默认值
    选择服务器 在“输入服务器名称”中键入第一个 SQL Server 的名称,然后选择“添加” 。
    验证警告 选择“否。不需要 Microsoft 对该群集的支持,因此不希望运行验证测试。选择‘下一步’时,继续创建群集。”
    用于管理群集的访问点 在“群集名称”中键入群集名称,例如“SQLAGCluster1”。
    确认 除非使用的是存储空间,否则请使用默认值。 请参阅此表后面的备注。

设置 Windows Server 故障转移群集 IP 地址

注意

在 Windows Server 2019 上,群集创建一个分布式服务器名称,而不是群集网络名称。 如果使用的是 Windows Server 2019,请跳过本教程中引用群集核心名称的任何步骤。 可以使用 PowerShell 创建群集网络名称。 查看博客故障转移群集:群集网络对象,了解更多信息。

  1. 在“故障转移群集管理器”中,向下滚动到“群集核心资源”,并展开群集详细信息。 应会看到“名称”和“IP 地址”资源都处于“已失败”状态。 不能将 IP 地址资源联机,因为向该群集分配的 IP 地址与计算机本身的地址相同,因此该地址为重复地址。

  2. 右键单击失败的“IP 地址”资源,然后选择“属性” 。

    群集属性

  3. 选择“静态 IP 地址”,并指定虚拟机所在子网中的可用地址。

  4. 在“群集核心资源”部分中,右键单击群集名称,并选择“联机” 。 等到这两个资源均已联机。 当该群集名称资源联机时,它会用新的 Active Directory (AD) 计算机帐户更新域控制器 (DC) 服务器。 稍后需使用此 AD 帐户运行可用性组群集服务。

将另一个 SQL Server 添加到群集

将另一个 SQL Server 添加到群集。

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

    向群集添加节点

  2. 在“添加节点向导”中,选择“下一步” 。 在“选择服务器”页中添加第二个 SQL Server。 在“输入服务器名称”中键入 SQL Server 名称,然后选择“添加” 。 完成后,选择“下一步”。

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

  4. 如果正在使用存储空间,则在“确认”页上清除标记为“将所有符合条件的存储添加到群集”的复选框。

    添加节点确认

    警告

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

  5. 选择“下一步”。

  6. 选择“完成”。

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

  7. 从远程桌面会话注销。

添加群集仲裁文件共享

在本示例中,Windows 群集将使用文件共享来创建群集仲裁。 本教程使用“节点和文件共享多数”仲裁。 有关详细信息,请参阅配置和管理仲裁

  1. 使用远程桌面会话连接到文件共享见证成员服务器。

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

  3. 选择“共享文件夹”。

  4. 右键单击“共享”,然后选择“新建共享…” 。

    右键单击“共享”并选择“新建共享”

    使用“创建共享文件夹向导”创建共享。

  5. 在“文件夹路径”上,选择“浏览”并找到或创建一个共享文件夹路径 。 选择“下一步”。

  6. 在“名称、说明和设置”中核对共享名称和路径。 选择“下一步”。

  7. 在“共享文件夹权限”上设置“自定义权限”。 选择“自定义…”。

  8. 在“自定义权限”上选择“添加…” 。

  9. 请确保用于创建群集的帐户具有完全控制权。

    请确保用于创建群集的帐户具有完全控制权

  10. 选择“确定” 。

  11. 在“共享文件夹权限”中选择“完成” 。 再一次选择“完成”。

  12. 从服务器注销

配置群集仲裁

接下来设置群集仲裁。

注意

根据可用性组的配置,可能需要更改参与 Windows Server 故障转移群集的节点的仲裁投票。 有关详细信息,请参阅在 Azure VM 上为 SQL Server 配置群集仲裁

  1. 使用远程桌面连接到第一个群集节点。

  2. 在“故障转移群集管理器”中,右键单击群集,点到“更多操作”,然后选择“配置群集仲裁设置…” 。

    选择“配置群集仲裁设置”

  3. 在“配置群集仲裁向导”中选择“下一步” 。

  4. 在“选择仲裁配置选项”中,选中“选择仲裁见证”,并选择“下一步” 。

  5. 在“选择仲裁见证”上,选择“配置文件共享见证” 。

    提示

    Windows Server 2016 支持云见证。 如果选择此类见证,则不需要文件共享见证。 有关详细信息,请参阅 Deploy a cloud witness for a Failover Cluster(为故障转移群集部署云见证)。 本教程使用早期操作系统也支持的文件共享见证。

  6. 在“配置文件共享见证”上键入所创建的共享的路径。 选择“下一步”。

  7. 在“确认”上核对设置。 选择“下一步”。

  8. 选择“完成”。

现已使用文件共享见证配置群集核心资源。

启用可用性组

接下来,启用“Always On 可用性组”功能。 在两个 SQL Server 上执行这些步骤。

  1. 从“开始”菜单启动“SQL Server 配置管理器”。

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

  3. 选择“Always On 高可用性组”选项卡,然后选择“启用 Always On 可用性组”,如下所示:

    启用 Always On 可用性组

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

  5. 重新启动 SQL Server 服务。

对另一个 SQL Server 重复上述步骤。

在第一个 SQL Server 上创建数据库

  1. 使用充当 sysadmin 固定服务器角色成员的域帐户启动 RDP 文件,与第一个 SQL Server 建立连接。
  2. 打开 SQL Server Management Studio 并连接到第一个 SQL Server。
  3. 在“对象资源管理器”中,右键单击“数据库”,然后选择“新建数据库” 。
  4. 在“数据库名称”中,键入 MyDB1,然后选择“确定” 。

创建备份共享

  1. 在“服务器管理器”中的第一个 SQL Server 上,选择“工具” 。 打开“计算机管理”。

  2. 选择“共享文件夹”。

  3. 右键单击“共享”,然后选择“新建共享…” 。

    选择“新建共享”

    使用“创建共享文件夹向导”创建共享。

  4. 在“文件夹路径”上,选择“浏览”并找到或创建一个数据库备份共享文件夹路径 。 选择“下一步”。

  5. 在“名称、说明和设置”中核对共享名称和路径。 选择“下一步”。

  6. 在“共享文件夹权限”上设置“自定义权限”。 选择“自定义…”。

  7. 在“自定义权限”上选择“添加…” 。

  8. 请确保两个服务器的 SQL Server 和 SQL Server 代理服务帐户具有完全控制权。

    请确保两个服务器的 SQL Server 和 SQL Server 代理服务帐户具有完全控制权。

  9. 选择“确定” 。

  10. 在“共享文件夹权限”中选择“完成” 。 再一次选择“完成”。

对数据库进行完整备份

需要备份新数据库才能初始化日志链。 如果不对数据库进行备份,则无法在可用性组中包含该数据库。

  1. 在“对象资源管理器”中,右键单击数据库,点到“任务…”,并选择“备份” 。

  2. 选择“确定”以完整备份到默认备份位置。

创建可用性组

此时可通过以下步骤配置可用性组:

  • 在第一个 SQL Server 上创建数据库。
  • 获取数据库的完整备份和事务日志备份。
  • 使用 NORECOVERY 选项将完整备份和日志备份还原到第二个 SQL Server。
  • 通过同步提交、自动故障转移和可读辅助副本来创建可用性组 (AG1)。

创建可用性组:

  1. 在与第一个 SQL Server 进行的远程桌面会话上操作。 在 SSMS 中的“对象资源管理器”中,右键单击“Always On 高可用性”,并选择“新建可用性组向导”。

    启动“新建可用性组”向导

  2. 在“简介”页上,选择“下一步” 。 在“指定可用性组名称”页面的“可用性组名称”中,键入可用性组的名称 , 例如 AG1。 选择“下一步”。

    “新建可用性组”向导中的“指定可用性组名称”

  3. 在“选择数据库”页上,选择数据库,然后选择“下一步” 。

    注意

    这些数据库满足可用性组的先决条件,你针对预定主副本进行了至少一个完整备份。

    “新建可用性组”向导中的“选择数据库”

  4. 在“指定副本”页上,选择“添加副本” 。

    “新建可用性组”向导中的“指定副本”

  5. 此时会弹出“连接到服务器”对话框。 在“服务器名称”中键入第二个服务器的名称。 选择“连接” 。

    返回到“指定副本”页,此时应看到“可用性副本”中列出了第二个服务器。 对副本进行如下配置。

    “新建可用性组”向导中的“指定副本”(完整)

  6. 选择“终结点”,查看此可用性组的数据库镜像终结点。 使用设置数据库镜像终结点的防火墙规则时所使用的相同的端口。

    “新建可用性组”向导中的“选择初始数据同步”

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

    注意

    完全同步对 SQL Server 第一个实例上的数据库进行完整备份,并将其还原到第二个实例。 对于大型数据库,不建议使用完全同步,因为这可能需要花费很长时间。 可以通过使用 NO RECOVERY 对数据库进行手动备份和还原来降低该时间。 如果配置可用性组之前,已在 SQL Server 上使用 NO RECOVERY 对数据库进行还原,请选择“仅联接”。 若想在配置可用性组之后进行备份,请选择“跳过初始数据同步”。

    选择“跳过初始数据同步”

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

    “新建可用性组”向导中的“验证”

    注意

    你尚未配置可用性组侦听器,会出现一个侦听器配置警告。 在 Azure 虚拟机上要创建 Azure 负载均衡器之后才创建侦听器,因此可以忽略此警告。

  9. 在“摘要”页面上,选择“完成”,然后等待向导配置完新的可用性组 。 在“进度”页上,可选择“更多详细信息”以查看详细进度 。 向导运行完成后,检查“结果”页以验证是否已成功创建可用性组。

    “新建可用性组”向导中的“结果”

  10. 选择“关闭”退出该向导。

查看可用性组

  1. 在“对象资源管理器”中,展开“Always On 高可用性”,并展开“可用性组”。 此时,应在此容器中看到新的可用性组。 右键单击可用性组,然后选择“显示面板”。

    显示可用性组仪表板

    Always On 仪表板应如以下屏幕截图所示:

    可用性组仪表板

    可以在其中查看副本、每个副本的故障转移模式以及同步状态。

  2. 在“故障转移群集管理器”中,选择群集。 选择“角色”。 使用的可用性组名称是群集上的一个角色。 该可用性组不具有客户端连接的 IP 地址,原因是你未配置侦听器。 会在创建 Azure 负载均衡器后配置侦听器。

    故障转移群集管理器中的可用性组

    警告

    请勿尝试从故障转移群集管理器对可用性组进行故障转移。 所有故障转移操作都应在 SSMS 中的 AlwaysOn 仪表板内执行。 有关详细信息,请参阅将故障转移群集管理器用于可用性组的限制

此时,你有一个副本在两个 SQL Server 实例上的可用性组。 你可在这两个实例之间移动该可用性组。 但无法连接到该可用性组,因为你没有侦听器。 在 Azure 虚拟机中,侦听器需要负载均衡器。 下一步是在 Azure 中创建负载均衡器。

创建 Azure 负载均衡器

注意

在 Windows 2016 及更高版本上使用 SQL Server 2019 CU8 及更高版本的客户可将传统的 VNN 侦听器和 Azure 负载均衡器替换为 (DNN) 侦听器。 跳过本文有关创建侦听器和负载均衡器的其余步骤。

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

Azure 负载均衡器可以是标准负载均衡器或基本负载均衡器。 标准负载均衡器的功能比基本负载均衡器的功能更多。 对于可用性组,如果使用可用性区域(而不是可用性集),则需要标准负载均衡器。 有关负载均衡器 SKU 之间的差异的详细信息,请参阅负载均衡器 SKU 比较

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

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

    选择 Microsoft 发布的负载均衡器

  3. 选择“创建”。

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

    设置 字段
    名称 为负载均衡器使用文本名称,例如 sqlLB
    类型 内部
    虚拟网络 使用虚拟网络的名称。
    子网 使用虚拟机所在的子网的名称。
    IP 地址分配 静态
    IP 地址 使用子网中的可用地址。 将该地址用于可用性组侦听程序。 请注意,这不同于群集 IP 地址。
    订阅 使用虚拟机所在的同一个订阅。
    位置 使用虚拟机所在的同一个位置。

    Azure 门户边栏选项卡应如下所示:

    创建负载均衡器

  5. 选择“创建”以创建负载均衡器。

若要配置负载均衡器,需要创建后端池、探测,并设置负载均衡规则。 在 Azure 门户中进行这些操作。

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

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

    在资源组中找到负载均衡器

  2. 依次选择负载均衡器、“后端池”和“+添加” 。

  3. 键入后端池的名称。

  4. 将该后端池与包含 VM 的可用性集进行关联。

  5. 在“目标网络 IP 配置”下,选中“虚拟机”并选择将托管可用性组副本的这两个虚拟机。 不要包含文件共享见证服务器。

    注意

    如果未指定这两个虚拟机,则仅与主要副本的连接会成功。

  6. 选择“确定”以创建后端池。

设置探测

  1. 依次选择负载均衡器、“运行状况探测”和“+添加” 。

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

    设置 说明 示例
    名称 文本 SQLAlwaysOnEndPointProbe
    协议 选择 TCP TCP
    端口 任何未使用的端口 59999
    间隔 尝试探测的间隔时间,以秒为单位 5
    不正常阈值 在将虚拟机视为不正常之前,探测必须连续失败的次数。 2
  3. 选择“确定”以设置运行状况探测。

设置负载均衡规则

  1. 依次选择负载均衡器、“负载均衡规则”和“+添加” 。

  2. 对侦听器负载均衡器规则进行如下设置。

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

    警告

    直接服务器返回是在创建过程中设置的, 无法进行更改。

  3. 选择“确定”以设置侦听器负载均衡规则。

添加 Windows Server 故障转移群集 (WSFC) 的群集核心 IP 地址

WSFC IP 地址也必须在负载均衡器上。

  1. 在 Azure 门户中转到相同的 Azure 负载均衡器。 选择“前端 IP 配置”和“+添加” 。 请使用在群集核心资源中为 WSFC 配置的 IP 地址。 将 IP 地址设置为静态。

  2. 在负载均衡器上,选择“运行状况探测”,然后选择“+添加” 。

  3. 对 WSFC 群集核心 IP 地址运行状况探测进行如下设置:

    设置 说明 示例
    名称 文本 WSFCEndPointProbe
    协议 选择 TCP TCP
    端口 任何未使用的端口 58888
    间隔 尝试探测的间隔时间,以秒为单位 5
    不正常阈值 在将虚拟机视为不正常之前,探测必须连续失败的次数。 2
  4. 选择“确定”以设置运行状况探测。

  5. 设置负载均衡规则。 选择“负载均衡规则”和“+添加” 。

  6. 将群集核心 IP 地址负载均衡规则进行如下设置。

    设置 说明 示例
    名称 文本 WSFCEndPoint
    “前端 IP 地址” 选择地址 使用配置 WSFC IP 地址时所创建的地址。 这不同于侦听器 IP 地址
    协议 选择 TCP TCP
    端口 使用群集 IP 地址的端口。 这是可用的端口,不用于侦听器探测端口。 58888
    后端端口 如果为直接服务器返回设置了“浮动 IP”,不会使用此字段 58888
    探测 为探测指定的名称 WSFCEndPointProbe
    会话持久性 下拉列表
    空闲超时 将 TCP 连接保持打开的分钟数 4
    浮动 IP (直接服务器返回) 已启用

    警告

    直接服务器返回是在创建过程中设置的, 无法进行更改。

  7. 选择“确定”以设置负载均衡规则。

配置侦听器

下一步是在故障转移群集上配置可用性组侦听器。

注意

本教程演示如何创建单个侦听器,该侦听器只具有一个 ILB IP 地址。 若要使用一个或多个 IP 地址创建一个或多个侦听器,请参阅创建可用性组侦听器和负载均衡器 | Azure

可用性组侦听器是 SQL Server 可用性组侦听的 IP 地址和网络名称。 若要创建可用性组侦听器,请执行以下操作:

  1. 获取群集网络资源的名称。

    a. 使用 RDP 连接到托管主副本的 Azure 虚拟机。

    b. 打开故障转移群集管理器。

    c. 选择“网络”节点,并记下群集网络名称。 在 PowerShell 脚本的 $ClusterNetworkName 变量中使用此名称。 在下图中,群集网络名称为“群集网络 1”:

    群集网络名称

  2. 添加客户端接入点。
    客户端接入点是应用程序用来连接到可用性组中的数据库的网络名称。 可在故障转移群集管理器中创建客户端接入点。

    a. 展开群集名称,并单击“角色”。

    b. 在“角色”窗格中,右键单击可用性组名称,并选择“添加资源”>“客户端接入点”。

    客户端接入点

    c. 在“名称”框中,创建新侦听器的名称。 新侦听器的名称是应用程序用来连接 SQL Server 可用性组中数据库的网络名称。

    d. 如果要完成创建侦听器,请单击“下一步”两次,并单击“完成”。 不要在此时使侦听器或资源联机。

  3. 使可用性组群集角色脱机。 在“故障转移群集管理器” 的“角色” 下,右键单击角色,然后选择“停止角色” 。

  4. 配置可用性组的 IP 资源。

    a. 单击“资源”选项卡,并展开创建的客户端接入点。
    客户端接入点处于脱机状态。

    客户端接入点

    b. 右键单击 IP 资源,并单击“属性”。 记下 IP 地址的名称,将其用在 PowerShell 脚本的 $IPResourceName 变量中。

    c. 在“IP 地址”下面,单击“静态 IP 地址”。 将 IP 地址设置为在 Azure 门户中设置负载均衡器地址时所用的同一地址。

    IP 资源

  5. 使 SQL Server 可用性组资源依赖于客户端接入点。

    a. 在故障转移群集管理器中,单击“角色” ,然后单击可用性组。

    b. 在“资源” 选项卡的“其他资源”下,右键单击可用性资源组,然后单击“属性” 。

    c. 在依赖关系选项卡上,添加客户端接入点(侦听器)资源的名称。

    IP 资源

    d. 单击 “确定”

  6. 使客户端接入点资源依赖于 IP 地址。

    a. 在故障转移群集管理器中,单击“角色” ,然后单击可用性组。

    b. 在“资源”选项卡中,右键单击“服务器名称”下面的客户端接入点资源,并单击“属性”。

    IP 资源

    c. 选择“依赖项”选项卡。 验证 IP 地址是否为依赖项。 如果不是,则设置 IP 地址的依赖项。 如果有多个资源列出,请验证 IP 地址具有 OR 而不是 AND 依赖项。 单击 “确定”

    IP 资源

    提示

    可以验证是否正确配置了依赖项。 在故障转移群集管理器中,转到“角色”,右键单击可用性组,单击“更多操作”,然后单击“显示依赖项报告”。 正确配置依赖项后,可用性组将依赖于网络名称,网络名称将依赖于 IP 地址。

  7. 在 PowerShell 中设置群集参数。

    a. 将以下 PowerShell 脚本复制到某个 SQL Server 实例。 请更新环境的变量。

    • $ListenerILBIP 是在 Azure 负载均衡器上为可用性组侦听程序创建的 IP 地址。

    • $ListenerProbePort 是在 Azure 负载均衡器上为可用性组侦听程序配置的端口。

    $ClusterNetworkName = "<MyClusterNetworkName>" # the cluster network name (Use Get-ClusterNetwork on Windows Server 2012 of higher to find the name)
    $IPResourceName = "<IPResourceName>" # the IP Address resource name
    $ListenerILBIP = "<n.n.n.n>" # the IP Address of the Internal Load Balancer (ILB). This is the static IP address for the load balancer you configured in the Azure portal.
    [int]$ListenerProbePort = <nnnnn>
    
    Import-Module FailoverClusters
    
    Get-ClusterResource $IPResourceName | Set-ClusterParameter -Multiple @{"Address"="$ListenerILBIP";"ProbePort"=$ListenerProbePort;"SubnetMask"="255.255.255.255";"Network"="$ClusterNetworkName";"EnableDhcp"=0}
    

    b. 通过在某个群集节点上运行 PowerShell 脚本设置群集参数。

    注意

    如果 SQL Server 实例位于不同的区域,则需要运行 PowerShell 脚本两次。 第一次运行时,请从第一个区域中选择 $ListenerILBIP$ListenerProbePort。 第二次运行时,请从第二个区域中选择 $ListenerILBIP$ListenerProbePort。 每个区域的群集网络名称和群集 IP 资源名称也不同。

  8. 使可用性组群集角色联机。 在“故障转移群集管理器” 的“角色” 下,右键单击角色,然后选择“启动角色” 。

如有必要,重复上述步骤以设置 WSFC 群集 IP 地址的群集参数。

  1. 获取 WSFC 群集 IP 地址的 IP 地址名称。 在“故障转移群集管理器” 中的“群集核心资源” 下,找到“服务器名称” 。

  2. 右键单击“IP 地址” ,并选择“属性” 。

  3. 记下 IP 地址的名称。 该项可能为 Cluster IP Address

  4. 在 PowerShell 中设置群集参数。

    a. 将以下 PowerShell 脚本复制到某个 SQL Server 实例。 请更新环境的变量。

    • $ClusterCoreIP 是在 Azure 负载均衡器上为 WSFC 核心群集资源创建的 IP 地址。 它不同于可用性组侦听程序的 IP 地址。

    • $ClusterProbePort 是在 Azure 负载均衡器上为 WSFC 运行状况探测配置的端口。 它不同于可用性组侦听程序的探测。

    $ClusterNetworkName = "<MyClusterNetworkName>" # the cluster network name (Use Get-ClusterNetwork on Windows Server 2012 of higher to find the name)
    $IPResourceName = "<ClusterIPResourceName>" # the IP Address resource name
    $ClusterCoreIP = "<n.n.n.n>" # the IP Address of the Cluster IP resource. This is the static IP address for the load balancer you configured in the Azure portal.
    [int]$ClusterProbePort = <nnnnn> # The probe port from the WSFCEndPointprobe in the Azure portal. This port must be different from the probe port for the availability group listener probe port.
    
    Import-Module FailoverClusters
    
    Get-ClusterResource $IPResourceName | Set-ClusterParameter -Multiple @{"Address"="$ClusterCoreIP";"ProbePort"=$ClusterProbePort;"SubnetMask"="255.255.255.255";"Network"="$ClusterNetworkName";"EnableDhcp"=0}
    

    b. 通过在某个群集节点上运行 PowerShell 脚本设置群集参数。

警告

可用性组侦听程序运行状况探测端口必须不同于群集核心 IP 地址运行状况探测端口。 在这些示例中,侦听程序端口为 59999,群集核心 IP 地址运行状况探测端口为 58888。 这两个端口都要求允许入站防火墙规则。

设置侦听器端口

在 SQL Server Management Studio 中设置侦听器端口。

  1. 启动 SQL Server Management Studio 并连接到主副本。

  2. 导航到“Always On 高可用性”>“可用性组”>“可用性组侦听器”。

  3. 现在应看到在故障转移群集管理器中创建的侦听器名称。 右键单击侦听器名称,并选择“属性”。

  4. 在“端口”框中,指定可用性组侦听程序的端口号。 默认值为 1433。 选择“确定” 。

现在,在 Resource Manager 模式下运行的 Azure 虚拟机中有了一个 SQL Server 可用性组。

测试与侦听器的连接

若要测试连接,请执行以下操作:

  1. 使用 RDP 连接到同一虚拟网络中不拥有副本的 SQL Server。 可以使用群集中的另一个 SQL Server。

  2. 使用 sqlcmd 实用工具测试连接。 例如,以下脚本通过侦听器与 Windows 身份验证来与主副本建立 sqlcmd 连接:

    sqlcmd -S <listenerName> -E
    

    如果侦听器使用的端口不是默认端口 (1433),请在连接字符串中指定该端口。 例如,以下 sqlcmd 命令连接到位于端口 1435 的侦听器:

    sqlcmd -S <listenerName>,1435 -E
    

SQLCMD 连接自动连接到托管主副本的 SQL Server 实例。

提示

确保指定的端口已在两个 SQL Server 的防火墙上打开。 这两个服务器需要所用 TCP 端口的入站规则。 有关详细信息,请参阅添加或编辑防火墙规则

后续步骤

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