您可以使用 NSX 命令行界面 (CLI) 解决问题。

表 1. 检查 ESXi 主机上的 NSX 安装 - 从 NSX Manager 中运行的命令
说明 NSX Manager 上的命令 备注
列出所有群集以获取群集 ID show cluster all 查看所有群集信息
列出群集中的所有主机以获取主机 ID show cluster clusterID 查看群集中的主机、主机 ID 和主机准备安装状态列表
列出主机上的所有虚拟机 show host hostID 查看特定主机信息、虚拟机、虚拟机 ID 和电源状态
表 2. 在主机上安装的 VIB 和模块名称(在命令中使用)
NSX 版本 ESXi 版本 VIB 模块
6.3.2 和更低版本 6.0 和更高版本 esx-vxlan 和 esx-vsip vdl2、vdrb、vsip、dvfilter-switch-security、bfd、traceflow
6.3.3 和更高版本 6.0 和更高版本 esx-nsxv nsx-vdl2、nsx-vdrb、nsx-vsip、nsx-dvfilter-switch-security、nsx-core、nsx-bfd、nsx-traceflow
表 3. 检查 ESXi 主机上的 NSX 安装 - 从主机中运行的命令
说明 主机上的命令 备注

包含的 VIB 取决于 NSX 和 ESXi 版本。

有关在您的安装上检查哪些模块的详细信息,请参见在主机上安装的 VIB 和模块名称表。

esxcli software vib get --vibname <name>

检查安装的版本/日期

esxcli software vib list 显示系统上的所有 VIB 的列表

列出当前在系统中加载的所有系统模块: esxcli system module list 较旧的等效命令:vmkload_mod -l | grep -E vdl2|vdrb|vsip|dvfilter-switch-security

包含的模块取决于 NSX 和 ESXi 版本。

有关在您的安装上检查哪些模块的详细信息,请参见在主机上安装的 VIB 和模块名称表。

esxcli system module get -m <name> 为每个模块运行该命令
两个用户环境代理 (UWA):控制层面代理、防火墙代理

/etc/init.d/vShield-Stateful-Firewall status

/etc/init.d/netcpad status

检查 UWA 连接:端口 1234 到控制器以及端口 5671 到 NSX Manager

esxcli network ip connection list | grep 1234

esxcli network ip connection list | grep 5671

控制器 TCP 连接

消息总线 TCP 连接

检查 EAM 状态 vSphere Web Client,检查管理 > vSphere ESX Agent Manager (Administration > vSphere ESX Agent Manager)
表 4. 检查 ESXi 主机上的 NSX 安装 - 主机网络命令
说明 主机网络命令 备注
列出物理网卡/vmnic esxcli network nic list 检查网卡类型、驱动程序类型、链路状态、MTU
物理网卡详细信息 esxcli network nic get -n vmnic# 检查驱动程序和固件版本以及其他详细信息
列出 vmk 网卡以及 IP 地址/MAC/MTU 等 esxcli network ip interface ipv4 get 确保正确实例化 VTEP
每个 vmk 网卡的详细信息,包括 vDS 信息 esxcli network ip interface list 确保正确实例化 VTEP
每个 vmk 网卡的详细信息,包括 VXLAN vmk 的 vDS 信息 esxcli network ip interface list --netstack=vxlan 确保正确实例化 VTEP
查找与该主机的 VTEP 关联的 VDS 名称 esxcli network vswitch dvs vmware vxlan list 确保正确实例化 VTEP
从 VXLAN 专用 TCP/IP 堆中执行 Ping 操作 ping ++netstack=vxlan –I vmk1 x.x.x.x 要解决 VTEP 通信问题:添加 -d -s 1572 选项以确保传输网络的 MTU 适用于 VXLAN
查看 VXLAN 专用 TCP/IP 堆的路由表 esxcli network ip route ipv4 list -N vxlan 解决 VTEP 通信问题
查看 VXLAN 专用 TCP/IP 堆的 ARP 表 esxcli network ip neighbor list -N vxlan 解决 VTEP 通信问题
表 5. 检查 ESXi 主机上的 NSX 安装 - 主机日志文件
说明 日志文件 备注
从 NSX Manager 中 show manager log follow 跟踪 NSX Manager 日志

