负载均衡器可实现持久性,将所有相关连接定向到同一服务器,从而确保有状态应用程序的稳定性。为了满足不同类型的应用程序需求,支持不同类型的持久性。

某些应用程序会保持服务器状态,如购物车。这种状态可能基于客户端并由客户端 IP 地址或根据 HTTP 会话进行标识。在处理来自同一客户端或 HTTP 会话的后续相关连接时,应用程序可以访问或修改该状态。

源 IP 持久性配置文件基于源 IP 地址跟踪会话。在客户端请求连接到启用源地址持久性的虚拟服务器时,负载均衡器检查以前是否连接了该客户端;如果是,则将该客户端恢复连接到同一服务器。如果不是,负载均衡器根据池负载均衡算法选择服务器池成员。源 IP 持久性配置文件由第 4 层和第 7 层虚拟服务器使用。

如果同时配置了规则持久性、Cookie 持久性和服务器保持活动状态,负载均衡器将采用以下优先级:规则持久性 > Cookie 持久性 > 服务器保持活动状态。

Cookie 持久性配置文件提供 3 种模式:
  • Cookie 插入 - 负载均衡器在服务器对客户端的响应中插入自己的 Cookie 以及池成员信息(已编码或未编码)。然后,客户端在后续请求中转发收到的 Cookie(包括 NSX Cookie),负载均衡器使用该信息以提供池成员持久性。在发送到池成员时,将从客户端请求中去除 NSX Cookie。
  • Cookie 前缀 - 负载均衡器在服务器对客户端的响应中附加池成员信息(已编码或未编码)。然后,客户端在后续请求中转发收到的 HTTP Cookie(具有 NSX 前置信息),负载均衡器使用该信息以提供池成员持久性。在发送到池成员时,将从客户端请求中去除 NSX Cookie 前缀。
  • Cookie 重写 - 负载均衡器在服务器对客户端的响应中将服务器 Cookie 值替换为池成员信息(已编码或未编码)。然后,客户端在后续请求中转发收到的 HTTP Cookie(具有 NSX 前置信息),负载均衡器使用该信息以提供池成员持久性。在发送到池成员时,将在客户端请求中替换原始服务器 Cookie。
Cookie 持久性仅适用于 L7 虚拟服务器。请注意, 支持 Cookie 名称中存在空格。

通用持久性配置文件会根据 HTTP 请求中的 HTTP 标头、Cookie 或 URL 来支持持久性。因此,在会话 ID 是 URL 的一部分时,配置文件支持应用程序会话持久性。该配置文件未直接与虚拟服务器关联。在配置负载均衡器规则以进行请求转发和响应重写时,请指定该配置文件。

通用持久性配置文件图表。

