创建池弹出窗口和编辑池弹出窗口具有相同的界面,其中包含以下选项卡:

  • 设置

  • 服务器

  • 高级

  • 查看

步骤 1:设置

创建/编辑池 > 设置选项卡包含池的基本设置。显示的确切选项可能因 NSX Advanced Load Balancer 中配置的云类型而异。例如,VMware 中的服务器可能会显示按网络选择服务器选项。



要添加或编辑池设置,请执行以下操作:

字段

描述

名称

为池提供唯一的名称。

注:

名称字段中不允许使用特殊字符“$”。

默认服务器端口

到服务器的新连接将使用该目标服务端口。默认端口为 80,除非它是从虚拟服务继承的(如果池是在同一工作流中创建的),或者端口是手动分配的。可以在步骤 2: 服务器选项卡中编辑各个服务器的服务端口字段,以更改每个服务器的默认服务器端口设置。

正常禁用超时

1 到 7,200 分钟之间的时间值,用于正常停用后端服务器。在终止到禁用的服务器的现有连接之前,虚拟服务将等待特定的时间。结束值是特殊的:0 导致立即终止,-1(表示“无限”)永远不会终止。

负载均衡

从下拉菜单中选择负载均衡算法。该选项确定在可用的服务器之间分配连接或 HTTP 请求的方法和优先级。可用的算法包括:

  • 最少连接 - 新连接发送到当前具有最少未完成并发连接数的服务器。这是在创建新的池时的默认算法,最适合通用服务器和协议。将通过步骤 3: 高级选项卡中的“连接分配缓冲期”设置在短时间内逐渐引入具有零连接的新服务器,这会慢慢将新服务器提高到池中的其他服务器的连接数。

    注:

    出现问题(例如,拒绝所有新连接)的服务器的并发连接数为零,最符合条件以接收所有新连接(将会失败)。可以将最少连接算法与被动运行状况监控器结合使用,后者识别此类场景并进行调整。

  • 循环 - 新连接按顺序发送到池中的下一个符合条件的服务器。这种静态算法最适合基本负载测试,但不太适合生产流量,因为它没有考虑各个服务器的速度变化或周期性延迟。

  • 最少负载 - 新连接发送到负载最少的服务器,而无论该服务器具有多少个连接。例如,如果将需要 200 kB 响应的 HTTP 请求发送到一个服务器,并将生成 1 kB 响应的第二个请求发送到一个服务器,该算法根据以前的请求估计发送 1 kB 响应的服务器比仍在流式传输 200 kB 数据的服务器的可用性高。这种想法是为了确保不会将小而快的请求排在很长的请求后面。此算法特定于 HTTP。对于非 HTTP 流量,将默认使用最少连接算法。

  • 最少服务器 - NSX Advanced Load Balancer 确定满足当前客户端负载所需的最少服务器数量,而不是尝试在所有服务器之间分配所有连接或请求。多余的服务器将不再接收流量,并且可能会将其取消置备或暂时关闭电源。该算法调整负载和监控服务器的相应响应延迟变化以监控服务器容量。连接发送到池中的第一个服务器,直到认为它达到容量,并按顺序将下一个新连接发送到下一个可用的服务器。该算法非常适合虚拟机产生成本的托管环境。

  • 一致哈希 - 使用哈希在服务器之间分配新连接,该哈希基于在负载均衡字段下面的字段或(从 17.2.4 版开始)自定义字符串中指定的键。该算法本身结合了负载均衡和持久性,从而最大限度减少添加持久性方法的需求。该算法非常适合对具有动态内容的大量缓存服务器进行负载均衡。它是“一致的”,因为添加或移除服务器并不会导致完全重新计算哈希表。以缓存服务器为例,它不会强制所有缓存必须重新缓存所有内容。如果池具有 9 个服务器,添加第 10 个服务器将导致已有的服务器根据哈希结果将大约 1/9 的命中发送到新添加的服务器。因此,持久性可能仍是非常有用的。不会中断服务器的其余连接。下拉菜单中的可用哈希键是:

    • 客户端的源 IP 地址

    • 客户端的源 IP 地址和端口

    • URI,包括主机标头和路径,例如 www.acme.com/index.htm

    • Callid - 该字段指定 SIP 标头中的调用 ID 字段。在使用该选项时,具有新调用 ID 的 SIP 事务使用一致哈希进行负载均衡,而现有调用 ID 保留在以前选择的服务器上。现有调用 ID 的状态在应用程序配置文件中的“事务超时”参数定义的空闲超时时间内保持不变。只要 SIP 事务的底层 TCP/UDP 传输状态保持不变,现有调用 ID 的状态就是相关的。

    • 自定义字符串,它是用户通过 DataScript 函数 avi.pool.chash 提供的。

    • 自定义标头 - 在自定义标头字段中指定要使用的 HTTP 标头,例如来源地址。该字段区分大小写。如果该字段为空或标头不存在,则将连接或请求视为未命中,并根据哈希结果发送到服务器。

  • 最快响应 - 将新连接发送到当前为新连接或请求提供最快响应的服务器。这是以收到第一个字节的时间测量的。在端到端计时图表中,这反映为服务器 RTT 加上应用程序响应时间。在池的服务器包含不同的功能或它们处理短期的连接时,该选项是最佳选择。出现问题(例如,到包含图像的数据存储的连接中断)的服务器通常会很快响应,并显示出现 HTTP 404 错误。在使用最快响应算法时,最佳做法是还要启用被动运行状况监控器,后者考虑服务器响应质量,而不仅仅是响应速度,从而识别此类场景并进行调整。

    注:

    出现问题(例如,到包含图像的数据存储的连接中断)的服务器通常会很快响应,并显示出现 HTTP 404 错误。因此,您必须将最快响应算法与被动运行状况监控器结合使用,后者识别此类场景并进行调整。除了负载均衡算法以外,还有一些其他因素可能会影响连接分配,例如连接多路复用、服务器比率、连接分配缓冲期和服务器持久性。

  • 最少任务 - 根据服务器反馈自适应地均衡负载。外部运行状况监控器有助于实施该算法。可以通过 NSX Advanced Load Balancer CLI 和 REST API 配置该算法,但在 NSX Advanced Load Balancer UI 中不显示该算法。

  • 内核关联性 - 待提供。

