持久性配置文件控制强制客户端在指定持续时间内保持连接到同一服务器的设置。这有时称为“粘性连接”。

默认情况下,每次客户端连接到虚拟服务时,负载均衡可能会将客户端发送到不同的服务器。服务器持久性保证客户端每次连接到虚拟服务时重新连接到同一服务器,直到持久性不再有效。启用持久性配置文件可以确保客户端每次或至少在所需的持续时间内重新连接到同一服务器。对于大多数在本地保留客户端会话信息的服务器,持久性连接是至关重要的。

所有持久性方法基于相同的原理,即,查找客户端的唯一标识符,并在所需的时间长度内记住该标识符。可以将持久性信息存储在 Vantage 服务引擎本地,也可以将其发送到客户端,例如,通过 Cookie 或 TLS 票证。然后,客户端向 SE 提供该标识符,这会指示 SE 将客户端发送到正确的服务器。

持久性是在模板 > 配置文件 > 持久性配置文件中配置的可选配置文件。在创建配置文件后,可以将其附加到一个或多个池。

持久性类型

可以为 NSX Advanced Load Balancer 配置多个持久性模板:

  • HTTP Cookie 持久性NSX Advanced Load Balancer 将 Cookie 插入到 HTTP 响应中。

  • 应用程序 Cookie 持久性NSX Advanced Load Balancer 读取现有的服务器 Cookie 或 URI 嵌入数据,例如 JSessionID。

  • HTTP 自定义标头持久性:管理员可以创建标头值到特定服务器的自定义静态映射。

  • 客户端 IP 持久性:将客户端的 IP 作为标识符并映射到服务器。

  • TLS 持久性:将持久性信息嵌入在客户端的 SSL/TLS 票证 ID 中

  • GSLB 站点 Cookie 持久性:可以将 GSLB 应用程序配置为保持连接到启动事务的站点。(请参见VMware NSX Advanced Load Balancer GSLB 指南》中的 GSLB 站点 Cookie 持久性一节。)

在持久性配置文件外部,提供了两种其他类型的持久性:

  • DataScript:可以使用 DataScript 构建自定义持久性以获得唯一的持久性标识符。

  • 一致哈希:这是组合的负载均衡算法和持久性方法,它可以将不同的标识符作为键。

持久性镜像

持久性数据存储在 NSX Advanced Load Balancer 服务引擎本地,或发送到客户端并由客户端存储。

客户端存储的持久性(包括 HTTP Cookie、HTTP 标头映射和一致哈希)不会保留在服务引擎本地。在收到数据(例如,客户端提供的 Cookie)时,它包含客户端的持久性服务器的 IP 地址和端口。不会消耗本地存储或内存以镜像持久性。持久性表可能是无限大的,因为不会在本地保留表。

对于本地存储的持久性方法(包括 HTTP 应用程序 Cookie、TLS、客户端 IP 地址和 DataScript),NSX Advanced Load Balancer SE 在本地表中保留持久性映射。该表自动镜像到支持虚拟服务的所有其他服务引擎和控制器。SE 故障切换不会导致持久性映射丢失。要支持更大的持久性表,请为服务引擎分配更多内存:选择 SE 组 > 连接表设置

持久性配置文件设置

选择模板 > 配置文件 > 持久性以打开“持久性配置文件”选项卡。

  • 搜索:在对象列表中搜索。

  • 创建:打开新建持久性配置文件屏幕。

  • 编辑:打开现有配置文件的编辑持久性配置文件屏幕。

  • 删除:只有在配置文件当前未分配给虚拟服务时,才能删除该配置文件。将显示一条错误消息以指示引用该配置文件的虚拟服务。可以编辑默认系统配置文件,但无法将其删除。

该选项卡上的表为每个持久性配置文件提供以下信息:



字段

描述

持久性名称

配置文件的名称。

类型

下一节提供了每种类型的持久性的完整描述。持久性可能具有以下类型之一:

  • 应用程序 Cookie

  • 客户端 IP 地址

  • 自定义 HTTP 标头

  • GSLB 站点

  • HTTP Cookie

  • TLS

