负载均衡器采用负载分配对用户透明的方式,在多个服务器中分发入站服务请求。负载均衡  可以帮助实现最优的资源使用、最大吞吐量、最短响应时间,并可以避免出现超载的情况。

NSX 负载均衡器支持两个负载均衡  引擎。第 4 层负载均衡器基于数据包,提供快速路径处理。第 7 层负载均衡器基于套接字,支持高级流量管理策略和对后端服务的 DDOS 缓解。

在外部接口上配置 NSX Data Center for vSphere Edge 网关的负载均衡  ,因为 Edge 网关对来自外部网络的入站流量进行负载均衡  。在为虚拟服务器配置负载均衡  时,请指定您在组织 VDC 中具有的一个可用 IP 地址。

负载均衡  策略和概念

在 TCP 和 UDP 层实施基于数据包的负载均衡  策略。基于数据包的负载均衡  不会停止连接或缓冲整个请求,而是在处理数据包后将其直接发送到选定的服务器。TCP 和 UDP 会话会在负载均衡器中进行维护,以便将单个会话的数据包传送到同一服务器。您可以在全局配置和相关虚拟服务器配置中选择“已启用加速”,以启用基于数据包的负载均衡  。

在套接字接口上实施基于套接字的负载均衡  策略。会为单个请求建立两个连接 - 面向客户端的连接和面向服务器的连接。选择服务器后建立面向服务器的连接。对于基于 HTTP 套接字的实施,会在通过可选 L7 处理发送到选定服务器之前接收整个请求。对于基于 HTTPS 套接字的实施,会在面向客户端的连接或面向服务器的连接上交换身份验证信息。基于套接字的负载均衡  是 TCP、HTTP 和 HTTPS 虚拟服务器的默认模式。

NSX 负载均衡器的主要概念有虚拟服务器、服务器池、服务器池成员和服务监控器。

虚拟服务器
应用程序服务的抽象形式,由 IP、端口、协议和应用程序配置文件(如 TCP 或 UDP)的唯一组合表示。
服务器池
后端服务器组。
服务器池成员
作为池中的成员表示后端服务器。
服务监控器
定义如何探测后端服务器的运行状况。
应用程序配置文件
表示给定应用程序的 TCP、UDP、持久性和证书配置。

设置概述

首先设置负载均衡器的全局选项。现在,创建由后端服务器成员组成的服务器池,并将服务监控器与该池关联,以便有效地管理和共享后端服务器。

其次,创建应用程序配置文件,以定义负载均衡器中的常见应用程序行为,如客户端 SSL、服务器 SSL、X-Forwarded-For 或持久性。持久性使用类似特性(例如,需要将源 IP 或 cookie 分派到同一个池成员)发送后续请求,而无需运行负载均衡  算法。可以在虚拟服务器之间重复使用应用程序配置文件。

然后,创建一个可选应用程序规则,以配置应用程序特定的流量处理设置,例如匹配某个 URL 或主机名,从而可以由不同的池处理不同的请求。接下来,创建特定于应用程序的服务监控器,或者如果现有服务监控器满足您的需求,也可以使用此现有服务监控器。

(可选)您可以创建应用程序规则以支持 L7 虚拟服务器的高级功能。应用程序规则的某些用例包括内容切换、标头处理、安全规则和 DOS 防护。

最后,创建虚拟服务器,将服务器池、应用程序配置文件和任何潜在的应用程序规则连接在一起。

虚拟服务器收到请求时,负载均衡  算法将考虑池成员配置和运行时状态。然后,算法计算相应的池(包含一个或多个成员)以分发流量。池成员配置包括权重、最大连接数和条件状态等设置。运行时状态包括当前连接数、响应时间以及运行状况检查状态信息。计算方法可以是循环、加权循环、最少连接、源 IP 哈希、加权最少连接、URL、URI 或 HTTP 标头。

每个池都由相关联的服务监控器监控。当负载均衡器检测到池成员出现问题时,会将其标记为关闭。从服务器池中选择池成员时,仅选择正常运行的服务器。如果服务器池未配置服务监控器,那么将认为所有池成员均正常运行。

使用 VMware Cloud Director Service Provider Admin PortalNSX Data Center for vSphere Edge 网关上配置负载均衡