持久性

默认情况下,每次客户端打开到虚拟服务的新连接时,NSX Advanced Load Balancer 都会通过新服务器对客户端进行负载均衡。无法保证客户端重新连接到它以前连接到的同一服务器。持久性配置文件确保来自同一客户端的后续连接连接到同一服务器。可以将持久性视为负载均衡的对立面:客户端到 NSX Advanced Load Balancer 的第一个连接是负载均衡的;此后,该客户端及其建立的任何连接在所需的时间内始终使用同一服务器。对于大多数在本地保留客户端会话信息的服务器,持久性连接是至关重要的。例如,很多 HTTP 应用程序将用户的信息在内存中保存 20 分钟,以使用户能够重新连接到同一服务器以继续运行其会话。最佳做法是,需要持久性的 HTTP 虚拟服务必须使用 HTTP Cookie,而需要持久性的常规 TCP 或 UDP 应用程序将使用客户端的源 IP。有关持久性类型的更多信息,请参阅“持久性配置文件”文章。

自动缩放策略



  • 名称 - 为策略选择的名称。

  • 实例 - 可以在任何给定时间运行的最小和最大实例数。默认最小值为零。允许的最大值为 400。

  • 扩展

    • 警示 - 在由于任何选定的警示配置而引发警示时,将扩展池。可以选择多个选项,如下所示。



    • 冷却期 - 在该时间段(以秒为单位)内,不会触发新的扩展操作,以留出时间完成以前的扩展操作。

    • 调整幅度 - 在系统确定需要扩展时同时启动的最大服务器实例数。将选择实际启动的实例数,以使最终服务器实例总数少于或等于为池指定的最大数量。

  • 缩减

    • 警示 - 在由于任何选定的警示配置而引发警示时,将缩减池。可以选择多个选项,如上所示。

    • 冷却期 - 在该时间段(以秒为单位)内,不会触发新的缩减操作,以留出时间完成以前的缩减操作。

    • 调整幅度 - 在系统确定需要缩减时同时终止的最大服务器实例数。将选择实际终止的实例数,以使最终剩余服务器实例总数多于或等于为池指定的最小数量。