过程

  1. 从浏览器中,使用管理员特权登录到 NSX Manager,网址为 https://<nsx-manager-ip-address>。
  2. 选择网络 > 负载均衡 > 配置文件 > 持久性 > 添加持久性配置文件
  3. 选择源 IP 以添加源 IP 持久性配置文件并输入配置文件详细信息。
    您也可以接受默认源 IP 配置文件设置。
    选项 说明
    名称和说明 输入源 IP 持久性配置文件的名称和描述。
    共享持久性 切换该按钮以共享持久性,使与此配置文件关联的所有虚拟服务器均可共享持久性表。

    如果与虚拟服务器关联的“源 IP”持久性配置文件中未启用持久性共享,则与配置文件关联的每个虚拟服务器都将维护一个专用持久性表。

    持久性条目超时 输入持久性到期时间(秒)。

    负载均衡器持久性表维护用来记录客户端请求被定向到同一服务器的条目。

    从新客户端 IP 首次连接时,将根据负载均衡算法选择池成员以均衡负载。NSX 会将该持久性条目存储在 LB 持久性表中,该表可通过以下 CLI 命令在托管活动 T1-LB 的 Edge 节点上查看:get load-balancer <LB-UUID> persistence-tables

    • 当存在从该客户端到 VIP 的连接时,将保留该持久性条目。
    • 如果不再有从该客户端到 VIP 的连接,该持久性条目将启动在“持久性条目超时”值中指定的定时器倒计时。如果在定时器到期之前没有从该客户端到 VIP 的新连接,则会删除该客户端 IP 的持久性条目。如果该客户端在删除持久性条目后又重新连接,则会根据负载均衡算法重新选择池成员以均衡负载。
    已满时清除条目

    如果流量很大,较大的超时值可能会导致持久性表很快填满。如果启用此选项,则会删除最早的条目以接受最新条目。

    如果禁用了该选项,在源 IP 持久性表已满时,将拒绝新的客户端连接。

    HA 持久性镜像 切换该按钮以将持久性条目同步到 HA 对等体。如果启用了 HA 持久性镜像,则在发生负载均衡器故障切换时保持客户端 IP 持久性。
    标记 输入标记可使搜索变得更容易。

    可以指定一个标记以设置标记的范围。

  4. 选择一个 Cookie 持久性配置文件,然后输入配置文件详细信息。Cookie 持久性仅适用于 L7 虚拟服务器。请注意,支持 Cookie 名称中存在空格。
    选项 说明
    名称和说明 输入 Cookie 持久性配置文件的名称和描述。
    共享持久性 切换该按钮以在与相同池成员关联的多个虚拟服务器之间共享持久性。

    Cookie 持久性配置文件将插入格式为 <名称>.<配置文件 ID>.<池 ID> 的 Cookie。

    如果与虚拟服务器关联的 Cookie 持久性配置文件中未启用持久性共享,则会使用每个虚拟服务器的专用 Cookie 持久性并由池成员对其进行限定。负载均衡器将插入格式为 <名称>.<虚拟服务器 ID>.<池 ID> 的 Cookie。

    Cookie 模式 从下拉菜单中选择一个模式。
    • INSERT - 添加唯一的 Cookie 以标识会话。
    • PREFIX - 附加到现有 HTTP Cookie 信息。
    • REWRITE - 重写现有 HTTP Cookie 信息。
    Cookie 名称 输入 Cookie 名称。支持 Cookie 名称中存在空格。
    Cookie 域 输入域名。

    只能在插入模式下配置 HTTP Cookie 域。

    Cookie 回退 切换该按钮,以便在 Cookie 指向处于 DISABLED 或 DOWN 状态的服务器时拒绝客户端请求。

    如果 Cookie 指向处于 DISABLED 或 DOWN 状态的服务器,请选择一个新的服务器来处理客户端请求。

    Cookie 路径 输入 Cookie URL 路径。

    只能在插入模式下设置 HTTP Cookie 路径。

    Cookie 加密 切换该按钮以禁用加密。

    禁用乱码时,Cookie 服务器 IP 地址和端口信息采用明文形式。加密 Cookie 服务器 IP 地址和端口信息。

    Cookie 类型 从下拉菜单中选择 Cookie 类型。

    会话 Cookie - 未存储。关闭浏览器后将丢失。

    持久性 Cookie - 由浏览器存储。关闭浏览器时不会丢失。

    HttpOnly 标记 如果启用,该选项禁止浏览器中运行的脚本访问 Cookie。

    HttpOnly 标记仅适用于插入模式。

    安全标记 如果启用,该选项导致 Web 浏览器仅通过 HTTPS 发送 Cookie。

    安全标记仅适用于插入模式。

    最长空闲时间 输入 Cookie 过期之前 Cookie 类型可以处于空闲状态的时间(秒)。
    最长 Cookie 保留时间 对于会话 Cookie 类型,请输入 Cookie 的可用时间(秒)。
    标记 输入标记可使搜索变得更容易。

    可以指定一个标记以设置标记的范围。

  5. 选择通用以添加通用持久性配置文件,然后输入配置文件详细信息。
    选项 说明
    名称和说明 输入源 IP 持久性配置文件的名称和描述。
    共享持久性 切换该按钮以在虚拟服务器之间共享配置文件。
    持久性条目超时 输入持久性到期时间(秒)。

    负载均衡器持久性表维护用来记录客户端请求被定向到同一服务器的条目。

    从新客户端 IP 首次连接时,将根据负载均衡算法选择池成员以均衡负载。NSX 会将该持久性条目存储在 LB 持久性表中,该表可通过以下 CLI 命令在托管活动 T1-LB 的 Edge 节点上查看:get load-balancer <LB-UUID> persistence-tables

    • 当存在从该客户端到 VIP 的连接时,将保留该持久性条目。
    • 如果不再有从该客户端到 VIP 的连接,该持久性条目将启动在“持久性条目超时”值中指定的定时器倒计时。如果在定时器到期之前没有从该客户端到 VIP 的新连接,则会删除该客户端 IP 的持久性条目。如果该客户端在删除持久性条目后又重新连接,则会根据负载均衡算法重新选择池成员以均衡负载。
    HA 持久性镜像 切换该按钮以将持久性条目同步到 HA 对等体。
    标记 输入标记可使搜索变得更容易。

    可以指定一个标记以设置标记的范围。