全局负载均衡器配置参数包括整体实现、第 4 层或第 7 层引擎的选择以及要记录的事件类型的指定。

过程

  1. 打开 Edge 网关服务。
    1. 在左侧一级导航面板中选择资源,然后在页面顶部导航栏中选择云资源选项卡。
    2. 在左侧二级导航面板中,选择 Edge 网关
    3. 单击目标 Edge 网关名称旁边的单选按钮,然后单击服务
  2. 导航到负载均衡器 > 全局配置
  3. 选择要启用的选项:
    选项 操作
    状态 通过单击开关图标启用负载均衡器。

    启用已启用加速以将负载均衡器配置为使用更快的 L4 引擎而不是 L7 引擎。L4 TCP VIP 在 Edge 网关防火墙之前处理,因此不需要“允许”防火墙规则。

    注:

    适用于 HTTP 和 HTTPS 的 L7 VIP 在防火墙之后处理,因此,当未启用加速时,必须存在一个 Edge 网关防火墙规则,以便允许访问这些协议的 L7 VIP。如果启用加速并且服务器池处于非透明模式,则添加 SNAT 规则,因此您必须确保在 Edge 网关上启用防火墙。

    启用日志记录 启用日志记录,以便 Edge 网关负载均衡器收集流量日志。
    日志级别 选择要在日志中收集的事件严重程度。
  4. 单击保存更改

下一步做什么

为负载均衡器配置应用程序配置文件。请参见使用 VMware Cloud Director Service Provider Admin Portal在 NSX Data Center for vSphere Edge 网关上创建应用程序配置文件

使用 VMware Cloud Director Service Provider Admin PortalNSX Data Center for vSphere Edge 网关上创建应用程序配置文件

应用程序配置文件用于为特定类型的网络流量定义负载均衡器的行为。在配置配置文件后,需要将其与虚拟服务器相关联。之后,虚拟服务器将根据配置文件中指定的值来处理流量。使用配置文件可以更好地控制对网络流量的管理,并使流量管理任务更轻松、更高效。

在为 HTTPS 流量创建配置文件时,允许使用以下 HTTPS 流量模式:
  • 客户端 -> HTTPS -> LB (终止 SSL) -> HTTP -> 服务器
  • 客户端 -> HTTPS -> LB (终止 SSL) -> HTTPS -> 服务器
  • 客户端 -> HTTPS-> LB (SSL 直通) -> HTTPS -> 服务器
  • 客户端 -> HTTP-> LB -> HTTP -> 服务器

