准备虚拟机用于 FCI(Azure VM 上的 SQL Server)

适用于:Azure VM 上的 SQL Server

本文介绍如何准备 Azure 虚拟机 (VM) 以将其与 SQL Server 故障转移群集实例一起使用 (FCI)。 根据 FCI 存储解决方案的不同,配置设置会有所不同,因此请验证是否选择了正确的配置以满足环境和业务需求。

若要了解详细信息,请参阅对 Azure VM 上的 SQL Server 的 FCI群集最佳做法的概述。

先决条件

  • 一个 Microsoft Azure 订阅。 开始使用 Azure 试用帐户
  • Azure 虚拟机上的 Windows 域或使用虚拟网络配对扩展到 Azure 的本地活动目录。
  • 有权限在 Azure 虚拟机和 Active Directory 中创建对象的帐户。
  • 能为以下组件提供足够 IP 地址空间的 Azure 虚拟网络和一个或多个子网:
    • 两台虚拟机
    • Windows 故障转移群集的 IP 地址
    • 每个 FCI 的 IP 地址
  • 在 Azure 网络上配置的、指向域控制器的 DNS。

选择 FCI 存储选项

虚拟机的配置设置取决于计划用于 SQL Server 故障转移群集实例的存储选项。 准备虚拟机之前,请查看可用的 FCI 存储选项,并选择最适合环境和业务需求的选项。 然后,根据所选的存储,在本文中仔细选择适当的 VM 配置选项。

选择 VM 可用性

故障转移群集功能要求将虚拟机放置在可用性集可用性区域中。

请仔细选择与预期群集配置匹配的 VM 可用性选项:

  • Azure 共享磁盘:如果使用高级 SSD 或超级磁盘,可用性选项会有所不同:
    • 高级 SSD 区域冗余存储 (ZRS) :不同区域中的可用性区域高级 SSD ZRS 在所选区域中的三个 Azure 可用性区域同步复制 Azure 托管磁盘。 可以将故障转移群集的 VM 部分放置在不同的可用性区域中,帮助实现可提供 99.99% 的 VM 可用性 SLA 的区域冗余 SQL Server FCI。 由于数据的跨区域复制,ZRS 的磁盘延迟较高。
    • 高级 SSD 本地冗余存储 (LRS) :不同容错域/更新域中的可用性集,用于实现高级 SSD LRS。 还可以选择将 VM 放在邻近放置组中,以使它们彼此靠近。 结合使用可用性集和邻近放置组,可为共享磁盘提供最低的延迟(因为数据在一个数据中心内本地复制),并提供 99.95% 的 VM 可用性 SLA。
    • 超级磁盘本地冗余存储 (LRS)可用性区域,但必须将 VM 放在同一可用性区域中。 超级磁盘提供最低的磁盘延迟,最适合 IO 密集型工作负载。 由于 FCI 的所有 VM 都位于同一可用性区域中,因此 VM 可用性仅为 99.9%。
  • 高级文件共享可用性集可用性区域
  • 存储空间直通可用性集

重要

创建虚拟机后无法设置或更改可用性集。

子网

对于 Azure VM 上的 SQL Server,可以选择将 SQL Server VM 部署到单个子网或多个子网。

将 VM 部署到多个子网可以利用群集或 IP 地址的依赖关系,并在连接到故障转移群集实例时匹配本地体验。 建议对 Azure VM 上的 SQL Server 使用多子网方法,以简化可管理性并缩短快速故障转移时间。

将 VM 部署到单个子网需要额外依赖 Azure 负载均衡器或分布式网络名称 (DNN) 以将流量路由到 FCI。

如果将 SQL Server VM 部署到多个子网,请按照本部分中的步骤创建包含其他子网的虚拟网络,然后在创建 SQL Server VM 后,将这些子网中的辅助 IP 地址分配给这些 VM。 将 SQL Server VM 部署到单个子网不需要任何其他网络配置。

将两个虚拟机放在具有(可用于这两个虚拟机和最终可能安装到群集的所有 FCI 的)足够 IP 地址的单个子网中。 此方法需要额外的组件来将连接路由到 FCI,例如 Azure 负载均衡器或分布式网络名称 (DNN)。

如果选择将 SQL Server VM 部署到单个子网,请查看 Azure 负载均衡器和 DNN 连接选项之间的差异,确定哪个选项最适合你,然后再为 FCI 准备环境的其余部分。

将 SQL Server VM 部署到单个子网不需要任何其他网络配置。

配置 DNS