适用于实时故障排除

主机的任何安装相关日志 /var/log/esxupdate.log

与主机相关的问题

VMkernel 警告、消息、警示和可用性报告

/var/log/vmkernel.log

/var/log/vmksummary.log

/var/log/vmkwarning.log

捕获模块加载故障 /var/log/syslog IXGBE 驱动程序故障

NSX 模块相关性故障是重要指标

在 vCenter 上,ESX Agent Manager 负责进行更新 在 vCenter 日志 eam.log
表 6. 检查逻辑交换 - 从 NSX Manager 中运行的命令
说明 NSX Manager 上的命令 备注
列出所有逻辑交换机 show logical-switch list all 列出在 API、传输区域和 vdnscope 中使用的所有逻辑交换机及其 UUID
表 7. 逻辑交换 - 从 NSX Controller 中运行的命令
说明 控制器上的命令 备注
查找作为 VNI 所有者的控制器 show control-cluster logical-switches vni 5000 记下输出中的控制器 IP 地址并通过 SSH 访问该地址
查找连接到该 VNI 的该控制器的所有主机 show control-cluster logical-switch connection-table 5000 输出中的源 IP 地址是主机的管理接口,而端口号是 TCP 连接的源端口
查找注册以托管该 VNI 的 VTEP show control-cluster logical-switches vtep-table 5002
列出为该 VNI 上的虚拟机获悉的 MAC 地址 show control-cluster logical-switches mac-table 5002 指出 MAC 地址实际位于报告该地址的 VTEP 上
列出虚拟机 IP 更新填充的 ARP 缓存 show control-cluster logical-switches arp-table 5002 ARP 缓存在 180 秒后过期
对于特定的主机/控制器对,找出主机已加入的 VNI show control-cluster logical-switches joined-vnis <host_mgmt_ip>
表 8. 逻辑交换 - 从主机中运行的命令
说明 主机上的命令 备注
检查主机 VXLAN 是否同步 esxcli network vswitch dvs vmware vxlan get 显示同步状态和用于封装的端口
查看连接的虚拟机以及用于数据路径捕获的本地交换机端口 ID net-stats -l 提供了一种更好的方法以获取特定虚拟机的虚拟机交换机端口
验证是否加载了 VXLAN 内核模块 vdl2 esxcli system module get -m vdl2 显示指定的模块的完整详细信息

验证版本

验证是否安装了正确的 VXLAN VIB 版本

有关在您的安装上检查哪些 VIB 的详细信息,请参见在主机上安装的 VIB 和模块名称表。

esxcli software vib get --vibname esx-vxlan

esxcli software vib get --vibname esx-nsxv
显示指定的 VIB 的完整详细信息

验证版本和日期

验证主机是否了解逻辑交换机中的其他主机 esxcli network vswitch dvs vmware vxlan network vtep list --vxlan-id=5001 --vds-name=Compute_VDS 显示该主机了解并托管 vtep 5001 的所有 VTEP 的列表
验证逻辑交换机的控制层面是否已启动并处于活动状态 esxcli network vswitch dvs vmware vxlan network list --vds-name Compute_VDS 确保控制器连接已启动并且端口/Mac 数与该主机上的 LS 中的虚拟机数相匹配。
验证主机是否获悉所有虚拟机的 MAC 地址 esxcli network vswitch dvs vmware vxlan network mac list --vds-name Compute_VDS --vxlan-id=5000 这会列出该主机上的 VNI 5000 虚拟机的所有 MAC
验证主机是否在本地缓存远程虚拟机的 ARP 条目 esxcli network vswitch dvs vmware vxlan network arp list --vds-name Compute_VDS --vxlan-id=5000 验证主机是否在本地缓存远程虚拟机的 ARP 条目
验证虚拟机是否连接到 LS 并映射到本地 VMKnic