过程

  1. 打开 Edge 网关服务。
    1. 在左侧一级导航面板中选择资源,然后在页面顶部导航栏中选择云资源选项卡。
    2. 在左侧二级导航面板中,选择 Edge 网关
    3. 单击目标 Edge 网关名称旁边的单选按钮,然后单击服务
  2. 导航到负载均衡器 > 应用程序配置文件
  3. 单击创建 (创建按钮) 按钮。
  4. 输入配置文件的名称。
  5. 配置应用程序配置文件。
    选项 描述
    类型 选择用于向服务器发送请求的协议类型。所需参数列表取决于您选择的协议。不能输入不适用于您所选协议的参数。所有其他参数都是必需的。
    启用 SSL 直通 单击此选项可通过直通直接向虚拟服务器进行 SSL 身份验证。

    否则,将在目标地址进行 SSL 身份验证。

    HTTP 重定向 URL (HTTP 和 HTTPS)输入应将传输到目标地址的流量重定向到的 URL。
    持久 指定配置文件的持久机制。

    持久功能可跟踪和存储会话数据,例如处理客户端请求的特定池成员。这样可确保客户端请求在整个会话生命周期或后续会话期间定向到同一池成员。选项包括:

    • 源 IP

      源 IP 持久功能会根据源 IP 地址跟踪会话。当客户端请求连接到支持源地址关联性持久功能的虚拟服务器时,负载均衡器会检查该客户端是否先前连接过,如果是,则会将该客户端返回到同一池成员。

    • MSRDP

      (仅限 TCP)Microsoft 远程桌面协议 (MSRDP) 持久功能会在 Windows 客户端和运行 Microsoft 远程桌面协议 (RDP) 服务的服务器之间保持持久会话。启用 MSRDP 持久功能的推荐方案是:创建一个负载均衡  池,其中包含运行 Windows Server 客户机操作系统的成员,而所有成员都属于一个 Windows 集群并加入一个 Windows 会话目录。

    • SSL 会话 ID

      启用 SSL 直通时,可以使用 SSL 会话 ID 持久功能。SSL 会话 ID 持久功能可确保将来自同一客户端的重复连接发送到同一服务器。会话 ID 持久功能允许使用 SSL 会话恢复,从而可节省客户端和服务器的处理时间。

    Cookie 名称 (HTTP 和 HTTPS)如果指定了 Cookie 作为持久机制,请输入 Cookie 名称。Cookie 持久功能将在客户端首次访问站点时使用 Cookie 唯一地标识会话。在连接会话中的后续请求时,负载均衡器会引用此 Cookie,以便它们都会转到同一虚拟服务器。
    模式 选择插入 Cookie 应采用的模式。以下是受支持的模式:
    • 插入

      Edge 网关会发送一个 Cookie。如果服务器发送了一个或多个 Cookie,则客户端会收到一个额外的 Cookie(即服务器 Cookie 加上 Edge 网关 Cookie)。如果服务器未发送任何 Cookie,则客户端只会收到 Edge 网关 Cookie。

    • 前缀
      如果您的客户端不支持多个 Cookie,请选择此选项。
      注: 所有浏览器都接受多个 Cookie。但是,您可能会使用一个专有应用程序,该应用程序使用仅支持一个 Cookie 的专有客户端。Web 服务器会照常发送其 Cookie。Edge 网关会在服务器 Cookie 值中(作为前缀)注入其 Cookie 信息。当 Edge 网关将此 Cookie 添加的信息发送到服务器时,此信息将被移除。
    • 应用程序会话对于此选项,服务器不发送 Cookie,而是将用户会话信息作为 URL 发送。例如 http://example.com/admin/UpdateUserServlet;jsessionid=OI24B9ASD7BSSD,其中 jsessionid 是用户会话信息,用于实现持久性。无法查看应用程序会话持久表进行故障排除。
    过期时间 (秒) 输入持久功能保持有效的时间长度(以秒为单位)。必须是介于范围 1-86400 之间的正整数。
    注: 对于使用 TCP 源 IP 持久功能进行的 L7 负载均衡  ,如果在一段时间内没有建立新的 TCP 连接,则持久条目将超时,即使现有连接仍处于活动状态也是如此。
    插入 X-Forwarded-For HTTP 标头 (HTTP 和 HTTPS)选择插入 X-Forwarded-For HTTP 标头以标识通过负载均衡器连接到 Web 服务器的客户端的发起 IP 地址。
    注: 如果启用了 SSL 直通,则不支持使用此标头。
    启用池端 SSL (仅限 HTTPS)选择启用池端 SSL 以在“池证书”选项卡中定义用于从服务器端对负载均衡器进行身份验证的证书、CA 或 CRL。
  6. (仅限 HTTPS)配置要与应用程序配置文件一起使用的证书。如果您需要的证书不存在,则可以从证书选项卡创建它们。
    选项 描述
    虚拟服务器证书 选择用于解密 HTTPS 流量的证书、CA 或 CRL。
    池证书 定义用于从服务器端对负载均衡器进行身份验证的证书、CA 或 CRL。
    注: 选择 启用池端 SSL 以启用此选项卡。
    密码 选择在 SSL/TLS 握手期间协商的密码算法(或密码套件)。
    客户端身份验证 指定是忽略客户端身份验证还是需要客户端身份验证。
    注: 如果设置为 必需,则客户端必须在此请求之后提供一个证书,否则握手将被取消。
  7. 要保留更改,请单击保留

下一步做什么

为负载均衡器添加服务监视器,以便为不同类型的网络流量定义运行状况检查。请参见使用 VMware Cloud Director Service Provider Admin Portal在 NSX Data Center for vSphere Edge 网关上创建服务监控器

使用 VMware Cloud Director Service Provider Admin PortalNSX Data Center for vSphere Edge 网关上创建服务监控器

可以创建服务监视器,以便为特定类型的网络流量定义运行状况检查参数。将服务监视器与池关联后,将根据服务监视器参数监控池成员。

