本主题讨论了一些问题以及如何解决这些问题。

在使用 NSX 负载平衡时,通常会出现以下问题:
  • TCP 端口(例如,端口 443)上的负载平衡无法正常工作。
    • 验证拓扑。有关详细信息,请参见《NSX 管理指南》。
    • 验证是否可以执行 ping 操作以访问虚拟服务器 IP 地址,或者查看上游路由器以确保填充了 ARP 表。
    • 在 UI 中验证配置
    • 在 CLI 中验证配置
    • 捕获数据包。
  • 未利用负载平衡池的某个成员。
    • 验证服务器是否位于池中并启用以及监控运行状况。
  • Edge 流量未实现负载平衡。
    • 验证池和持久性配置。如果配置了持久性并使用少量客户端,您可能会发现未将连接平均分配到后端池成员。
  • 第 7 层负载平衡引擎停止。
  • 运行状况监控引擎停止。
    • 启用负载平衡器服务。请参阅《NSX 管理指南》。
  • 池成员监控状态为“警告/严重”。
    • 验证是否可以从负载平衡器中访问应用程序服务器。
    • 验证应用程序服务器防火墙或 DFW 是否允许流量通过。
    • 确保应用程序服务器能够响应指定的运行状况探查。
  • 池成员处于“非活动”状态。
    • 验证是否在池配置中启用了池成员。
  • 第 7 层粘性表与备用 Edge 不同步。
    • 确保配置了 HA。
  • 具有客户端连接,但无法完成应用程序事务。
    • 验证是否在应用程序配置文件中配置了正确的持久性。
    • 如果应用程序仅使用池中的一个服务器(而不是两个),则很可能会出现持久性问题。

基本故障排除

  1. vSphere Web Client 中检查负载平衡器配置状态:
    1. 单击网络和安全 > NSX Edge (Networking & Security > NSX Edges)
    2. 双击一个 NSX Edge
    3. 单击管理 (Manage),然后单击负载平衡器 (Load Balancer)选项卡。
    4. 检查负载平衡器状态和配置的日志记录级别。
  2. 在排除负载平衡器服务故障之前,请在 NSX Manager 上运行以下命令以确保该服务已启动并正在运行:
    nsxmgr> show edge edge-4 service loadbalancer
    haIndex:              0
    -----------------------------------------------------------------------
    Loadbalancer Services Status:
    
    L7 Loadbalancer     : running
    -----------------------------------------------------------------------
    L7 Loadbalancer Statistics:
    STATUS     PID        MAX_MEM_MB MAX_SOCK   MAX_CONN   MAX_PIPE   CUR_CONN   CONN_RATE  CONN_RATE_LIMIT MAX_CONN_RATE
    running    1580       0          2081       1024       0          0          0          0               0
    -----------------------------------------------------------------------
    L4 Loadbalancer Statistics:
    MAX_CONN   ACT_CONN   INACT_CONN TOTAL_CONN
    0          0          0          0
    
    Prot LocalAddress:Port Scheduler Flags
      -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
    
    注: 您可以运行 show edge all 以查找 NSX Edge 名称。

解决配置问题

如果 NSX 用户界面或 REST API 调用拒绝负载平衡器配置操作,则会将其归类为配置问题。

解决数据层面问题