还会显示虚拟机 dvPort 映射到的 vmknic ID

esxcli network vswitch dvs vmware vxlan network port list --vds-name Compute_VDS --vxlan-id=5000 只要 VNI 连接到路由器,就会始终列出 vdrport
查看 vmknic ID 以及它们映射到的交换机端口/上行链路 esxcli network vswitch dvs vmware vxlan vmknic list --vds-name=DSwitch-Res01
表 9. 检查逻辑交换 - 日志文件
说明 日志文件 备注
主机始终连接到托管其 VNI 的控制器 /etc/vmware/netcpa/config-by-vsm.xml 该文件应始终列出环境中的所有控制器。config-by-vsm.xml 文件是由 netcpa 进程创建的
config-by-vsm.xml 文件是 NSX Manager 使用 vsfwd 推送的

如果 config-by-vsm.xml 文件不正确,请查看 vsfwd 日志

/var/log/vsfwd.log

分析该文件以查找错误

要重新启动进程,请运行以下命令:/etc/init.d/vShield-Stateful-Firewall stop|start

到控制器的连接是使用 netcpa 建立的 /var/log/netcpa.log

分析该文件以查找错误

逻辑交换模块日志位于 vmkernel.log /var/log/vmkernel.log /var/log/vmkernel.log 中检查“具有 VXLAN 前缀”的逻辑交换模块:
表 10. 检查逻辑路由 - 从 NSX Manager 中运行的命令
说明 NSX Manager 上的命令 备注
用于 ESG 的命令 show edge 用于 Edge 服务网关 (ESG) 的 CLI 命令以“show edge”开头
用于 DLR 控制虚拟机的命令 show edge 用于分布式逻辑路由器 (DLR) 控制虚拟机的 CLI 命令以“show edge”开头
用于 DLR 的命令 show logical-router 用于分布式逻辑路由器 (DLR) 的 CLI 命令以 show logical-router 开头
列出所有 Edge show edge all 列出支持集中式 CLI 的所有 Edge
列出 Edge 的所有服务和部署详细信息 show edge edgeID 查看 Edge 服务网关信息
列出 Edge 的命令选项 show edge edgeID ? 查看详细信息,例如,版本、日志、NAT、路由表、防火墙、配置、接口和服务
查看路由详细信息 show edge edgeID ip ? 查看路由信息、BGP、OSPF 和其他详细信息
查看路由表 show edge edgeID ip route 查看 Edge 中的路由表
查看路由邻居 show edge edgeID ip ospf neighbor 查看路由邻居关系
查看 BGP 路由 show edge edgeID ip bgp 查看边界网关协议 (BGP) 路由表中的条目
查看逻辑路由器连接信息 show logical-router host hostID connection 验证连接的 LIF 数是否正确,绑定策略是否正确以及是否使用相应的 vDS
列出在主机上运行的所有逻辑路由器实例 show logical-router host hostID dlr all

验证 LIF 和路由数

在逻辑路由器的所有主机上,控制器 IP 应该相同

控制层面 Active 应该为 yes

--brief 提供了精简响应

检查主机上的路由表 show logical-router host hostID dlr dlrID route

这是控制器推送到传输区域中的所有主机的路由表

在所有主机上,该表必须是相同的

如果在少数主机上缺少某些路由,请尝试从控制器中运行前面提到的 sync 命令

E 标记表示路由是通过 ECMP 获悉的

检查主机上的 DLR 的 LIF show logical-router host hostID dlr dlrID interface (all | intName) verbose LIF 信息将从控制器推送到主机

可以使用该命令确保主机了解应了解的所有 LIF

显示路由日志 show log routing [follow | reverse]

follow:更新显示的日志。

reverse:以反向时间顺序显示日志。

表 11. 检查逻辑路由 - 从 NSX Controller 中运行的命令
说明 NSX Controller 上的命令 备注
查找所有逻辑路由器实例 show control-cluster logical-routers instance all 这会列出逻辑路由器实例以及传输区域中具有逻辑路由器实例的所有主机