过程

  1. 打开 Edge 网关服务。
    1. 在左侧一级导航面板中选择资源,然后在页面顶部导航栏中选择云资源选项卡。
    2. 在左侧二级导航面板中,选择 Edge 网关
    3. 单击目标 Edge 网关名称旁边的单选按钮,然后单击服务
  2. 导航到负载均衡器 > 服务监控
  3. 单击创建 (创建按钮) 按钮。
  4. 输入服务监视器的名称。
  5. (可选) 为服务监视器配置以下选项:
    选项 描述
    间隔 输入使用指定方法监控服务器的间隔。
    超时 输入必须接收来自服务器的响应的最长时间(以秒为单位)。
    最大重试次数 输入在声明服务器关闭之前指定的监控方法必须连续失败的次数。
    类型 选择要将运行状况检查请求发送到服务器的方式 – HTTP、HTTPS、TCP、ICMP 或 UDP。

    根据所选的类型,将激活或停用新建服务监控器对话框中的其余选项。

    预期 (HTTP 和 HTTPS)输入监视器希望在 HTTP 或 HTTPS 响应的状态行中匹配的字符串(例如 HTTP/1.1)。
    方法 (HTTP 和 HTTPS)选择用于检测服务器状态的方法。
    URL (HTTP 和 HTTPS)输入要在服务器状态请求中使用的 URL。
    注: 如果选择 POST 方法,则必须为 发送指定一个值。
    发送 (HTTP、HTTPS、UDP)输入要发送的数据。
    接收 (HTTP、HTTPS 和 UDP)输入要在响应内容中匹配的字符串。
    注: 如果 预期不匹配,则监视器不会尝试匹配 接收内容。
    扩展 (全部)以键=值对的形式输入高级监视器参数。例如,warning=10 表示当服务器未在 10 秒内响应时其状态将设置为警告。所有扩展项都应使用回车符分隔。例如:
    <extension>delay=2
    critical=3
    escape</extension>
  6. 要保留更改,请单击保留

示例: 为每个协议支持的扩展

表 1. 适用于 HTTP/HTTPS 协议的扩展
监视器扩展 描述
no-body 不等待文档正文,并且在 HTTP/HTTPS 标头后停止读取。
注: 仍会发送 HTTP GET 或 HTTP POST;而非 HEAD 方法。
max-age=SECONDS 当文档存在时间超过 SECONDS 时发出警告。该数字可以采用以下形式:10m 表示分钟数,10h 表示小时数或 10d 表示天数。
content-type=STRING 在 POST 调用中指定 Content-Type 标头媒体类型。
linespan 允许正则表达式跨换行符(前面必须加 -r 或 -R)。
regex=STRING 或 ereg=STRING 在页面中搜索正则表达式 STRING。
eregi=STRING 在页面中搜索不区分大小写的正则表达式 STRING。
invert-regex 找到时返回 CRITICAL,未找到时返回 OK。
proxy-authorization=AUTH_PAIR 在具有基本身份验证的代理服务器上指定 username:password。
useragent=STRING User Agent 的形式发送 HTTP 标头中的字符串。
header=STRING 发送 HTTP 标头中的任何其他标记。多次用于其他标头。
onredirect=ok|warning|critical|follow|sticky|stickyport 指示如何处理重定向的页面。

stickyfollow 类似,但遵循指定的 IP 地址。stickyport 可确保端口保持不变。

pagesize=INTEGER:INTEGER 指定所需的最小和最大页面大小(以字节为单位)。
warning=DOUBLE 指定导致警告状态的响应时间(以秒为单位)。
critical=DOUBLE 指定导致严重状态的响应时间(以秒为单位)。
表 2. 仅适用于 HTTPS 协议的扩展
监视器扩展 描述
sni 启用 SSL/TLS 主机名扩展支持 (SNI)。
certificate=INTEGER 指定证书必须有效的最小天数。端口默认为 443。如果使用此选项,则不检查 URL。
authorization=AUTH_PAIR 在具有基本身份验证的站点上指定 username:password。
表 3. 适用于 TCP 协议的扩展
监视器扩展 描述
escape 允许在 send 或 quit 字符串中使用 \n\r\t\。必须位于 send 或 quit 选项之前。默认情况下,不会向 send 添加任何内容,并向 quit 末尾添加 \r\n
all 指定在服务器响应中需要出现所有预期字符串。默认情况下使用 any
quit=STRING 将字符串发送到服务器,以便完全关闭连接。
refuse=ok|warn|crit 以状态 okwarncriti 接受 TCP 拒绝。默认情况下,使用状态 crit
mismatch=ok|warn|crit 以状态 okwarncrit 接受预期字符串不匹配。默认情况下,使用状态 warn
jail 隐藏 TCP 套接字的输出。
maxbytes=INTEGER 当收到超过指定字节数的字节数时,关闭连接。
delay=INTEGER 在发送字符串和轮询响应之间等待指定的秒数。
certificate=INTEGER[,INTEGER] 指定证书必须有效的最小天数。第一个值是表示警告的 #days,第二个值是表示严重的天数(如果未指定,则为 0)。
ssl 使用 SSL 进行连接。
warning=DOUBLE 指定导致警告状态的响应时间(以秒为单位)。
critical=DOUBLE 指定导致严重状态的响应时间(以秒为单位)。

