排查 Azure Stack HCI 和 Windows Server 中 SDN 的软件负载均衡器 (SLB) 问题 您所在的位置:网站首页 宽带故障怎么排查的 排查 Azure Stack HCI 和 Windows Server 中 SDN 的软件负载均衡器 (SLB) 问题

排查 Azure Stack HCI 和 Windows Server 中 SDN 的软件负载均衡器 (SLB) 问题

2023-05-15 18:24| 来源: 网络整理| 查看: 265

排查 SDN 的软件负载均衡器问题 项目 05/11/2023

适用于:Azure Stack HCI 版本 22H2 和 21H2;Windows Server 2022、Windows Server 2019

如果已为软件定义的网络 (SDN) 设置软件负载均衡器 (SLB) ,并且数据路径无法通过 SLB 运行,则原因可能有多种。 本文可帮助你识别和排查 SLB for SDN 中的一些常见问题。

有关 SLB 及其管理方法的概述,请参阅什么是 SDN 的软件负载均衡器 (SLB) ?和管理 SDN 的软件负载均衡器。

故障排除工作流

下面是排查 SLB 问题的高级工作流:

检查 SLB 多路复用器 (MUX) VM 的配置状态 排查常见配置状态错误 收集 SLB 状态转储 检查 SLB 多路复用器 VM 的配置状态

必须先检查 SLB MUX VM 的配置状态。 为此,可以使用 Windows Admin Center 或 PowerShell。

Windows 管理中心 PowerShell

按照以下步骤通过Windows Admin Center检查 SLB MUX 的配置状态:

在Windows Admin Center主屏幕上的“所有连接”下,选择要连接到的群集。

在 “工具”下,向下滚动到 “网络 ”区域。 选择“ SDN 基础结构 ”,然后选择“ 摘要”。 如果 SLB 出现问题,可在 负载均衡器 MUX 部分看到它。 如果没有问题,则所有 MUX VM 都将处于 “正常” 状态。

若要通过 PowerShell 检查 MUX 的配置状态,请在任何网络控制器 VM 上运行以下命令:

若要获取网络控制器应用程序设置,请运行以下命令。 从输出中记下 RestName 参数值。

Get-NetworkController

若要将 REST 统一资源标识符 (URI) 分配给参数,请运行以下命令:

$uri="https://"

若要检索网络控制器管理的 SLB MUX VM 的配置状态,请运行以下 cmdlet:

(Get-NetworkControllerLoadBalancerMux -ConnectionUri $uri).Properties.ConfigurationState.DetailedInfo

下面是命令用法的示例输出:

(Get-NetworkControllerLoadBalancerMux -ConnectionUri $uri).Properties.ConfigurationState.DetailedInfo Source Message Code ------ ------- ---- SoftwareLoadBalancerManager Loadbalancer Mux is Healthy. Success SoftwareLoadBalancerManager Loadbalancer Mux is Healthy. Success 排查常见配置状态错误

本部分介绍如何排查 SLB MUX VM 的配置状态不正常的常见错误。

SLB MUX 未连接到 BGP 路由器

当 MUX VM 无法建立边界网关协议 (BGP) 与机架顶部 (ToR) 交换机建立对等互连时,会发生此错误。 请记住,MUX 通过端口 179 上的 BGP 与 ToR 对等互连。

若要解决 MUX VM 和 BGP 路由器连接错误,请执行以下操作:

确保 MUX VM 与 ToR 交换机之间存在连接。 如果使用网络虚拟化,应通过 Hyper-V 网络虚拟化提供程序地址 (HNV PA) 网络进行对等互连。

通过在 MUX VM 上运行以下内容,检查是否已建立连接:

Netstat -anp tcp | findstr 179

如果 MUX 和 ToR 之间没有连接,检查是否可以使用 Test-NetConnection从 MUX 访问 ToR。 如果 MUX 无法访问 ToR,则基础构造网络或 ToR 存在问题。

Test-NetConnection -ComputerName -Port 179

其中:

ToR_IP是 loadBalancerMuxes 资源的一部分。

下面是 LoadBalancerMux 资源的代码片段,其 ToR IP 地址为 192.168.200.1:

Get-NetworkControllerLoadBalancerMux -ConnectionUri $uri|ConvertTo-Json -Depth 10 "peerRouterConfigurations": [ { "localIPAddress": "", "routerName": "BGPGateway-64000-64001", "routerIPAddress": "192.168.200.1", "peerASN": 64001, "id": "be5850aa-4dce-4203-a9f2-f3de25eaacba" }

如果配置了多个交换机,请确保所有这些交换机都与 MUX VM 对等互连。

对于与失败的 BGP 对等互连相关的进一步调试,请在 Test-SDNExpressBGP 任何物理主机上运行脚本:

Install-Module test-sdnexpressbgp Test-SDNExpressBGP -RouterIPAddress 10.10.182.3 -LocalIPAddress 10.10.182.7 -LocalASN 64628 -verbose -ComputerName sa18n22mux02 -force

其中:

RouterIPAddress 是 ToR IP LocalIPAddress 是来自 SLBMUX VM 的 PA IP 地址 LocalASN 是 SDN SLB ASN ComputerName 是 SLBMUX VM 的名称

该脚本停止 MUX VM 上的 SLBMUX 服务,尝试建立连接(失败或正在完成),并在发生故障时提供更多详细信息。

无法访问虚拟服务器

可能会由于虚拟网络错误或虚拟服务器上的身份验证拒绝而出现此错误。 这通常表示网络控制器无法连接到 SLB MUX VM。

若要排查无法访问虚拟服务器的原因,检查:

网络控制器与 MUX VM 之间存在连接。 若要检查连接,请运行以下命令:

Test-NetConnection -ComputerName -Port 8560

MUX 服务在 MUX VM 上运行。 若要检查此操作,请在 MUX VM 上的 PowerShell 会话中运行以下命令。 状态必须为“正在运行”。

Get-Service slbmux

不存在防火墙问题。 确保 MUX VM 上的防火墙未阻止端口 8560。 Test-NetConnection如果上述命令成功,则表示没有防火墙问题。

证书不受信任或证书未授权

如果 SLB MUX 向网络控制器提供的证书存在一些问题,则会出现此错误。

若要标识证书,请在 MUX VM 上运行以下命令:

$cert= get-childitem "cert:\localmachine\my"| where-object {$_.Subject.ToUpper() eq "CN=$NodeFQDN".ToUpper()}

其中:

NodeFQDN 是 MUX VM 的 FQDN。

标识证书后,检查以下内容:

若要测试证书,请运行以下命令:

Test-Certificate $cert

确保证书受网络控制器 VM 的信任。 如果证书是自签名证书,则所有网络控制器 VM 的根存储中必须存在相同的证书。 如果证书是 CA 签名的,则 CA 证书必须存在于所有网络控制器 VM 的根存储中。 若要列出网络控制器 VM 的根存储区中的所有证书,请在所有网络控制器 VM 上运行以下命令:

get-childitem "cert:\localmachine\root" 策略配置失败

此错误可以显示为以下其中一个: PolicyConfigurationFailureonHost、PolicyConfigurationFailureonMux、PolicyConfigurationFailureonVfp 或 PolicyConfigurationFailure。

当网络控制器由于可访问性、证书问题或任何其他问题而无法将策略推送到 SLB MUX VM 或 Hyper-V 主机时,会发生此错误。

若要排查策略配置失败错误,请先检查是否存在任何可访问性和证书问题。 请参阅前面部分中的步骤: SLB MUX 未连接到 BGP 路由器、无法访问 虚拟服务器、 证书不受信任或证书未授权。

如果没有任何可访问性和证书问题,请执行以下步骤以检查网络控制器与 SLB MUX VM 之间的连接,以及主机上的 SLB 主机代理:

检查网络控制器与 SLB MUX VM 之间的连接。 请记住,网络控制器 (SlbManager 服务) 连接到端口 8560 上的 MUX。 网络控制器启动连接。 各种虚拟 IP 地址 (VIP) 配置、源网络地址转换 (SNAT) 端口等。通过此连接推送。

若要检查网络控制器与 SLB MUX 之间的连接,请在 netstat SLB MUX VM 上运行。

下面是命令用法的示例输出:

netstat -anp tcp | findstr 8560 TCP 0.0.0.0:8560 0.0.0.0:0 LISTENING TCP 100.88.79.12:8560 100.88.79.9:59977 ESTABLISHED

检查网络控制器与 SLB 主机代理之间的连接。 请记住,SLB 主机代理连接到端口 8571 上的网络控制器 (SlbManager 服务) 。 通过此连接推送各种 SLB 策略。

若要检查网络控制器与 SLB 主机代理之间的连接,请在物理主机上运行 netstat 。

下面是命令用法的示例输出:

netstat -anp tcp | findstr 8571 TCP 100.88.79.128:56258 100.88.79.9:8571 ESTABLISHED 数据路径连接问题

即使 SLB MUX VM 处于正常配置状态,也可能遇到数据路径连接问题。 这意味着 SLB 流量在途中的某个位置被丢弃。 若要确定丢弃流量的位置,需要收集数据路径跟踪。 在执行此操作之前,请确保以下各项:

ToR 开关可以查看播发的 VIP。 由于已设置负载均衡器以实现负载均衡、入站 NAT、出站 NAT 或这些负载均衡器的组合,因此负载均衡器 VIP 将播发到 ToR。 如果正在播发 VIP,则使用开关 CLI 检查。

不得在 ToR 或任何物理防火墙上阻止 SLBM VIP。 这是在网络控制器的 LoadBalancerManager/config 资源中指定为 loadBalancerManagerIPAddress 的 IP 地址。 当入站数据包传入且 MUX VM 确定要向其发送数据包的正确后端 IP 时,它会发送源 IP 地址为 MUX SLBM VIP 的数据包。 在某些情况下,可能会将其删除到 ToR 上。

SLB 运行状况探测已启动。 如果已配置 SLB 运行状况探测,请确保至少有一个后端 VM 处于活动状态,并且能够响应运行状况探测。 还可以通过 SLB 状态转储获取探测的状态,如本文稍后所述。

后端 VM 内的防火墙不会阻止流量。 确保后端 VM 中的主机防火墙不会阻止传入的 SLB 流量。

SDN 网络安全组不会阻止流量。 你可能直接在后端 NIC 或子网上配置了一些网络安全组。 确保网络安全组不会阻止传入的 SLB 流量。

若要通过 PowerShell 检查网络安全组,请在计算机上运行以下命令,这可以向网络控制器发出 REST 命令:

若要获取 NetworkInterface 资源的详细信息,请运行以下命令:

Get-NetworkControllerNetworkInterface –ConnectionUri -ResourceId |ConvertTo-Json –Depth 10

若要获取 VirtualNetworkSubnet 资源的详细信息,请运行以下命令:

Get-NetworkControllerVirtualNetwork –ConnectionUri -ResourceId |ConvertTo-Json –Depth 10

若要获取 LogicalNetworkSubnet 资源的详细信息,请运行以下命令:

Get-NetworkControllerLogicalNetwork –ConnectionUri -ResourceId |ConvertTo-Json –Depth 10

上述命令的输出具有 一个 部分。AccessControlList 如果已附加到这些资源,AccessControlList则可以检查。 如果是,可以运行以下命令来验证 AccessControlList 的详细信息,以检查是否AccessControlList阻止了任何 SLB 流量:

Get-NetworkControllerAccessControlList –ConnectionUri - ResourceId |ConvertTo-Json –Depth 10

还可以使用以下Windows Admin Center扩展来查找所有这些信息:

LNET 的逻辑网络详细信息 VNET 虚拟网络详细信息 ACL 的网络安全组详细信息 收集 SLB 状态转储

如有必要,可以创建 SLB 状态转储,并针对任何错误检查。 此外,还可以与 Microsoft 共享状态转储,以便进行高级故障排除。 SLB 状态转储提供有关所有 VIP 的端到端信息。 可以运行 DumpSlbRestState.ps1 脚本 来收集 SLB 状态转储。 以下部分介绍可在状态转储中检查的各种错误方案。

检查 MuxAdvertisedRoutes 是否为空或缺少受影响的 VIP

下面是一个示例,其中 MuxAdvertisedRoutes 为空。 这意味着 MUX 不会播发到 ToR 的任何路由。 在这种情况下,所有 VIP 都已关闭。

"name": "MuxRoutes", "description": "Mux Routes", "dataRetrievalFailed": false, "dataUnits": [ { "value": [ "MuxAdvertisedRouteInfo: MuxId=3951dc43-4764-4c65-a4b5-35558c479ce6 MuxDipEndpoint=[172.24.47.12:8560] MuxAdvertisedRoutes=[]", "MuxAdvertisedRouteInfo: MuxId=a150f826-6069-4da7-9771-642e80a45c8d MuxDipEndpoint=[172.24.47.13:8560] MuxAdvertisedRoutes=[]"

如果路由为空,则问题可能是MUX-ToR对等互连或 SLBM 未推送正确的目标状态。

在其他情况下,路由仅缺少几个 VIP,导致连接失败。 如果是这样,则问题在于 SLBM 未推送目标状态。

缓解

移动 SlbManager 服务和 ControllerService 的主服务器并重启主机代理。

若要移动 SlbManager 和 ControllerService 的主节点,请在网络控制器 VM 上运行以下命令:

若要确定网络控制器服务模块将哪个节点用作主节点,请运行以下命令:

Get-NetworkControllerReplica

找到 SlbManagerService 和 ControllerService 的 NodeName。 转到相应的节点并运行以下命令:

Get-Process Sdnctlr| Stop-Process and Get-Process SdnSlbm | Stop-Process

这会在不同的网络控制器 VM 上重启进程。

若要重启主机代理,请在每个物理主机上运行以下命令:

Restart-Service nchostagent --force Start-Service slbhostagent 检查 VipAddress 的编程和连接状态

SLB 状态转储的这一部分提供有关 VIP 的详细信息。 它提供 SLBM、MUX 和主机上的 VIP 状态。 在主机下,它会转储当前属于 VIP 的所有 dip。 确保列表与配置一致。 如果问题出在出站连接上,检查 SNAT 配置,并确保 MUX 和主机之间的端口分配一致。

"name": "192.168.102.1", "value": [ "Programming and Connectivity state for VipAddress: 192.168.102.1", 收集数据路径跟踪

如果上述方法均未提供解决方法,请收集数据路径日志并发送给 Microsoft。

收集以下日志:

网络控制器数据收集日志。 有关如何收集 SDN 日志的信息,请参阅 收集软件定义的网络日志。

应仅在短时间内收集以下日志。 启动日志记录,重现方案,然后停止日志记录。

MUX 跟踪。 必须在 MUX VM 上收集这些跟踪。 按照以下步骤收集跟踪:

若要开始日志记录,请运行以下命令:

netsh trace start tracefile=c:\mux.etl globallevel=5 provider=`{645b8679-5451-4c36-9857-a90e7dbf97bc`} provider=`{6C2350F8-F827-4B74-AD0C-714A92E22576`} ov=yes report=disabled

重现方案。

若要停止日志记录,请运行以下命令:

netsh trace stop

若要将 ETL 格式的跟踪文件转换为指定格式,请运行以下命令:

netsh trace convert input= ov=yes

SLB 主机代理跟踪。 必须在物理主机上收集这些跟踪。 按照以下步骤收集跟踪:

若要开始日志记录,请运行以下命令:

netsh trace start tracefile=c:\slbHA.etl globallevel=5 provider=`{2380c5ee-ab89-4d14-b2e6-142200cb703c`} ov=yes report=disabled

重现方案。

若要停止日志记录,请运行以下命令:

netsh trace stop

若要将 ETL 格式的跟踪文件转换为指定格式,请运行以下命令:

netsh trace convert input= ov=yes

VFP 跟踪。 必须在存在 MUX VM 和租户 VM 的物理主机上收集这些跟踪。 按照以下步骤收集跟踪:

若要开始日志记录,请运行以下命令:

Netsh trace start scenario=virtualization capture=yes capturetype=both tracefile=vfp.etl ov=yes report=di

重现方案。

若要停止日志记录,请运行以下命令:

netsh trace stop

若要将 ETL 格式的跟踪文件转换为指定格式,请运行以下命令:

netsh trace convert input= ov=yes 后续步骤 请联系 Microsoft 支持


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

      专题文章
        CopyRight 2018-2019 实验室设备网 版权所有