将虚拟网络配置为使用你的 DNS 服务器。 首先,确定 DNS IP 地址,然后将其添加到虚拟网络。

标识 DNS IP 地址

标识 DNS 服务器的 IP 地址,然后将其添加到虚拟网络配置。 本部分演示如何在 DNS 服务器位于 Azure 中的虚拟机上时识别 DNS IP 地址。

若要在Azure 门户中标识 DNS 服务器 VM 的 IP 地址,请执行以下步骤:

  1. Azure 门户中转到资源组,并选择 DNS 服务器 VM。
  2. 在“VM”页上,在“设置”窗格中选中“网络”。
  3. 记下“NIC 专用 IP”地址,因为这是 DNS 服务器的 IP 地址。 在示例图像中,专用 IP 地址为 10.38.0.4。

在 DC-VM-1 页面上,在“设置”窗格中选择“网络”,然后记下 NIC 专用 IP 地址。使用此 IP 地址作为 DNS 服务器。

配置虚拟网络 DNS

将虚拟网络配置为使用此 DNS 服务器 IP 地址。

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

  1. Azure 门户中转到资源组,并选择虚拟网络。
  2. 选择“设置”下的“DNS 服务器”,然后选择“自定义”。
  3. 在“IP 地址”字段中输入前面标识的专用 IP 地址,如 10.38.0.4,或提供内部 DNS 服务器的内部 IP 地址。
  4. 选择“保存”。

屏幕截图显示了 Azure 门户,其中在“设置”下选择了“DNS 服务器”。

创建虚拟机

配置 VM 虚拟网络并选择 VM 可用性后,即可创建虚拟机。 可以选择使用已安装或未安装 SQL Server 的 Azure 市场映像。 但是,如果为 Azure VM 上的 SQL Server 选择映像,则需要先从虚拟机中卸载 SQL Server,然后才能配置故障转移群集实例。

注意

在部署 SQL Server VM 之前,请务必检查所选 FCI 存储选项支持的 SQL Server 版本。

NIC 注意事项

在 Azure VM 来宾故障转移群集上,建议为每个服务器(群集节点)设置一个 NIC。 Azure 网络具有物理冗余,这使得在 Azure IaaS VM 来宾群集上不需要额外的 NIC。 虽然群集验证报告将发出警告,指出节点只能在单个网络上访问,但在 Azure IaaS VM 来宾故障转移群集上可以安全地忽略此警告。

将两个虚拟机放在以下位置:

  • 在可用性集所在的同一个 Azure 资源组中(如果使用的是可用性集)。
  • 在与域控制器和 DNS 服务器相同的虚拟网络上,或在与域控制器有合适连接的虚拟网络上。
  • 在 Azure 可用性集或可用性区域中。

可以通过使用“”预安装或“”预安装SQL Server 的映像创建 Azure 虚拟机。 如果选择 SQL Server 映像,则需要在安装故障转移群集实例之前手动卸载 SQL Server 实例。

分配辅助 IP 地址

如果已将 SQL Server VM 部署到单个子网,请跳过此步骤。

如果已将 SQL Server VM 部署到多个子网以改善与 FCI 的连接,需要将辅助 IP 地址分配给每个 VM。

将辅助 IP 地址分配给要用于故障转移群集实例网络名称的每个 SQL Server VM;对于 Windows Server 2016 和更早的版本,还要将辅助 IP 地址分配给每个 SQL Server VM 作为群集网络名称。 这样做消除了使用 Azure 负载均衡器的需要,以及位于单个子网环境中的要求。

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

如果你使用 Windows Server 2016 和更早的版本,请按照本部分中的步骤为 FCI 网络名称和群集的每个 SQL Server VM 分配辅助 IP 地址。

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

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

  1. Azure 门户中转到资源组,并选择第一个 SQL Server VM。

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

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

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

    IP 配置

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

    1. 指定 Windows 群集 IP 地址的名称,例如为 Windows 2016 及更早版本指定 windows-cluster-ip。 如果使用 Windows Server 2019 或更高版本,请跳过此步骤。
    2. 将“分配”设置为“静态”。
    3. 输入与 SQL Server VM 位于同一子网 (SQL-subnet-1) 中的未使用的 IP 地址,例如 10.38.1.10
    4. 将“公共 IP 地址”保留为默认值“解除关联”。
    5. 选择“确定”完成 IP 配置的添加。

    通过输入第一个 SQL Server VM 的子网中的已使用 IP 地址来添加群集 IP

  5. 再次选择“+ 添加”以便为 FCI 网络名称(其名称类似 FCI-network-name配置其他 IP 地址),并再次指定 SQL-subnet-1 中未使用的 IP 地址,例如 10.38.1.11

    再次选择“+ 添加”以便为可用性组侦听程序(其名称类似 availability-group-listener)配置其他 IP 地址,并再次使用 SQL-subnet-1 中未使用的 IP 地址,例如 10.31.1.11

  6. 为第二个 SQL Server VM 重复上述步骤。 分配位于 SQL-subnet-2 中的两个未使用的辅助 IP 地址。 使用下表中的值来添加 IP 配置(但这些 IP 地址只是示例,你的地址可能不同):

    字段 输入 输入
    名称 windows-cluster-ip FCI-network-name
    Allocation 静态 静态
    IP 地址 10.38.2.10 10.38.2.11

卸载 SQL Server

在创建 FCI 的过程中,会将 SQL Server 作为群集实例安装到故障转移群集。 如果在没有 SQL Server 的情况下使用 Azure 市场映像部署了虚拟机,则可以跳过此步骤。 如果部署了预安装 SQL Server 的映像,则需要从 SQL Server VM 中删除扩展,然后卸载 SQL Server。

删除 SQL IaaS 代理扩展

Azure 市场中的 SQL Server VM 映像会自动注册 SQL IaaS 代理扩展。 在卸载预安装的 SQL Server 实例之前,必须先从 SQL Server VM 中删除扩展

若要使用 Azure PowerShell 从 SQL Server VM 中删除扩展,请使用以下示例模式:

Remove-AzSqlVM -ResourceGroupName <resource_group_name> -Name <SQL VM resource name>

卸载 SQL Server

删除扩展后,可以卸载 SQL Server。 在每个虚拟机上执行以下步骤:

  1. 使用 RDP 或 Bastion 连接到虚拟机。 首次使用 RDP 或 Bastion 连接到虚拟机时,系统会提示是否允许在网络上发现该电脑。 选择

  2. 打开控制面板中的“程序和功能”。

  3. 在“程序和功能”中,右键单击“Microsoft SQL Server 201_ (64 位)”,然后选择“卸载/更改” 。

  4. 选择“删除”。

  5. 选择默认实例。

  6. 删除“数据库引擎服务”、“Analysis Services”和“Reporting Services - 本机”。 请勿删除“共享功能”下的任何内容。 此时会显示以下屏幕截图中所示的内容:

    显示选择哪些功能来卸载 SQL Server 的屏幕截图。

  7. 依次选择“下一步”、“删除”。

  8. 成功删除实例后,请重启虚拟机。

打开防火墙

在每个虚拟机上,打开 SQL Server 使用的 Windows 防火墙 TCP 端口。 默认情况下,SQL Server 使用端口 1433,但如果你在环境中更改了此设置,请打开已配置 SQL Server 实例使用的端口。 端口 1433 会在从 Azure 市场部署的 SQL Server 映像上自动打开。

如果在单子网方案中使用负载均衡器,还需要打开运行状况探测使用的端口。 默认情况下,运行状况探测使用端口 59999,但它可以使用你创建负载均衡器时指定的任何 TCP 端口。

下表详细说明了可能需要打开的端口,具体取决于 FCI 配置:

用途 端口 注释
SQL Server TCP 1433 SQL Server 的默认实例正常使用的端口。 如果使用了库中的某个映像,此端口会自动打开。

用于:所有 FCI 配置。
运行状况探测 TCP 59999 任何打开的 TCP 端口。 将负载均衡器运行状况探测和群集配置为使用此端口。

用于:单子网方案中带有负载均衡器的 FCI。
文件共享 UDP 445 文件共享服务使用的端口。

用于:具有高级文件共享的 FCI。

加入域

还需要将虚拟机加入到域。 可以通过使用快速启动模板来执行此操作。

查看存储配置

从 Azure 市场创建的虚拟机随附附加存储。 如果计划使用高级文件共享或 Azure 共享磁盘来配置 FCI 存储,则可以删除附加存储以节省成本,因为本地存储不用于故障转移群集实例。 但是,可以对存储空间直通 FCI 解决方案使用附加存储,因此在这种情况下删除它们可能没有帮助。 查看 FCI 存储解决方案,确定删除附加存储是否适合节省成本。

后续步骤

现在已准备好虚拟机环境,接下来可以配置故障转移群集实例。

在下面选择一个指南用于配置适用于业务的 FCI 环境:

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