下一步做什么

为负载均衡器添加服务器池。请参见使用 VMware Cloud Director Service Provider Admin Portal在 NSX Data Center for vSphere Edge 网关上添加服务器池进行负载均衡

使用 VMware Cloud Director Service Provider Admin PortalNSX Data Center for vSphere Edge 网关上添加服务器池进行负载均衡

您可以添加服务器池,以灵活高效地管理和共享后端服务器。池管理负载均衡器分配方法,并连接一个服务监控器以监控运行状况检查参数。

过程

  1. 打开 Edge 网关服务。
    1. 在左侧一级导航面板中选择资源,然后在页面顶部导航栏中选择云资源选项卡。
    2. 在左侧二级导航面板中,选择 Edge 网关
    3. 单击目标 Edge 网关名称旁边的单选按钮,然后单击服务
  2. 导航到负载均衡器 >
  3. 单击创建 (创建按钮) 按钮。
  4. 键入负载均衡器池的名称和可选描述。
  5. 算法下拉菜单中选择服务的均衡方法:
    选项 描述
    ROUND-ROBIN 将根据分配的权重来轮流使用每个服务器。当服务器处理时间平均分布时,这是最平稳最合理的算法。
    IP-HASH 根据每个数据包的源和目标 IP 地址的哈希选择一个服务器。
    LEASTCONN 根据服务器上已打开的连接数将客户端请求分配到多个服务器。新连接将被发送到打开连接数最少的服务器。
    URI 将对 URI 的左侧部分(问号之前)进行哈希计算并除以正在运行的服务器的总权重。结果会指出哪个服务器将接收请求。此选项确保只要服务器没有出现故障,URI 就会始终定向到同一服务器。
    HTTPHEADER

    在每个 HTTP 请求中查找 HTTP 标头名称。圆括号中的标头名称不区分大小写,类似于 ACL ‘hdr()’ 函数。如果标头不存在或不包含任何值,将应用 ROUND-ROBIN 算法。HTTP HEADER 算法参数有一个选项 headerName=<name>。例如,您可以使用 host 作为 HTTP HEADER 算法参数。

    URL

    在每个 HTTP GET 请求的查询字符串中查找参数中指定的 URL 参数。如果参数后跟等号 = 和一个值,则对该值进行哈希计算并除以正在运行的服务器的总权重。结果会指出哪个服务器接收请求。此过程用于跟踪请求中的用户标识符,并确保只要没有服务器开启或关闭,就始终将同一用户 ID 发送到同一服务器。如果未找到任何值或参数,则应用 ROUND-ROBIN 算法。URL 算法参数有一个选项 urlParam=<url>

  6. 向池添加成员。
    1. 单击添加 (创建按钮) 按钮。
    2. 输入池成员的名称。
    3. 输入池成员的 IP 地址。
    4. 输入成员用于接收来自负载均衡器的流量的端口。
    5. 输入成员用于接收运行状况监控器请求的监控器端口。
    6. 权重文本框中,键入该成员将处理的流量比例。必须是 1-256 范围内的整数。
    7. (可选) 最大连接数文本框中,键入成员可以处理的最大并发连接数。
      当入站请求数超过最大值时,请求将排队,然后负载均衡器等待释放连接。
    8. (可选) 最小连接数文本框中,键入成员必须始终接受的最小并发连接数。
    9. 单击保留将新成员添加到池。
      该操作可能需要一分钟才能完成。
  7. (可选) 要使后端服务器可以看到客户端 IP 地址,请选择透明
    未选择 透明(默认值)时,后端服务器会将流量源的 IP 地址视为负载均衡器的内部 IP 地址。

    选择透明时,源 IP 地址将是客户端的实际 IP 地址,并且必须将 Edge 网关设置为默认网关,以确保返回数据包通过 Edge 网关。

  8. 要保留更改,请单击保留