NSX Manager 接受负载平衡器配置,但在客户端和 Edge 负载平衡服务器之间出现连接或性能问题。数据层面问题还包括负载平衡器运行时 CLI 问题以及负载平衡器系统事件问题。

  1. 使用以下 REST API 调用将 NSX Manager 中的 Edge 日志记录级别从 INFO 更改为 TRACE 或 DEBUG。
    URL: https://NSX_Manager_IP/api/1.0/services/debug/loglevel/com.vmware.vshield.edge?level=TRACE 
    Method: POST
  2. vSphere Web Client 中检查池成员状态。
    1. 单击网络和安全 > NSX Edge (Networking & Security > NSX Edges)
    2. 双击一个 NSX Edge
    3. 单击管理 (Manage),然后单击负载平衡器 (Load Balancer)选项卡。
    4. 单击池 (Pools)以查看配置的负载平衡器池摘要。
    5. 选择负载平衡器池。单击显示池统计信息 (Show Pool Statistics),然后验证池状态是否为“已启动”。
  3. 通过使用以下 REST API 调用,您可以从 NSX Manager 中获取更详细的负载平衡器池配置统计信息:
    URL: https://NSX_Manager_IP/api/4.0/edges/{edgeId}/loadbalancer/statistics 
    Method: GET
    
    <?xml version="1.0" encoding="UTF-8"?>
    <loadBalancerStatusAndStats>
        <timeStamp>1463507779</timeStamp>
        <pool>
            <poolId>pool-1</poolId>
            <name>Web-Tier-Pool-01</name>
            <member>
                <memberId>member-1</memberId>
                <name>web-01a</name>
                <ipAddress>172.16.10.11</ipAddress>
                <status>UP</status>
                <lastStateChangeTime>2016-05-16 07:02:00</lastStateChangeTime>
                <bytesIn>0</bytesIn>
                <bytesOut>0</bytesOut>
                <curSessions>0</curSessions>
                <httpReqTotal>0</httpReqTotal>
                <httpReqRate>0</httpReqRate>
                <httpReqRateMax>0</httpReqRateMax>
                <maxSessions>0</maxSessions>
                <rate>0</rate>
                <rateLimit>0</rateLimit>
                <rateMax>0</rateMax>
                <totalSessions>0</totalSessions>
            </member>
            <member>
                <memberId>member-2</memberId>
                <name>web-02a</name>
                <ipAddress>172.16.10.12</ipAddress>
                <status>UP</status>
                <lastStateChangeTime>2016-05-16 07:02:01</lastStateChangeTime>
                <bytesIn>0</bytesIn>
                <bytesOut>0</bytesOut>
                <curSessions>0</curSessions>
                <httpReqTotal>0</httpReqTotal>
                <httpReqRate>0</httpReqRate>
                <httpReqRateMax>0</httpReqRateMax>
                <maxSessions>0</maxSessions>
                <rate>0</rate>
                <rateLimit>0</rateLimit>
                <rateMax>0</rateMax>
                <totalSessions>0</totalSessions>
            </member>
            <status>UP</status>
            <bytesIn>0</bytesIn>
            <bytesOut>0</bytesOut>
            <curSessions>0</curSessions>
            <httpReqTotal>0</httpReqTotal>
            <httpReqRate>0</httpReqRate>
            <httpReqRateMax>0</httpReqRateMax>
            <maxSessions>0</maxSessions>
            <rate>0</rate>
            <rateLimit>0</rateLimit>
            <rateMax>0</rateMax>
            <totalSessions>0</totalSessions>
        </pool>
        <virtualServer>
            <virtualServerId>virtualServer-1</virtualServerId>
            <name>Web-Tier-VIP-01</name>
            <ipAddress>172.16.10.10</ipAddress>
            <status>OPEN</status>
            <bytesIn>0</bytesIn>
            <bytesOut>0</bytesOut>
            <curSessions>0</curSessions>
            <httpReqTotal>0</httpReqTotal>
            <httpReqRate>0</httpReqRate>
            <httpReqRateMax>0</httpReqRateMax>
            <maxSessions>0</maxSessions>
            <rate>0</rate>
            <rateLimit>0</rateLimit>
            <rateMax>0</rateMax>
            <totalSessions>0</totalSessions>
        </virtualServer>
    </loadBalancerStatusAndStats>
    
  4. 要从命令行中检查负载平衡器统计信息,请在 NSX Edge 上运行以下命令。

    对于特定的虚拟服务器:先运行 show service loadbalancer virtual 以获取虚拟服务器名称,然后运行 show statistics loadbalancer virtual <virtual-server-name>

    对于特定的 TCP 池:先运行 show service loadbalancer pool 以获取池名称,然后运行 show statistics loadbalancer pool <pool-name>

  5. 查看负载平衡器统计信息以查找故障迹象。