创建持久性配置文件

新建持久性配置文件编辑持久性配置文件屏幕具有相同的界面。



创建或编辑持久性配置文件:

字段

描述

名称

在“名称”字段中输入持久性配置文件的唯一名称。

类型

使用类型下拉菜单选择持久性类型。可用的选项包括:

  • 应用程序 CookieNSX Advanced Load Balancer 使用服务器插入的现有 Cookie,而不是让 NSX Advanced Load Balancer 为持久性插入新的 Cookie。如果 Cookie 不存在,则 NSX Advanced Load Balancer 查找同名的 URI 查询并保留该值。通常,将对 ASP 或 Java 会话 ID 执行该持久性。

  • 客户端 IP 地址:在该配置文件的持久性超时中定义的时间内,NSX Advanced Load Balancer 将客户端的源 IP 地址记录在一个表中。在表中保留该 IP 地址时,用户建立的任何新连接将发送到同一服务器。客户端 IP 地址持久性表存储在服务引擎上的内存中,并自动镜像到控制器以及支持该虚拟服务的所有其他服务引擎。

    注:

    NSX Advanced Load Balancer 中的 IPv6 支持该功能。可以将两种类型的 IP 地址(IPv4 和 IPv6)用于持久性类型 - 客户端 IP 地址

  • 自定义 HTTP 标头:该方法允许为持久性指定 HTTP 标头。服务引擎将检查定义的标头的值,并将该值与池中的每个服务器的静态分配标头字段进行匹配。如果匹配,客户端将保持连接到同一服务器。服务器的标头字段是在池的“编辑服务器”页面中配置的,将在该页面中添加新服务器。

    • 标头名称:指定 HTTP 标头,将使用它的值进行持久性查找。

  • GSLB 站点:这允许全局应用程序的给定客户端保持连接到它传送到的第一个站点。

  • HTTP Cookie:适用于附加了 HTTP 应用程序配置文件的虚拟服务。NSX Advanced Load Balancer 将 Cookie 插入到出站 HTTP 响应中,并读取入站请求上的 Cookie。Cookie 基于会话,这意味着,只要客户端将其浏览器保持打开状态,Cookie 持久性就会保持有效。如果关闭浏览器,则会移除客户端浏览器存储的 Cookie,从而关闭连接和持久性。Cookie 唯一地标识每个客户端,这在多个用户从同一 IP 地址访问虚拟服务时是非常有用的。客户端存储持久性信息,因此,它不会消耗服务引擎上的内存。

    • HTTP Cookie 名称:指定 HTTP Cookie 名称。如果将该字段保留空白,则系统生成一个随机的 8 字符 Cookie 名称。

  • TLS:适用于终止 SSL 或 TLS 的虚拟服务。此方法会将用户持久性信息嵌入到 TLS 会话的票证字段中。与旧 SSL v3 协商的客户端使用一种变体,以将持久性信息插入到 SSL 会话 ID 中。NSX Advanced Load Balancer 不允许客户端重新协商会话,这会提高安全性,并且还确保 NSX Advanced Load Balancer 可以保持持久性,因为它控制是否以及何时重新协商和重新创建会话 ID。

在持久性服务器关闭时选择新的服务器

确定该配置文件如何处理以下情况:运行状况监控器将服务器标记为关闭,同时 NSX Advanced Load Balancer 将客户端保持连接到该服务器。

  • 立即NSX Advanced Load Balancer 立即选择新的服务器以替换关闭的服务器,并将持久性条目切换到新的服务器。

  • 从不:不选择替换服务器。持久性条目需要根据持久性类型正常过期。

持久性超时

在“持久性超时”字段中输入保留客户端 IP 地址的分钟数。如果输入 0,将禁用持久性并允许立即使用新服务器对新连接进行负载均衡。在关闭从同一源 IP 地址到虚拟服务的所有连接时,超时将开始倒计时。该字段仅适用于客户端 IP 持久性。