下一步做什么

为负载均衡器添加虚拟服务器。虚拟服务器有一个公共 IP 地址,为所有入站客户端请求提供服务。请参见使用 VMware Cloud Director Service Provider Admin Portal在 NSX Data Center for vSphere Edge 网关上添加虚拟服务器

使用 VMware Cloud Director Service Provider Admin PortalNSX Data Center for vSphere Edge 网关上添加应用程序规则

您可以编写应用程序规则,以便直接操作和管理 IP 应用程序流量。

过程

  1. 打开 Edge 网关服务。
    1. 在左侧一级导航面板中选择资源,然后在页面顶部导航栏中选择云资源选项卡。
    2. 在左侧二级导航面板中,选择 Edge 网关
    3. 单击目标 Edge 网关名称旁边的单选按钮,然后单击服务
  2. 导航到负载均衡器 > 应用程序规则
  3. 单击添加 (创建按钮) 按钮。
  4. 输入应用程序规则的名称。
  5. 输入应用程序规则的脚本。
    有关应用程序规则语法的信息,请参见 http://cbonte.github.io/haproxy-dconv/2.2/configuration.html
  6. 要保留更改,请单击保留

下一步做什么

将新应用程序规则关联到为负载均衡器添加的虚拟服务器。请参见使用 VMware Cloud Director Service Provider Admin Portal在 NSX Data Center for vSphere Edge 网关上添加虚拟服务器

使用 VMware Cloud Director Service Provider Admin PortalNSX Data Center for vSphere Edge 网关上添加虚拟服务器

VMware Cloud Director 中将 NSX Data Center for vSphere Edge 网关内部或上行链路接口作为虚拟服务器进行添加。虚拟服务器有一个公共 IP 地址,为所有入站客户端请求提供服务。

默认情况下,负载均衡器会在每个客户端请求后关闭服务器 TCP 连接。

过程

  1. 打开 Edge 网关服务。
    1. 在左侧一级导航面板中选择资源,然后在页面顶部导航栏中选择云资源选项卡。
    2. 在左侧二级导航面板中,选择 Edge 网关
    3. 单击目标 Edge 网关名称旁边的单选按钮,然后单击服务
  2. 导航到负载均衡器 > 虚拟服务器
  3. 单击添加 (创建按钮) 按钮。
  4. 常规选项卡上,配置虚拟服务器的以下选项:
    选项 描述
    启用虚拟服务器 单击启用虚拟服务器。
    启用加速 单击启用加速。
    应用程序配置文件 选择要与虚拟服务器相关联的应用程序配置文件。
    名称 键入虚拟服务器的名称。
    描述 键入虚拟服务器的可选描述。
    IP 地址 键入或浏览选择负载均衡器侦听的 IP 地址。
    协议 选择虚拟服务器接受的协议。您必须选择选定应用程序配置文件使用的相同协议。
    端口 键入负载均衡器侦听的端口号。
    默认池 选择负载均衡器将使用的服务器池。
    连接限制 (可选)键入虚拟服务器可以处理的最大并发连接数。
    连接速率限制 (CPS) (可选)键入每秒最大新入站连接请求数。
  5. (可选) 要将应用程序规则与虚拟服务器相关联,请单击高级选项卡,然后完成以下步骤:
    1. 单击添加 (创建按钮) 按钮。
      此时将显示为负载均衡器创建的应用程序规则。如有必要,为负载均衡器添加应用程序规则。请参见 使用 VMware Cloud Director Service Provider Admin Portal在 NSX Data Center for vSphere Edge 网关上添加应用程序规则
  6. 要保留更改,请单击保留

下一步做什么

创建 Edge 网关防火墙规则,以允许流向新虚拟服务器(目标 IP 地址)的流量。请参见在 VMware Cloud Director Service Provider Admin Portal 中添加 NSX Data Center for vSphere Edge 网关防火墙规则