可以将 Edge 服务网关 (ESG) 视为入站客户端流量的代理。

在代理模式下,负载平衡器将自己的 IP 地址作为源地址,以将请求发送到后端服务器。后端服务器查看从负载平衡器中发送的所有流量,并直接响应负载平衡器。这种模式也称为 SNAT 模式或非透明模式。有关详细信息,请参阅NSX 管理指南

典型的 NSX 单路并联式负载平衡器部署在具有其后端服务器的相同子网上,与逻辑路由器分开。NSX 负载平衡器虚拟服务器侦听虚拟 IP 以查找来自客户端的入站请求,并将这些请求发送到后端服务器。对于返回流量,需要使用反向 NAT 以将源 IP 地址从后端服务器更改为虚拟 IP (VIP) 地址,然后将虚拟 IP 地址发送到客户端。如果不执行该操作,到客户端的连接可能会中断。

在 ESG 收到流量后,它执行以下两个操作:
  • 目标网络地址转换 (DNAT),以将 VIP 地址更改为某个负载平衡计算机的 IP 地址。
  • 源网络地址转换 (SNAT),以将客户端 IP 地址与 ESG IP 地址调换。

然后,ESG 服务器将流量发送到负载平衡服务器,负载平衡服务器将响应发送回 ESG,然后发送回客户端。该选项比内嵌模式容易配置得多,但具有两个潜在问题。第一个问题是,该模式需要使用专用的 ESG 服务器,第二个问题是,负载平衡器服务器不知道原始客户端 IP 地址。HTTP 或 HTTPS 应用程序的一种解决办法是,在 HTTP 应用程序配置文件中启用插入 X-Forwarded-For (Insert X-Forwarded-For) 选项,以便在发送到后端服务器的请求的 X-Forwarded-For HTTP 标头中包含客户端 IP 地址。

如果 HTTP 或 HTTPS 以外的应用程序要求在后端服务器上看到客户端 IP 地址,您可以将 IP 池配置为透明的。如果客户端没有位于与后端服务器相同的子网上,建议使用内嵌模式。否则,您必须将负载平衡器 IP 地址作为后端服务器的默认网关。

注:
通常,可以使用三种方法确保连接完整性:
  • 串联式/透明模式
  • SNAT/代理/非透明模式(如上所述)
  • 直接服务器返回 (Direct Server Return, DSR) - 目前,不支持这种模式
在 DSR 模式下,后端服务器直接响应客户端。目前,NSX 负载平衡器不支持 DSR。

以下过程介绍了使用“HTTPS 卸载”(SSL 卸载)应用程序配置文件类型配置单路并联式负载平衡器的信息。

过程

  1. 登录到 vSphere Web Client
  2. 单击网络和安全 (Networking & Security) > NSX Edge (NSX Edges)
  3. 双击一个 NSX Edge
  4. 单击管理 (Manage) > 设置 (Settings) > 证书 (Certificate)
    对于此场景,添加一个自签名证书。
  5. 启用负载平衡器服务。
    1. 单击管理 (Manage) > 负载平衡器 (Load Balancer) > 全局配置 (Global Configuration)
    2. 单击编辑 (Edit),然后启用负载平衡器。
  6. 创建一个 HTTPS 应用程序配置文件。
    1. 单击管理 (Manage) > 负载平衡器 (Load Balancer) > 应用程序配置文件 (Application Profiles)
    2. 单击添加 (Add),并指定应用程序配置文件参数。
      版本 过程
      NSX 6.4.5 和更高版本
      1. 应用程序配置文件类型 (Application Profile Type)下拉菜单中,选择 HTTPS 卸载 (HTTPS Offloading)
      2. 名称 (Name)文本框中,输入配置文件的名称。例如,输入 Web-SSL-Profile
      3. 单击客户端 SSL (Client SSL) > 服务证书 (Service Certificates)
      4. 选择之前添加的自签名证书。
      NSX 6.4.4 和更低版本
      1. 类型 (Type)下拉菜单中,选择 HTTPS
      2. 名称 (Name)文本框中,输入配置文件的名称。例如,Web-SSL-Profile
      3. 选中配置服务证书 (Configure Service Certificate)复选框。
      4. 选择之前添加的自签名证书。
  7. (可选) 单击管理 (Manage) > 负载平衡器 (Load Balancer) > 服务监控 (Service Monitoring)。根据需要编辑默认服务监控以将其从基本 HTTP 或 HTTPS 更改为特定的 URL 或 URI。
  8. 创建一个服务器池。
    1. 单击管理 (Manage) > 负载平衡器 (Load Balancer) > 池 (Pools),然后单击添加 (Add)
    2. 名称 (Name)文本框中,输入服务器池的名称。例如,输入 Web-Tier-Pool-01
    3. 算法 (Algorithm)下拉菜单中,选择循环 (Round-Robin)
    4. 监控器 (Monitors)下拉菜单中,选择 default_https_monitor
    5. 向池中添加两个成员。
      例如,指定以下配置设置。
      状态 名称 IP 地址 权重 监控端口 端口 最大连接数 最小连接数
      已启用 web-01a 172.16.10.11 1 443 443 0 0
      已启用 web-02a 172.16.10.12 1 443 443 0 0
    6. 要使用 SNAT 模式,请确保未启用透明 (Transparent)选项。
  9. 单击显示状态 (Show Status)显示池统计信息 (Show Pool Statistics),然后确认池 Web-Tier-Pool-01 的状态为“已启动”。
    选择池,然后确保该池中两个成员的状态均为“已启动”。
  10. 创建一个虚拟服务器。
    1. 单击管理 (Manage) > 负载平衡器 (Load Balancer) > 虚拟服务器 (Virtual Servers),然后单击添加 (Add)
    2. 指定虚拟服务器参数。

      例如,指定以下配置设置。

      选项 说明
      虚拟服务器 启用虚拟服务器。
      加速 如果要将 L4 负载平衡器用于 UDP 或更高性能的 TCP,请启用加速。如果启用此选项,请确保 NSX Edge 负载平衡器上的防火墙状态为已启用,因为 L4 SNAT 需要使用防火墙。
      应用程序配置文件 输入 OneArmWeb-01
      IP 地址 选择 172.16.10.110
      协议 选择 HTTPS
      端口 输入 443
      默认池 选择您之前创建的 Web-Tier-Pool-01 服务器池。
      连接限制 输入 0
      连接速率限制 输入 0
    3. (可选) 单击高级 (Advanced)选项卡,然后将应用程序规则与虚拟服务器相关联。
      有关支持的示例,请参见: https://communities.vmware.com/docs/DOC-31772

    在非透明模式下,后端服务器无法看到客户端 IP,但可以看到负载平衡器内部 IP 地址。对于 HTTP 或 HTTPS 流量,一种解决办法是在应用程序配置文件中选择插入 X-Forwarded-For HTTP 标头 (Insert X-Forwarded-For HTTP header)。如果选择该选项,Edge 负载平衡器将添加“X-Forwarded-For”标头并且值为客户端源 IP 地址。