在执行应用程序交付任务时,NSX Advanced Load Balancer SE 可能会耗尽 CPU、内存或 PPS 资源。为了增加负载均衡的虚拟服务的容量,NSX Advanced Load Balancer 需要增加专用于该虚拟服务的资源。

NSX Advanced Load Balancer 控制器 可以将虚拟服务迁移到未使用的 SE,或者将虚拟服务扩展到多个 SE 以获得甚至更大的容量。这允很多个活动 SE 同时分担单个虚拟服务的工作负载。

NSX Advanced Load Balancer 数据平面缩放方法

NSX Advanced Load Balancer 支持使用三种方法以缩放数据平面性能:

  • 单个 SE 性能的垂直缩放

  • 组中的 SE 的本机水平缩放

  • 组中的 SE 的基于 BGP 的水平缩放

在垂直缩放中,将手动增加为运行 SE 的虚拟机分配的资源,并且必须重新引导虚拟机。单个虚拟机的物理限制制约了这种缩放。例如,不允许 SE 消耗的资源超过物理主机允许的数量。

在水平缩放中,虚拟服务放置在额外的服务引擎上。放置虚拟服务的第一个 SE 称为虚拟服务的主 SE,所有其他 SE 称为虚拟服务的辅助 SE。

对于本机缩放,主 SE 接收虚拟服务的所有连接,并在所有辅助 SE 之间分配这些连接。因此,所有虚拟服务流量通过主 SE 进行路由。在某个时间,主 SE 的数据包处理容量将达到限制。尽管辅助 SE 可能具有容量,但主 SE 无法转发足够多的流量以利用该容量。因此,主 SE 的数据包处理容量决定了本机缩放的有效性。

例如,如果将虚拟服务扩展到 4 个 SE,即一个主 SE 和三个辅助 SE,主 SE 的数据包处理容量将达到限制,将虚拟服务扩展到第 5 个服务引擎仅具有边际收益。

为了扩展以超过四个服务引擎的本机缩放限制,NSX Advanced Load Balancer 支持基于 BGP 的水平缩放。此方法依赖于 RHI 和 ECMP,需要人工干预以扩展负载均衡基础架构。有关更多信息,请参见提供 BGP 支持以缩放虚拟服务

可以结合使用两种水平方法。本机缩放不需要对第一个 SE 进行更改,而是依赖于将负载分配给额外的 SE。缩放容量不需要在网络或应用程序中进行任何更改。

本机服务引擎扩展

在正常稳定状态下,单个 SE 可以处理所有流量。该 SE 的 MAC 地址将响应任何地址解析协议 (Address Resolution Protocol, ARP) 请求。



  • 随着流量增加而超过单个 SE 的容量,NSX Advanced Load Balancer 控制器 可以在虚拟服务中添加一个或多个新的 SE。这些新的 SE 可以处理其他虚拟服务流量,也可以为该任务新创建这些 SE。可以在几秒内添加现有的 SE,而实例化新的 SE 虚拟机最多可能需要几分钟的时间,具体取决于将 SE 映像复制到虚拟机主机所需的时间。

  • 在配置了新的 SE(用于网络和配置同步)后,第一个 SE(称为主 SE)开始将一定比例的入站客户端流量转发到新的 SE。数据包将从客户端传输到主 SE 的 MAC 地址,然后(在第 2 层)转发到新 SE 的 MAC 地址。该辅助 SE 终止传输控制协议 (Transmission Control Protocol, TCP) 连接,处理连接和/或请求,然后使用所选的目标服务器对连接/请求进行负载均衡。

  • 在使用所选的服务器对流量进行负载均衡时,辅助 SE 对来自其 IP 地址的流量进行源 NAT 处理。服务器将响应连接 (SE) 的源 IP,从而确保具有从服务器到拥有连接的 SE 的对称返回路径。

  • 对于具有标准 Neutron 的 OpenStack,这种行为违反安全规定。为了避免这种情况,建议使用端口安全功能。

  • 如果您(管理员)希望直接控制 SE 如何将响应路由到客户端,您可以使用 CLI(或 REST API)控制 se_tunnel_mode 设置,如下所示:

    >configure serviceenginegroup Default-Group
    >serviceenginegroup> se_tunnel_mode 1
    >serviceenginegroup> save

隧道模式值为:

  • 0(默认)- 自动,基于客户环境

  • 1 - 启用隧道模式

  • 2 - 停用隧道模式

在重新引导 SE 后,隧道模式设置才会生效。这是全局性的更改。

>reboot serviceengine

本机服务引擎缩减

在该模式下,NSX Advanced Load Balancer 对负载均衡器进行负载均衡,从而允许本机功能动态扩展或缩减容量。

要缩减流量,NSX Advanced Load Balancer 颠倒该过程,从而为辅助 SE 默认留出 30 秒的时间以使活动连接超时。在该时间段结束时,辅助 SE 将终止其余连接。这些连接的后续数据包现在由主 SE 进行处理,或者如果在三个或更多 SE 之间分配虚拟服务,则可能会将连接随机分配给任何其余 SE。可以使用以下 CLI 命令更改该超时:vs_scalein_tmeout seconds

发行版

在多个服务引擎之间进行缩放时,负载百分比可能不完全相等。例如,主 SE 必须做出负载均衡决策,以确定哪个 SE 必须处理新连接,然后转发输入数据包。出于这个原因,它将具有比辅助 SE 更高的工作负载,因此,可能拥有比辅助 SE 更小的连接百分比。主节点将根据可用的 CPU 在符合条件的 SE 之间自动调整流量百分比。