此外,还会显示为该逻辑路由器提供服务的控制器

查看每个逻辑路由器的详细信息 show control-cluster logical-routers instance 0x570d4555 IP 列显示该 DLR 所在的所有主机的 vmk0 IP 地址
查看连接到逻辑路由器的所有接口 show control-cluster logical-routers interface-summary 0x570d4555 IP 列显示该 DLR 所在的所有主机的 vmk0 IP 地址
查看该逻辑路由器获悉的所有路由 show control-cluster logical-routers routes 0x570d4555 请注意,IP 列显示该 DLR 所在的所有主机的 vmk0 IP 地址
显示建立的所有网络连接,类似于 net stat 输出 show network connections of-type tcp 检查要排除故障的主机是否建立到控制器的 netcpa 连接
将接口从控制器同步到主机 sync control-cluster logical-routers interface-to-host <logical-router-id> <host-ip> 如果新接口连接到逻辑路由器,但未同步到所有主机,这是非常有用的
将路由从控制器同步到主机 sync control-cluster logical-routers route-to-host <logical-router-id> <host-ip> 如果在少数主机上缺少某些路由,但这些路由在大多数主机上可用,这是非常有用的
表 12. 检查逻辑路由 - 从 Edge 中运行的命令
说明 Edge 或逻辑路由器控制虚拟机上的命令 备注
查看配置 show configuration <global | bgp | ospf | …>
查看获悉的路由 show ip route 确保路由和转发表保持同步
查看转发表 show ip forwarding 确保路由和转发表保持同步
查看分布式逻辑路由器接口 show interface

在输出中显示的第一个网卡是分布式逻辑路由器接口

分布式逻辑路由器接口不是该虚拟机上的真正 vNIC

连接到分布式逻辑路由器的所有子网具有 INTERNAL 类型

查看其他接口(管理) show interface

管理/HA 接口是逻辑路由器控制虚拟机上的真正 vNIC

如果启用 HA 而未指定 IP 地址,则使用 169.254.x.x/30

如果为管理接口分配了 IP 地址,则会在此处显示该地址

调试协议

debug ip ospf

debug ip bgp

在查看配置问题(例如,不匹配的 OSPF 区域、计时器和错误的 ASN)时,这是非常有用的

注意:只能在 Edge 控制台上查看输出(而不能通过 SSH 会话)

OSPF 命令

show configuration ospf

show ip ospf interface

show ip ospf neighbor

show ip route ospf

show ip ospf database

show tech-support(并查找字符串“EXCEPTION”和“PROBLEM”)

BGP 命令

show configuration bgp

show ip bgp neighbor

show ip bgp

show ip route bgp

show ip forwarding

show tech-support (查找字符串“EXCEPTION”和“PROBLEM”)

表 13. 检查逻辑路由 - 主机中的日志文件
说明 日志文件 备注
vsfwd 将分布式逻辑路由器实例信息推送到主机并保存为 XML 格式 /etc/vmware/netcpa/config-by-vsm.xml

如果在主机上缺少分布式逻辑路由器实例,请先查看该文件以确定是否列出该实例

如果未列出,请重新启动 vsfwd

此外,还可以使用该文件确保主机了解所有控制器

上述文件是 NSX Manager 使用 vsfwd 推送的

如果 config-by-vsm.xml 文件不正确,请查看 vsfwd 日志

/var/log/vsfwd.log

分析该文件以查找错误

要重新启动进程,请运行以下命令:/etc/init.d/vShield-Stateful-Firewall stop|start

到控制器的连接是使用 netcpa 建立的 /var/log/netcpa.log

分析该文件以查找错误

