本主题帮助你排查 Windows Server 2019、Windows Server 2016 和 Azure Stack HCI 中包含的软件定义的网络 (SDN) 技术的方案问题。 大多数用户都可以使用这些解决方法来解决其遇到的问题。
故障排除清单
检查引用 ACL 的 IP 配置和虚拟子网
- 在托管两个受影响租户虚拟机 (VM) 的两台 Hyper-V 主机上运行
Get-ProviderAddress命令。 然后,从 Hyper-V 主机运行Test-LogicalNetworkConnection或ping -c <compartment>,以验证 HNV 提供商逻辑网络上的连接。 - 确保 Hyper-V 主机上的,以及 Hyper-V 主机之间的任何第 2 层交换设备上的 MTU 设置正确。 在所有受影响的 Hyper-V 主机上运行
Test-EncapOverheadValue。 另外,检查主机之间所有第 2 层交换机上的 MTU 是否设置为至少 1,674 字节,以考虑到 160 字节的最大开销。 - 如果没有提供商地址 (PA) 或者客户地址 (CA) 连接已断开,请进行检查以确保已接收网络策略。 运行
Get-PACAMapping,确定是否正确建立了创建覆盖虚拟网络所需的封装规则和 CA-PA 映射。 - 验证网络控制器主机代理是否已连接到网络控制器。 为此,请运行
netstat -anp tcp |findstr 6640。 - 验证
HKLM注册表项中的“Host ID”(主机 ID)是否与托管租户 VM 的服务器资源的“实例 ID”匹配。 - 验证“端口配置文件 ID”是否与租户 VM 的 VM 网络接口的“实例 ID”匹配。
检查网络控制器与 Hyper-V 主机之间的网络连接
运行 netstat 命令,验证网络编码 (NC) 主机代理与网络控制器节点之间是否建立了三个连接。 另外,验证 Hyper-V 主机上是否有一个侦听套接字。 有关详细信息,请参阅以下列表。
- 用于在 Hyper-V 主机(NC 主机代理服务)上进行侦听的端口 TCP:6640
- 从 Hyper-V 主机 IP(端口 6640)到 NC 节点 IP(临时端口,端口号大于 32000)建立的两个连接
- 从 Hyper-V 主机 IP(临时端口)到网络控制器 REST IP(端口 6640)建立的一个连接
检查主机代理服务
网络控制器与 Hyper-V 主机上的两个主机代理服务(SLB 主机代理和 NC 主机代理)通信。 这些服务中的一个或两个可能未运行。 检查这两个服务的状态,如果未运行,请将其重启:
Get-Service SlbHostAgent
Get-Service NcHostAgent
# Start
Start-Service NcHostAgent
Start-Service SlbHostAgent
检查网络控制器的运行状况
如果未建立三个连接,或者网络控制器看似无响应,请检查所有节点和服务模块是否均已启动并正在运行:
# Prints a DIFF state (status is automatically updated if state is changed) of a particular service module replica
Debug-ServiceFabricNodeStatus [-ServiceTypeName] <Service Module>
下面是网络控制器服务模块:
- ControllerService
- ApiService
- SlbManagerService
- ServiceInsertion
- FirewallService
- VSwitchService
- GatewayManager
- FnmService
- HelperService
- UpdateService
验证 ReplicaStatus 是否为 Ready,以及 HealthState 是否为 OK。 在使用多节点网络控制器的生产部署中,还可以查看每个服务主要位于哪个节点,并检查服务的单个副本的状态:
Get-NetworkControllerReplica
验证每个服务的 Replica Status 是否为 Ready。
检查 HNV 提供程序逻辑网络上的 MTU 和 Jumbo Frame 支持
HNV 提供商逻辑网络中的另一个常见问题是,没有为物理网络端口或以太网卡配置足够大的 MTU 来处理 VXLAN(或 NVGRE)封装产生的开销。
检查租户 VM 网络适配器连接
分配给来宾 VM 的每个 VM 网络适配器有专用客户地址 (CA) 与 HNV 提供商地址 (PA) 空间之间的 CA-PA 映射。 这些映射保存在每个 Hyper-V 主机上的 OVSDB 服务器表中。 可运行以下 cmdlet 找到这些映射:
# Get all known PA-CA Mappings from this particular Hyper-V Host
Get-PACAMapping
与配置状态相关的常见错误和解决方法
错误代码:HostUnreachable
错误消息:
多路复用器不正常(常见情况是 BGPRouter 已断开连接)
发生此错误的原因是路由和远程访问服务(RRAS)(BGP VM)或机架顶部(ToR)交换机上的可信边界网关协议(CBGP)对等互连无法访问或无法成功对等互连。 检查软件负载均衡器多路复用器资源和 BGP 对等方(ToR 或 RRAS VM)上的 BGP 设置。
错误代码:CertificateNotTrusted 和 CertificateNotAuthorized
错误消息:
由于网络或证书错误,无法连接到多路复用器
若要解决此问题,请检查错误消息代码中提供的数值代码。 此代码对应于 winsock 错误代码。 证书错误是精细的。 例如,无法验证证书,或者证书未获得授权。
错误代码:HostNotConnectedToController
错误消息:
SLB 主机代理未连接
若要排查此问题,请执行以下步骤:
- 验证软件负载均衡器 (SLB) 主机代理服务是否正在运行。
- 参考 SLB 主机代理日志(自动运行)来确定原因。 如果软件负载均衡器管理器 (SLBM) (NC) 拒绝了主机代理提供的证书,则运行状态可能会显示略有不同的信息。
错误代码:DistributedRouterConfigurationFailure
错误消息:
无法在主机 vNic 上配置分布式路由器设置
此错误是 TCP/IP 堆栈错误。 这可能需要在报告了此错误的服务器上清理对等身份验证 (PA) 和目标规则 (DR) 主机虚拟网络接口卡 (VNIC)。
错误代码:PolicyConfigurationFailure
错误消息:
由于证书错误或连接错误,无法为虚拟机网络接口卡(VmNic)推送 vSwitch 策略
由于证书错误或连接错误,无法为 VmNic 推送防火墙策略
由于证书错误或连接错误,无法为 VmNic 推送虚拟网络(VNet)策略
若要排查此问题,请检查是否已部署相应的证书。 证书使用者名称必须与主机的 FQDN 匹配。 另外,验证主机与网络控制器之间的连接。
数据收集
在联系Microsoft支持人员之前,可以收集有关问题的信息。
先决条件
- TSS 必须由本地系统上具有管理员权限的帐户运行,并且必须接受 EULA(接受 EULA 后,TSS 不会再次提示)。
- 建议使用本地计算机
RemoteSignedPowerShell 执行策略。
注意
如果当前 PowerShell 执行策略不允许运行 TSS,请执行以下操作:
- 通过运行 cmdlet
PS C:\> Set-ExecutionPolicy -scope Process -ExecutionPolicy RemoteSigned设置RemoteSigned进程级别的执行策略。 - 若要验证更改是否生效,请运行 cmdlet
PS C:\> Get-ExecutionPolicy -List。 - 由于进程级别权限仅适用于当前的 PowerShell 会话,因此一旦关闭了运行 TSS 的给定 PowerShell 窗口,进程级别的分配权限也将返回到以前配置的状态。
在联系Microsoft支持人员之前收集关键信息
-
在所有节点上下载 TSS ,并将其解压缩到 C:\tss 文件夹中。
-
从提升的 PowerShell 命令提示符打开 C:\tss 文件夹。
-
使用以下 cmdlet 启动跟踪:
TSS.ps1 -Scenario NET_SdnNC -
如果首次在计算机上运行跟踪,请接受 EULA。
-
允许录制(PSR 或视频)。
-
在输入 Y 之前重现问题。
注意
如果在客户端和服务器上收集日志,请在两个节点上等待此消息,然后再重现问题。
-
在重现问题后输入 Y 以完成日志收集。
跟踪将存储在 C:\MS_DATA* 文件夹中的 *zip 文件中,该文件可以上传到工作区进行分析。