自动缩放启动配置

如果已配置,NSX Advanced Load Balancer 将触发池服务器创建和删除编排。仅公有云自动缩放组和 OpenStack 支持该选项。

运行状况监控

包括运行状况监控器以验证池中的服务器实例的运行状况。共有两种类型的运行状况监控器:

  • 被动运行状况监控器 - 被动运行状况监控器仅侦听客户端到服务器的通信。如果服务器响应并指示出现错误(例如 500 繁忙或 TCP 连接错误),被动运行状况监控器将减少发送到该服务器的连接或请求数量。减少百分比取决于池中的可用服务器数量。在服务器对传送到它的受限制请求做出令人满意的响应时,被动运行状况监控器将服务器恢复为完整流量大小。您可以将该监控器与任何其他运行状况监控器一起使用。错误是在分配给虚拟服务的分析配置文件中定义的。最佳做法是,除了可以配置的任何合成检查以外,还要确保启用了被动运行状况监控器。

  • 主动运行状况监控器 - 除了正常的客户端到服务器流量以外,NSX Advanced Load Balancer 还可能会生成到服务器的合成连接或请求以确保服务器的运行状况完整性。可以通过以下方法将一个或多个运行状况监控器添加到池中:单击绿色 + 添加主动监控器按钮并选择一个运行状况监控器,或者单击以创建新的监控器。您可以单击监控器名称右侧的垃圾桶图标,以将运行状况监控器与池取消关联。

按名称查找服务器

启用按名称查找服务器。

将主机标头重写为服务器名称

将入站主机标头重写为请求转发到的服务器的名称。如果启用该功能,则会重写发送到池中的所有服务器的请求的主机标头。

通过 SSL 访问后端服务器

NSX Advanced Load Balancer 服务引擎和后端服务器之间启用 SSL 加密。这与虚拟服务中的 SSL 选项无关,后者启用从客户端到 NSX Advanced Load Balancer 服务引擎的 SSL 加密。

  • SSL 配置文件:确定 NSX Advanced Load Balancer 在与服务器协商 SSL 时支持哪些 SSL 版本和密码。

  • 服务器 SSL 证书验证 PKI 配置文件:该选项验证服务器提供的证书。如果未启用,在发送运行状况检查时,服务引擎自动接受服务器提供的证书。有关证书验证的更多帮助,请参阅“PKI 配置文件”一节。

  • 服务引擎客户端证书:在与服务器建立 SSL 连接时,无论是正常的客户端到服务器通信还是执行运行状况监控器,服务引擎都会向服务器提供该证书。

启用实时衡量指标

如果选中该选项,则为服务器和池衡量指标启用实时衡量指标。默认为“关闭”。

步骤 2: 服务器

服务器选项卡支持添加/移除/禁用/启用服务器,并显示这些操作的结果。



添加服务器

可以通过以下三种方法之一指定添加到池中的服务器:

  1. IP 地址、IP 范围或 DNS 名称

  2. IP 组

  3. 公有云中的自动缩放

字段

描述

IP 地址、范围或 DNS 名称