逻辑交换模块日志位于 vmkernel.log 中 /var/log/vmkernel.log 在 /var/log/vmkernel.log 中检查“具有 vxlan 前缀”的逻辑交换模块:
表 14. 控制器调试 - 从 NSX Manager 中运行的命令
描述 命令(在 NSX Manager 上) 备注
列出所有控制器及其状态 show controller list all 显示所有控制器及其运行状态的列表
表 15. 控制器调试 - 从 NSX Controller 中运行的命令
说明 命令(在控制器上) 备注
检查控制器群集状态 show control-cluster status

应始终显示“Join complete”和“Connected to Cluster Majority”

检查抖动连接的统计信息和消息 show control-cluster core stats 丢弃的数据包计数器不应发生变化
查看与最初加入群集或重新启动后有关的节点活动 show control-cluster history 这对于解决群集加入问题非常有用
查看群集中的节点列表 show control-cluster startup-nodes 请注意,该列表不需要仅包含活动群集节点

它应该是具有当前部署的所有控制器的列表

在启动控制器以联系群集中的其他控制器时,可以使用该列表

显示建立的所有网络连接,类似于 net stat 输出 show network connections of-type tcp 检查要排除故障的主机是否建立到控制器的 netcpa 连接
重新启动控制器进程 restart controller 仅重新启动主控制器进程

强制重新连接到群集

重新引导控制器节点 restart system 重新引导控制器虚拟机
表 16. 控制器调试 - NSX Controller 上的日志文件
说明 日志文件 备注
查看控制器历史记录以及最近的加入、重新启动,等等 show control-cluster history 用于解决控制器问题的极佳工具,尤其是解决群集问题
检查速度较慢的磁盘 show log cloudnet/cloudnet_java-zookeeper<timestamp>.log filtered-by fsync 一种检查速度较慢的磁盘的可靠方法是,在 cloudnet_java-zookeeper 日志中查找“fsync”消息

如果同步所需的时间超过 1 秒,ZooKeeper 将输出该消息,这很好地指明了其他程序此时正在使用该磁盘

检查速度较慢/发生故障的磁盘 show log syslog filtered-by collectd 有关“collectd”的示例输出中的消息往往与速度较慢或发生故障的磁盘有关
检查磁盘空间使用率 show log syslog filtered-by freespace: 在空间使用率达到某个阈值时,名为“freespace”的后台作业定期从磁盘中清除旧日志和其他文件。在某些情况下,如果磁盘很小以及/或者填充速度很快,则会看到大量 freespace 消息。这可能表明磁盘已填满
查找当前的活动群集成员 show log syslog filtered-by Active cluster members 列出当前的活动群集成员的节点 ID。可能需要查看较早的 syslog,因为并非始终输出该消息。
查看核心控制器日志 show log cloudnet/cloudnet_java-zookeeper.20150703-165223.3702.log 可能具有多个 zookeeper 日志,请查看具有最新时间戳的文件

该文件包含有关选择的控制器群集主控制器的信息以及与控制器的分布式特性有关的其他信息

查看核心控制器日志 show log cloudnet/cloudnet.nsx-controller.root.log.INFO.20150703-165223.3668 主控制器工作日志,例如,LIF 创建时间、1234 上的连接侦听器、分片
表 17. 检查分布式防火墙 - 从 NSX Manager 中运行的命令
说明 NSX Manager 上的命令 备注
查看虚拟机信息 show vm vmID DC、群集、主机、虚拟机名称、vNIC、安装的 dvfilter 等详细信息
查看特定的虚拟网卡信息 show vnic icID VNIC 名称、mac 地址、端口组、应用的筛选器等详细信息
查看所有群集信息 show dfw cluster all 群集名称、群集 ID、数据中心名称、防火墙状态
查看特定的群集信息 show dfw cluster clusterID 主机名、主机 ID、安装状态
查看 dfw 相关主机信息 show dfw host hostID 虚拟机名称、虚拟机 ID、电源状态
查看 dvfilter 中的详细信息 show dfw host hostID filter filterID <option> 列出每个 VNIC 的规则、统计信息、地址集等
查看虚拟机的 DFW 信息 show dfw vm vmID 查看虚拟机的名称、VNIC ID、筛选器等
查看 VNIC 详细信息 show dfw vnic vnicID 查看 VNIC 名称、ID、MAC 地址、端口组、筛选器
列出为每个 vNIC 安装的筛选器 show dfw host hostID summarize-dvfilter 查找感兴趣的虚拟机/vNIC,并获取名称字段以在后续命令中作为筛选器
查看特定筛选器/vNIC 的规则 show dfw host hostID filter filterID rules

