为 FCI VNN 侦听器配置 Azure 负载均衡器 - Azure VM 上的 SQL Server
提示
部署可用性组的方法有很多种。 通过在同一 Azure 虚拟网络中的多个子网中创建 SQL Server 虚拟机 (VM),可以简化部署,使 Always On 可用性组不再需要 Azure 负载均衡器或分布式网络名称 (DNN)。 如果已在单个子网中创建可用性组,则可以将其迁移到多子网环境。
在 Azure 虚拟机上,群集使用负载均衡器来保存每次都需要位于一个群集节点上的 IP 地址。 在此解决方案中,负载均衡器保留 Azure 中的群集化资源使用的虚拟网络名称 (VNN) 的 IP 地址。
本文介绍了如何使用 Azure 负载均衡器服务配置负载均衡器。 负载均衡器会使用 Azure VM 上的 SQL Server 将流量路由到你的故障转移群集实例,以实现高可用性和灾难恢复 (HADR)。
对于 SQL Server 2019 CU2 及更高版本的替代连接选项,请考虑改用分布式网络名称 (DNN)。 DNN 提供了简化的配置和改进的故障转移。
先决条件
在完成本文中的步骤之前,应已做好以下准备:
- 确定 Azure 负载均衡器是合适的 FCI 连接选项。
- 配置了 FCI。
- 安装了最新版本的 PowerShell。
创建负载均衡器
可以创建以下任一类型的负载均衡器:
内部:只能从网络内部的专用资源访问内部负载均衡器。 配置内部负载均衡器及其规则时,请将 FCI IP 地址用作前端 IP 地址。
外部:外部负载均衡器可将来自公共资源的流量路由到内部资源。 配置外部负载均衡器时,不能使用公共 IP 地址(如 FCI IP 地址)。
若要使用外部负载均衡器,请以逻辑方式在 FCI 所在的同一子网中分配一个不与其他任何 IP 地址冲突的 IP 地址。 使用此地址作为负载均衡规则的前端 IP 地址。
若要创建负载均衡器,请执行以下操作:
在 Azure 门户中,转到包含虚拟机的资源组。
选择 添加 。 在 Azure 市场中搜索“负载均衡器”。 选择“负载均衡器”。
选择“创建”。
在“创建负载均衡器”中的“基本信息”选项卡上,使用以下值设置负载均衡器:
- 订阅:Azure 订阅。
- 资源组:包含你的虚拟机的资源组。
- 名称:标识负载均衡器的名称。
- 区域:包含你的虚拟机的 Azure 位置。
- SKU:标准。
- 类型:公共或内部。 内部负载均衡器是可以从虚拟网络内部访问的。 大多数 Azure 应用程序可以使用内部负载均衡器。 如果应用程序需要通过 Internet 直接访问 SQL Server,请使用公共负载均衡器。
选择“下一步: 前端 IP 配置”。
选择“添加前端 IP 配置”。
使用以下值设置前端 IP 地址:
- 名称:标识前端 IP 配置的名称。
- 虚拟网络:虚拟机所在的网络。
- 子网:虚拟机所在的同一子网。
- 分配:静态。
- IP 地址:你分配给群集化网络资源的 IP 地址。
- 可用性区域:要将 IP 地址部署到的可选可用性区域。
选择“添加”以创建前端 IP 地址。
选择“查看 + 创建”以创建负载均衡器。
配置后端池
返回到包含虚拟机的 Azure 资源组,找到新的负载均衡器。 可能需要在资源组中刷新视图。 选择负载均衡器。
依次选择“后端池”、“+ 添加”。
对于“名称”,请提供后端池的名称。
在“后端池配置”处,选择“NIC”。
选择“添加”将该后端池与包含 VM 的可用性集进行关联。
在“虚拟机”下,选择将作为群集节点参与操作的虚拟机。 请务必包括将承载 FCI 的所有虚拟机。
仅添加每个 VM 的主 IP 地址。 请勿添加任何次要 IP 地址。
选择“添加”将虚拟机添加到后端池。
选择“保存”以创建后端池。
配置运行状况探测
在负载均衡器的窗格上,选择“运行状况探测”。
在“添加运行状况探测”窗格上, 设置以下参数:
- 名称:运行状况探测的名称。
- 协议:TCP。
- 端口:准备 VM 时你在防火墙中为运行状况探测创建的端口。 本文中的示例使用的是 TCP 端口 59999。
- 间隔:5 秒。
选择 添加 。
设置负载均衡规则
在负载均衡器的窗格上,选择“负载均衡规则”。
选择 添加 。
设置以下参数:
- 名称:负载均衡规则的名称。
- 前端 IP 地址:配置前端时设置的 IP 地址。
- 后端池:包含负载均衡器目标虚拟机的后端池。
- HA 端口:对于 TCP 和 UDP 协议,在所有端口上启用负载均衡。
- 协议:TCP。
- 端口:SQL Server TCP 端口。 默认值为 1433。
- 后端端口:与启用“浮动 IP (直接服务器返回)”时使用的“端口”值相同的端口。
- 运行状况探测:前面配置的运行状况探测。
- 会话持久性:无。
- 空闲超时(分钟):4。
- 浮动 IP (直接服务器返回) :已启用。
选择“保存”。
配置群集探测
在 PowerShell 中设置群集探测的端口参数。
使用环境中的值更新以下脚本中的变量。 从脚本中删除尖括号(<
和 >
)。
$ClusterNetworkName = "<Cluster Network Name>"
$IPResourceName = "<SQL Server FCI IP Address Resource Name>"
$ILBIP = "<n.n.n.n>"
[int]$ProbePort = <nnnnn>
Import-Module FailoverClusters
Get-ClusterResource $IPResourceName | Set-ClusterParameter -Multiple @{"Address"="$ILBIP";"ProbePort"=$ProbePort;"SubnetMask"="255.255.255.255";"Network"="$ClusterNetworkName";"EnableDhcp"=0}
下表介绍了需要更新的值:
变量 | 值 |
---|---|
ClusterNetworkName |
Windows Server 故障转移群集的网络名称。 在“故障转移群集管理器”>“网络”中,右键单击该网络并选择“属性”。 正确的值位于“常规”选项卡的“名称”下。 |
IPResourceName |
SQL Server FCI IP 地址的资源名称。 在“故障转移群集管理器”>“角色”中“SQL Server FCI”角色的“服务器名称”下,右键单击 IP 地址资源并选择单击“属性”。 正确的值位于“常规”选项卡的“名称”下。 |
ILBIP |
内部负载均衡器的 IP 地址。 此地址在 Azure 门户中配置为内部负载均衡器的前端地址。 这也是 SQL Server FCI 的 IP 地址。 可在“故障转移群集管理器”中找到该地址,它与 IPResourceName 的值位于同一属性页。 |
ProbePort |
在负载均衡器的运行状况探测中配置的探测端口。 任何未使用的 TCP 端口都有效。 |
SubnetMask |
群集参数的子网掩码。 它必须是 TCP/IP 广播地址:255.255.255.255 。 |
设置群集探测后,可在 PowerShell 中看到所有群集参数。 运行此脚本:
Get-ClusterResource $IPResourceName | Get-ClusterParameter
修改连接字符串
对于支持它的客户端,请将 MultiSubnetFailover=True
添加到连接字符串。 虽然不需要 MultiSubnetFailover
连接选项,但它提供了更快进行子网故障转移的优势。 这是因为客户端驱动程序会尝试为每个 IP 地址并行打开一个 TCP 套接字。 客户端驱动程序会等待第一个 IP 地址通过成功进行响应。 成功响应后,客户端驱动程序会使用该 IP 地址进行连接。
如果客户端不支持 MultiSubnetFailover
参数,则可以修改 RegisterAllProvidersIP
和 HostRecordTTL
设置,防止故障转移后连接延迟。
使用 PowerShell 修改 RegisterAllProvidersIp
和 HostRecordTTL
设置:
Get-ClusterResource yourFCIname | Set-ClusterParameter RegisterAllProvidersIP 0
Get-ClusterResource yourFCIname | Set-ClusterParameter HostRecordTTL 300
若要了解详细信息,请参阅有关 SQL Server 中侦听器连接超时的文档。
提示
- 将连接字符串中的
MultiSubnetFailover
参数设置为true
,即使对于跨单个子网的 HADR 解决方案也是如此。 此设置支持将来跨子网,而无需更新连接字符串。 - 默认情况下,客户端缓存 20 分钟的群集 DNS 记录。 通过减少
HostRecordTTL
,可以减少缓存的记录的生存时间 (TTL)。 然后,旧客户端可以更快地重新连接。 因此,减少HostRecordTTL
设置可能会增加流向 DNS 服务器的流量。
测试故障转移
测试群集化资源的故障转移以验证群集功能:
- 使用远程桌面协议 (RDP) 连接到 SQL Server 群集节点之一。
- 打开“故障转移群集管理器”。 选择“角色”。 观察哪个节点拥有 SQL Server FCI 角色。
- 右键单击“SQL Server FCI”角色。
- 选择“移动”,再选择“最佳节点” 。
“故障转移群集管理器”显示该角色,其资源脱机。 然后资源会移动,并在另一个节点上恢复联机。
测试连接
若要测试连接,请登录到同一虚拟网络中的另一个虚拟机。 打开“SQL Server Management Studio”并连接到 SQL Server FCI 名称。
注意
如果需要,可以下载 SQL Server Management Studio。
后续步骤
若要了解更多信息,请参阅以下文章: