NSX Advanced Load Balancer 包括许多速率调整和流量限制选项。这些选项可以在虚拟服务、池/服务器或客户端级别应用。这些选项存在于整个 UI 中的多个位置,具体取决于它们所应用到的特定对象。此外,还可以使用 DataScript 创建自定义限制。

虚拟服务限制

虚拟服务 > 编辑 > 高级选项卡中,以下选项允许为特定虚拟服务指定连接和请求的限制:

  • 要限制速率的新 TCP 连接数:设置可在配置的时间段内从所有客户端为此虚拟服务创建的新连接的最大阈值。“报告”操作将为过多的连接生成日志,否则,允许它们正常进行。丢弃 SYN 将以静默方式放弃客户端 SYN,而 RST 会将连接重置发送回客户端。

  • 要限制速率的新 HTTP 请求数:设置可在配置的时间段内从此虚拟服务的所有客户端发起的 HTTP 请求的最大阈值。“报告”操作将为过多的请求生成日志,否则,允许它们正常进行。关闭 TCP 连接将向客户端发送连接 RST。“发送本地响应”允许 NSX Advanced Load Balancer 使用简单的网页和适当的状态代码进行响应。“发送 HTTP 重定向”会将过多请求转发到其他 URI 或目标。

  • 最大吞吐量:为每个 SE 指定虚拟服务的最大带宽(以位/秒为单位)。例如,如果虚拟服务扩展到 3 个 SE,则每个 SE 将在 1 Gbps 之后实施限制,因此,实际上总共将具有 3 Gbps。因此,将虚拟服务放置在更多 SE 上时,吞吐量也会横向扩展。超出此限制的流量将被丢弃,可能需要客户端或服务器重新传输。设置此限制后,虚拟服务详细信息页面中的分析选项卡将在“吞吐量”衡量指标图表上显示一条水平虚线,表示当前吞吐量与允许的最大吞吐量。

  • 最大并发连接数:指定并发打开连接的最大数目。超过此数量的连接尝试将被重置 (TCP) 或丢弃 (UDP),直到并发连接总数低于阈值为止。设置此限制后,虚拟服务“详细信息”页面的分析选项卡将在“打开的连接数”衡量指标上显示一条水平虚线,表示当前打开的连接数与允许的最大连接数。

服务器池限制

> 编辑 > 高级选项卡中,可使用以下选项设置服务器并发连接限制。

每个服务器的最大连接数:指定服务器允许的最大并发连接数。如果池中的所有服务器都达到该最大值,虚拟服务将发送 TCP 连接重置或以静默方式丢弃新的 UDP 流,除非在服务器关闭设置中另有指定,如上所述。在关闭到服务器的现有连接后,该服务器立即符合接收下一个客户端连接的条件。有效值为零(这将禁用连接限制)或从 50 到 10,000 的任意数字。

客户端限制

虚拟服务 > 编辑 > 策略 > 网络安全中,创建一个新策略,并将操作设置为速率限制。

  • 速率限制:限制客户端打开的连接数超过最大速率字段中指定的每秒连接数。超过此数值的客户端将以静默方式丢弃其过多的连接尝试。如果选择突发大小,并且客户端最近未打开连接,则它们可能会突增到“最大速率”以上。此功能可应用于 TCP 或 UDP。与“匹配条件”匹配的所有客户端都将被视为一个存储桶。例如,如果未定义匹配,所有 IP 地址都将增加“最大速率”计数器。将对所有新连接的客户端进行限制。可以对不同的网络、地理位置或 IP 和端口条件应用单独的限制。

模板 > 应用程序配置文件 > 编辑 > DDoS 选项卡中,可以使用“速率限制 HTTP 和 TCP 设置”下拉菜单中的多个选项。

  • 限制来自客户端的连接速率:限制从任何单个客户端 IP 地址到虚拟服务的所有连接的速率。

  • 限制从客户端到所有 URL 的请求速率:限制从任何单个客户端 IP 地址到虚拟服务的全部 URL 的所有 HTTP 请求的速率。

  • 限制从所有客户端到某个 URL 的请求速率:限制从所有客户端 IP 地址到任何单个 URL 的所有 HTTP 请求的速率。

  • 限制从客户端到某个 URL 的请求速率:限制从任何单个客户端 IP 地址到任何单个 URL 的所有 HTTP 请求的速率。

  • 限制从客户端到所有 URL 的失败请求速率:在指定的时间段内,来自客户端的失败请求数超过该时间段的阈值后,限制来自该客户端的所有请求的速率。将根据客户端的 IP 地址对客户端进行跟踪。根据客户端或服务器端错误状态代码将请求视为失败,这与 NSX Advanced Load Balancer 记录日志和衡量指标子系统标记失败请求的方式一致。

  • 限制从所有客户端到某个 URL 的请求速率:在指定的时间段内,到 URI 的失败请求数超过该时间段的阈值后,限制到该 URI 的所有请求的速率。根据客户端或服务器端错误状态代码将请求视为失败,这与 NSX Advanced Load Balancer 记录日志和衡量指标子系统标记失败请求的方式一致。

  • 限制从客户端到某个 URL 的失败请求速率:从客户端发送到 URI 的失败请求计数超过该时间段的阈值后,将在指定的时间内限制从该客户端发送到 URI 的所有请求的速率。根据客户端或服务器端错误状态代码将请求视为失败,这与 NSX Advanced Load Balancer 记录日志和衡量指标子系统标记失败请求的方式一致。

  • 限制从客户端到所有 URL 的扫描速率:自动跟踪客户端并将其分类为“良好”、“错误”和“未知”组。将根据客户端的 IP 地址对客户端进行跟踪。在 NSX Advanced Load Balancer 扫描检测系统为来自客户端并成功完成的请求生成历史记录时,这些客户端将添加到良好组中。在客户端没有足够的历史记录时,这些客户端将添加到未知组中。具有失败请求历史记录的客户端将添加到错误组中,并使用比未知客户端组更严格的阈值限制其请求速率。NSX Advanced Load Balancer 扫描检测系统会自动调整自身,以便在通过 ADC 更改流量模式时动态更改良好、错误和未知客户端 IP 组成员。换句话说,如果对网站的更改导致大多数客户同时发生故障(例如 404 错误),NSX Advanced Load Balancer 将进行调整,而不是将所有客户端都标记为尝试扫描该网站。

  • 限制从所有客户端到所有 URL 的扫描速率:与之前的限制类似,但将来自所有客户端的扫描作为单个实体进行限制,而不是单独进行限制。在所有客户端集中达到限制后,将重置发送后续失败请求的任何客户端。

  • 根据标头或 Cookie 限制客户端的速率NSX Advanced Load Balancer 可以根据标头或 Cookie 限制客户端的速率。它跟踪已看到的标头或 Cookie 值的请求数。如果超出指定的阈值,将限制客户端的速率。