show dfw vnic nicID

查看地址集的详细信息 show dfw host hostID filter filterID addrsets 这些规则仅显示地址集,可以使用该命令扩充地址集包含的内容
每个 vNIC 的 spoofguard 详细信息 show dfw host hostID filter filterID spoofguard 检查是否启用了 SpoofGuard 以及当前的 IP/MAC
查看流量记录详细信息 show dfw host hostID filter filterID flows 如果启用了流量监控,主机定期将流量信息发送到 NSX Manager

可以使用该命令查看每个 vNIC 的流量

查看 vNIC 的每个规则的统计信息 show dfw host hostID filter filterID stats 在查看是否命中规则时,这是非常有用的
表 18. 检查分布式防火墙 - 从主机中运行的命令
说明 主机上的命令 备注
列出在主机上下载的 VIB。

有关在您的安装上检查哪些 VIB 的详细信息,请参见在主机上安装的 VIB 和模块名称表。

esxcli software vib list | grep esx-vsip

esxcli software vib list | grep esx-nsxv

检查以确保下载了正确的 VIB 版本
有关当前加载的系统模块的详细信息

有关在您的安装上检查哪些模块的详细信息,请参见在主机上安装的 VIB 和模块名称表。

esxcli system module get -m vsip

esxcli system module get -m nsx-vsip

检查以确保安装/加载了模块
进程列表 ps | grep vsfwd 查看是否使用多个线程运行 vsfwd 进程
守护程序命令 /etc/init.d/vShield-Stateful-Firewall {start|stop|status|restart} 检查守护程序是否正在运行,并根据需要重新启动
查看网络连接 esxcli network ip connection list | grep 5671 检查主机是否具有到 NSX Manager 的 TCP 连接
表 19. 检查分布式防火墙 - 主机上的日志文件
说明 日志 备注
进程日志 /var/log/vsfwd.log vsfwd 守护程序日志,对 vsfwd 进程、NSX Manager 连接和 RabbitMQ 故障排除非常有用
数据包日志专用文件 /var/log/dfwpktlogs.log 数据包日志的专用日志文件
dvfilter 中的数据包捕获 pktcap-uw --dvfilter nic-1413082-eth0-vmware-sfw.2 --outfile test.pcap
表 20. 数据包捕获 - 从 NSX Manager 中运行的命令
说明 NSX Manager 上的命令 备注
显示所有数据包捕获会话 show packet capture sessions 显示所有数据包捕获会话的详细信息。
显示数据包捕获文件内容 debug packet capture display session <capture-id> parameters [optional parameters] 显示数据包捕获文件内容。
捕获 vNIC debug packet capture host < host-id > vnic <vnic-id> dir <direction> parameters [optional parameters]

捕获特定虚拟机 vNIC 的数据包。方向具有两个选项:输入和输出。

输入是指流量进入 vNIC,输出是指流量流出 vNIC。

捕获 vdrPort debug packet capture host <host-id> vdrport dir <direction> parameters [optional parameters]

捕获虚拟分布式路由器 (vDR) 的特定端口的数据包。方向具有两个选项:输入和输出。

输入是指流量进入 vDR,输出是指流量流出 vDR。

捕获 VMKNic

debug packet capture host <host-id> vmknic <vmknic-name> dir <direction> parameters [optional parameters]

捕获特定 VMKNic 的数据包。方向具有两个选项:输入和输出。

输入是指流量进入 VMKNic,输出是指流量流出 VMKNic。

删除数据包捕获会话 debug packet capture clear session <capture-id> 删除特定的数据包捕获会话。