使用一种或多种列出的方法将一个或多个服务器添加到池中。下面的示例显示使用多种方法创建的服务器。

  • 按 IP 地址添加 - 在服务器 IP 地址字段中,输入要添加的服务器的 IP 地址。添加服务器按钮将从浅灰色变为绿色。您也可以使用短划线输入 IP 地址范围,例如 10.0.0.1-10.0.0.20。

  • 按 DNS 可解析名称添加 - 在服务器 IP 地址字段中,输入要添加的服务器的 FQDN。如果服务器成功解析,将显示 IP 地址并且“添加服务器”按钮变为绿色。单击添加服务器按钮以将其添加到池服务器列表中。有关更多信息,请参见按 DNS 将服务器添加到池

    • 单击按网络选择服务器将打开可访问的网络列表。显示的内容类似于以下示例:



    • 在该示例中,我们将鼠标指针悬停在名为 2a-private - 10.0.1.0/24 的网络上,将突出显示该网络。

    • 单击该网络所在的行将导致该网络上的服务器如下所示。您可以筛选服务器搜索内容,例如,搜索“Demo”,然后选择所有匹配的服务器。



    • 选中两个服务器旁边的框将生成以下结果。



    • 单击上面窗口中的添加服务器按钮将完成选择过程。将在表中反映成功添加的服务器,如下所示。



IP 组

并非每次将一个服务器添加到池中,可以将多个服务器的 IP 地址存储在以逗号分隔的 IP 组中,以便在一个步骤中添加多个服务器。如果在其他地方将同一列表用于 IP 允许列表、DataScript 或类似的自动化用途,这可能是非常有用的。但要注意,在使用该方法时,无法使用很多常见的池功能,例如,手动停用服务器,设置特定的服务端口或设置比率。用于添加服务器的 IP 组方法不能与其他方法一起使用。

自动缩放组

AWS 和 Azure 等外部环境定义和管理自己的自动缩放组。

  • 单击该选项将显示用户选择的自动缩放组。



  • 可以选择一个或多个自动缩放组,如下所示。在选择后,请注意候选项列表如何缩减为仅一个自动缩放组,即 ScaleoutASG。



服务器

字段

描述

更改服务器状态

如果将服务器添加到池中,则会填充服务器选项卡中的表。可以使用该选项卡移除、启用、禁用或正常禁用服务器。在保存对服务器状态的更改时,该更改将立即生效。下表显示启用了两个服务器。



  • 移除 - 从池中选择一个或多个要移除的服务器。这会立即重置这些服务器的任何现有客户端连接,并从池的列表中清除该服务器。

  • 启用 - 选择一个或多个停用的服务器,然后单击启用按钮以重新激活这些服务器。如果启用服务器,则会使该服务器立即可用于负载均衡,但前提是该服务器通过了首次运行状况检查。

  • 禁用 - 选择一个或多个启用的服务器以将其停用。NSX Advanced Load Balancer 立即将禁用的服务器标记为无法用于新连接,并重置任何现有的客户端连接。在服务器处于已禁用状态时,它不会收到运行状况检查。

编辑服务器

可以编辑添加到池中的服务器的 IP 地址端口比率字段以修改这些服务器。

  • 状态 - 服务器的状态可能是“已启用”或“已禁用”。

  • 服务器 - 服务器的名称或 IP 地址(如果服务器是手动添加的)。

  • IP 地址 - 如果更改现有服务器的 IP 地址,将重置该服务器的任何现有连接。

  • 端口 - 该可选字段为服务器提供可能与池中的其他服务器不同的特定端口号,以覆盖池的默认服务端口号。

  • 比率 - 该可选字段为服务器创建不同于其对等体的流量分配。该比率与负载均衡算法一起使用。例如,如果服务器 A 的比率为 2,服务器 B 的比率为 1,则每向服务器 B 发送一个连接,服务器 A 就会收到两个连接。比率可能是 1 到 20 之间的任何数字。

    注:

    比率是以静态方式分配给服务器的。动态负载均衡算法与比率一起使用,但可能会生成不准确的结果,不建议将其用于正常环境。比率通常用于向测试服务器(例如,运行较新的未测试代码版本的服务器)发送少量流量样本。

  • 网络 - 如果使用按网络选择服务器选项,则显示池中的服务器的网络。

  • 标头值 - 该特殊字段由自定义 HTTP 标头持久性使用。可以为每个服务器静态分配一个标识符,例如 s1、s2 等。如果选择的客户端标头存在,并且标头值为 s1,该服务器将接收连接或请求。

  • 重写主机标头 - 它类似于本文前面所述的池级功能,但它是更精细的服务器级功能。

步骤 3: 高级

“池创建/编辑”弹出窗口的高级选项卡指定池的可选设置。



字段

描述

放置设置

在某些场景中,一个服务器可能位于多个网络中。同样,网络可能具有多个 IP 子网,或者多个网络中可能存在一个子网。例如,VMware 服务器可能将多个端口组分配给单个子网,或者将一个端口组分配给多个子网。通常,NSX Advanced Load Balancer 将尝试确定服务器的网络。不过,在它无法确定使用哪个网络的场景中,管理员可能需要手动选择网络,如下所示。

  • 服务器网络 - 单击下拉菜单图标以显示用于放置服务器的潜在网络。该列表可能如下所示。单击所需的网络。



  • 子网 - 在选择网络后,将显示子网。选择一个子网,或使用 10.1.1.0/24 语法输入一个子网。



池满设置

该部分配置 HTTP 请求排队,在后端服务器达到它允许的最大并发连接数后,这会导致 NSX Advanced Load Balancer 将收到的请求排入队列。通过将 HTTP 请求排入队列,可以留出时间等待新连接在服务器上变得可用,从而避免执行配置的池关闭操作。有关更多信息,请参见《VMware NSX Advanced Load Balancer 配置指南》中的 HTTP 请求排队

池故障设置

失败操作 - 定义了三个失败操作。

  • 关闭连接 - 如果池中的所有服务器都关闭,虚拟服务的默认行为是发出 TCP 重置或丢弃 UDP 数据包以关闭新的客户端连接尝试。不会终止现有的连接,即使它们的服务器标记为关闭。假设服务器可能很慢,但仍然能够继续处理现有的客户端连接。

  • HTTP 本地响应 - 返回简单的网页。指定状态代码 200 或 503。如果尚未将自定义 HTML 文件上载到 NSX Advanced Load Balancer,它将返回包含错误代码的基本页面。



    • 状态代码 - 从下拉菜单中选择 200 或 503。

    • 上载文件 - 单击该按钮以导航到并选择一个要作为 SE 本地响应返回的 HTML 页面。

注:

您可以上载任何类型的文件以作为本地响应。使用 UI 配置一个本地文件。要使用 API 更新该本地文件,请以带外方式对 Base64 文件进行编码,并在 API 中使用编码的格式。

  • HTTP 重定向 - 返回重定向 HTTP 响应代码,包括指定的 URL。



    • 状态代码 - 从下拉菜单中选择 301、302 或 307。

    • HTTP/HTTPS - 默认情况下,NSX Advanced Load Balancer 将通过 HTTPS 进行重定向,除非单击了 HTTP。

    • URL - 输入 domain.com/path/file?query=bbb 格式的 URL。

注:

如果启动了至少一个与虚拟服务关联的池,或者具有不需要池的重定向策略,则会将虚拟服务标记为启动。仅存在池关闭操作本身并不会将虚拟服务标记为启动。

您可以为池指定使其可用的最小阈值参数。有关更多信息,请查看将虚拟服务或池标记为启动的参数

如果虚拟服务标记为关闭,并且任何以下情况适用,则不会触发池关闭操作:

  1. VS 上的“在 VS 关闭时移除侦听端口”设置 - 如果设定了该设置并且 VS 关闭,调度程序将丢弃数据包,并且不会触发池关闭操作。

  2. BGP 场景 - 在虚拟服务标记为关闭时,BGP 从对等体中撤销该 VS。对等体不会向该 SE 发送任何流量。

  3. ECMP 场景(无路由汇总)- 在虚拟服务标记为关闭时,控制器从路由器中撤销 VS。因此,路由器不会向该 SE 发送任何流量。

其他设置

禁用端口转换 - 该功能适用于侦听多个服务端口的虚拟服务,例如 Microsoft Lync,它具有多个侦听器端口。并非将所有连接传送到服务器上的单个端口(由池的默认服务器端口或服务器的可选端口字段定义),而是将这些连接发送到在虚拟服务上接收它们时使用的相同端口。

  • 忽略服务器端口 - 只有在池配置为使用一致哈希负载均衡算法或设置了禁用端口转换时,忽略服务器端口选项才是相关的。如果启用了忽略服务器端口,一致哈希算法仅考虑服务器 IP 地址而忽略服务器端口,从而导致在具有相同池成员但具有不同服务器端口的池中选择相同的服务器。



  • 描述 - 在该字段中输入最多 256 个字符的可选描述。该字段仅为了方便用户使用。

  • 连接分配缓冲期 - 如果输入大于 0 的数字以启用该选项,则会导致在指定时间段内发送到服务器的新连接数逐渐增加。例如,假设负载均衡算法设置为“最少连接”,并且一个池具有两个服务器,每个服务器具有 100 个连接。如果添加第三个服务器,将会立即向第三个服务器发送接下来的 100 个连续连接,从而使第三个服务器不堪重负。设置连接分配缓冲期以类似于使用比率的方式将流量添加到新服务器中。在指定的时间段内,新服务器将收到比率不断增加的流量(相对于其对等体)。例如,将过渡期设置为 4 秒意味着,新服务器将在第 1 秒内收到通常提供的流量的 1/4。到第 2 秒时,服务器收到通常可能为其提供的流量的 1/2。在 4 秒的缓冲期时间过后,服务器将收到负载均衡算法确定的正常流量大小。

每个服务器的最大连接数

指定服务器允许的最大并发连接数。如果池中的所有服务器都达到该最大值,虚拟服务将发送 TCP 连接重置或以静默方式丢弃新的 UDP 流,除非在池关闭操作中另有指定,如上所述。在关闭到服务器的现有连接后,该服务器立即符合接收下一个客户端连接的条件。值 0 禁用连接限制。

HTTP 服务器重新选择

该选项重试失败的 HTTP 请求,或从后端服务器中返回一组用户指定的错误代码之一。通常,NSX Advanced Load Balancer 将这些错误消息转回到客户端。有关更多信息,请参见 HTTP 服务器重新选择

步骤 4: 检查

检查选项卡显示在前面的池创建选项卡中输入的信息的摘要。



检查该信息,然后单击保存以完成创建池的过程。如果需要,您可以单击窗口顶部的相应选项卡以返回到以前的任何步骤。

注:

仅在创建新的池时显示检查选项卡;在编辑现有的池时不显示该选项卡。

用户服务 SSL 模式

在池配置中引入了一个名为 user_service_ssl_mode 的新控制项。如果启用了该控制项,将根据客户端连接模式确定服务器端连接的 SSL 模式。服务器连接的 SSL 模式是由接收请求的虚拟服务端口上的 SSL 模式确定的。

注:

目前,只能使用 CLI/API 配置该控制项。

如果为启用了 SSL 的 VS 服务端口同时配置了 use_service_ssl_modeuse_service_port,将使用池的 SSL 配置文件/证书设置向服务器发送 SSL 流量。对于未启用 SSL 的 VS 服务端口,将向服务器发送非 SSL 流量。

请参阅下表:

use_service_ssl_mode

池 SSL

发送到后端服务器的流量

False

False

所有明文流量

False

True

所有 SSL 流量

True

True

对于启用了 SSL 的 VS 服务端口,将使用池 SSL 配置文件/证书设置发送 SSL 流量。对于未启用 SSL 的 VS 服务端口,将发送非 SSL 流量。

例如,如果 VS 在 8081 端口上收到非 SSL 流量,则我们在 8081 端口上将非 SSL 流量发送到后端服务器。同样,如果 VS 在 8443 端口上收到 SSL 流量,则 NSX Advanced Load Balancer8443 端口上使用在池级别配置的 SSL 设置将 SSL 流量发送到后端服务器。

注:

只有在 user_service_port(禁止端口转换)设置为 true 时,才能启用该控制项。因此,NSX Advanced Load Balancer 保留客户端到后端服务器的目标端口。

可以在池端配置 ssl_profile 以使用 use_service_ssl_mode 选项。