NSX Advanced Load Balancer是一个智能的,可自动缩放的负载均衡器。第1部分:架构和功能

在本文中,我想谈一谈(由Avi Networks开发的)VMware NSX Advanced Load Balancer或NSX ALB。一年多前,VMware收购了Avi Networks,同时平衡系统将其名称从Avi Vantage更改为NSX ALB,但旧的Avi名称仍然保留。从那时起,该平衡器已与VMware产品(主要是NSX)集成在一起。但与此同时,仍然可以自主使用它。



网络上几乎没有关于俄语的NSX ALB的系统信息,只有来自供应商的英文文件。因此,在第一部分中,我总结了不同的来源并对该产品进行了概述:我介绍了工作的功能,体系结构和逻辑,包括地理位置分散的站点。在第二部分中,我将描述如何部署和配置系统。希望这两篇文章对那些希望为云环境寻求平衡器并希望快速评估NSX ALB功能的人有所帮助。  







功能特点



NSX ALB是企业级软件定义的负载均衡器(SDLB)。对于通常使用硬件负载平衡器的那种负载平衡系统而言,这不是典型的情况。这种构建系统的方法使NSX ALB易于管理,并且具有水平和垂直可伸缩性。 

NSX ALB提供哪些功能:



  • 平衡器的自动电源控制。当客户端的负载增加时,容量会自动增加,当负载减少时,容量会下降。 

  • 在地理位置分散的服务器上进行负载平衡。单独的全局服务器负载平衡(GSLB)机制对此负责。 

  • 在以下级别之一进行平衡:L4(通过TCP / UDP)和L7(通过HTTP / HTTPS)。 

  • . NSX ALB ( VMware) on-premise :





  • 内置的应用程序智能。该系统监视应用程序性能并收集数据:连接处理每个阶段的时间,实时评估应用程序状态和流量日志。如果有问题,监控可以迅速告诉您要在哪里寻找。 



    在并发打开的连接,往返时间(RTT),吞吐量,错误,响应延迟,SSL握手延迟,响应类型等上收集实时数据。所有信息都集中在一个地方:







    在右侧的Log Analytics块中,收集有关主要连接参数的统计信息。您可以将鼠标悬停在所需的部分上并快速阅读。



此外,NSX ALB还具有:



  • 支持多租户以区分对资源的访问。

  • Health Monitor .

  • Web Application Firewall (WAF).

  • IPAM DNS.

  • , . . IP-, . : Botnet, DoS, Mobile threats, Phishing, Proxy, Scanner, Spam source, Web attacks, Windows exploit .., – .

  • 解析传递数据包的HTTP标头。您可以使用基于Lua语言的脚本(DataScript)并根据以下标头中的值定义Avi操作:重定向请求,关闭或重置连接,欺骗HTTP标头中的URI或值,选择用于处理请求的特定服务器池,使用Cookie等等

  • 充当Kubernetes的Ingress控制器。



可以通过GUI,CLI和REST API来管理NSX ALB。



NSX ALB的体系结构和工作方案



NSX ALB根据大多数SDLB的标准原理工作。提供平衡服务的服务器合并到池中。在池上方,系统管理员创建虚拟服务(VS)。它们包含要平衡的服务的参数,例如:应用程序类型,平衡算法,连接设置。 VS还为客户端提供了外部虚拟IP地址(虚拟IP,VIP),以访问平衡服务。



让我们仔细研究一下架构:系统的







关键要素是控制器(Avi Controller)... 他负责自动电源建立并集中控制VS。您可以在基础架构中部署单个控制器或控制器的故障转移群集。 



在故障转移配置中,控制器集群包含3个节点。节点之一成为领导者,其余跟随者。所有3个节点都是活动的,并在它们之间共享负载。控制器集群的主要方案:



  • 如果一个节点发生故障,这不会影响群集的运行;

  • 如果引导节点发生故障,则此角色将转移到其余角色之一;

  • 如果2个节点发生故障,则其余节点上的控制器服务将进入只读模式,以避免裂脑,并等待另一个节点再次可用。



部署控制器后,工程师为每个VS创建一个VS和一个服务器池。对于池中的服务器,可以选择一种平衡算法



  • 循环-新连接将转到池中的下一个服务器。

  • 最少的连接-新的连接将以最少的并发连接转到服务器。

  • 最小负载-无论连接数量如何,新连接都将以最小负载进入服务器。

  • 一致的哈希-新连接基于所计算的哈希在服务器之间分布。用于计算散列的键在特殊字段或自定义字符串中指定。对于每个请求,使用此键计算哈希值。该连接被发送到与所计算的哈希相对应的服务器。

  • Fastest Response – .

  • Fewest Tasks – ( Avi CLI REST API.

  • Fewest Servers – , .



创建VS和服务器池后,控制器本身将部署平衡服务所在的服务虚拟机Service Engine(SE)。每个服务(VS)分布在多个SE中,这些SE并行处理客户端请求。这样可以确保在虚拟机发生故障时提供服务弹性。 



控制器可以评估负载并添加新的SE或删除未加载的SE。由于这种架构,NSX ALB可以水平扩展-增加SE的数量,也可以垂直扩展-增加每个SE的容量。 



SE平衡的服务越多,使用的网络接口就越多。在下面的详细图中,我们看到两种网络类型:



  • 用于控制和传输服务信息的网络形成了控制平面

  • 数据网络形成数据平面



每个SE在控制​​网络上都有一个单独的网络接口,用于与控制器进行通信。其余接口连接到外部网络和用于平衡的服务器池所在的网络。网络基础结构的这种分离提高了安全性。 







对于每个VS,您需要定义将在其上托管服务的SE参数。这些参数在SE组(SE组)中设置创建VS时,我们选择SE组:如果VS需要特殊的虚拟机设置,则可以指定默认组(Default Group)或创建新组。 



选定的组将确定如何放置新的VS。例如,如果系统中已经部署了默认组的SE,而这些SE仍具有资源,则具有指定默认组的新VS将位于它们上。如果我们为VS指定一个新组,则将在其下部署具有不同参数的新SE。 



在SE组级别,设置以下VS放置设置:



  • 一组中的最大SE数量,

  • 每个SE的最大VS数量,

  • 在SE上放置VS的方式:紧凑,当我们首先尽可能紧密地填充第一个SE并继续移动到下一个SE时,或者使用均匀分布的Distributed:





  • SE虚拟机参数:vCPU编号,内存和磁盘大小, 

    每个1个vCPU的吞吐量约为4万个连接/秒,平均为4 GB /秒。该指标针对不同的平衡级别和所使用的协议而有所不同:由于需要分析流量,因此在L4上较多,在L7上较少,而对于SSL,由于需要加密,因此较少。
  • 未使用的SE的生存期,之后必须将其删除,

  • 托管SE的资源。在VMware环境中,您可以指定或排除要使用的特定群集或主机和数据存储。



让我们继续进行GSLB全局平衡服务的体系结构和工作流程。 



地理位置分散的服务器的体系结构和工作流



在常规虚拟服务中,我们只能从一个云将服务器添加到池中。即使我们同时在控制器上添加多个云,我们也将无法在一个VS中合并来自不同云的服务器。GSLB全局平衡服务解决了此问题。它使您能够平衡位于不同云中的地理位置分散的服务器。



在一项全局服务中,您可以同时使用私有云和公共云。在某些情况下,您可能需要GSLB: 



  • 如果其中一台云中的所有服务器都不可用,则服务可用性很高,

  • 如果完全无法访问一个云的灾难恢复,

  • , , . .



让我们看一下GSLB的体系结构:







简而言之,工作方案:平衡由NSX ALB内部署的本地DNS服务执行。客户端使用FQDN名称发送连接到服务的请求。 DNS在最佳云中为客户端提供本地VS的虚拟IP。该服务根据平衡算法,运行状况监控器上本地VS可用性的数据以及客户端的地理位置,选择最佳的云。您可以在全局服务级别和GSLB级别设置不同的平衡算法。



从GSLB图中可以看到,它基于上图的元素:服务器池,在它们上方的是带有本地虚拟IP(VIP)的本地虚拟服务(VS)和服务虚拟机(SE)。构建GSLB时会出现新的元素。



全局服务(global VS) -在地理位置分散的服务器或私有云和公共云之间平衡的服务。



GSLB站点包括位于同一云中的控制器和由其管理的SE。对于每个站点,您都可以按纬度和经度设置地理位置。这将允许GSLB根据与客户端的距离来选择服务器池。



基于NSX ALB系统的GSLB网站分为领导者(leaders)和跟随者(followers)。与控制器一样,该方案为GSLB服务提供了容错能力。 



领导站点制定平衡决策,处理连接并进行监控。您只能从主站点控制器更改GSLB配置。



从站可以是主动的也可以是被动的。 



  • 如果主站点选择其本地VS,则被动从站点仅处理传入的客户端连接。

  • 活动的从属站点从主站点接收其配置,如果崩溃,则可以担任主角。 



GSLB站点也可以是建立在第三方平衡器上的外部站点。 



全局池不同于包含本地服务器的本地池。在全局池中,您可以合并来自不同站点的地理位置分散的虚拟服务。换句话说,全局池包含在GSLB站点级别建立的本地VS。 



在全局池中的服务器之间执行平衡连接: 



  • 通过循环算法, 

  • 根据服务器地理位置, 

  • ,

  • Consistent Hash. 



对于一项全局服务,您可以创建多个全局池,并在每个本地VS中包含一个或多个站点。在这种情况下,将根据地理位置或指定的优先级分配新的连接。要为池中的服务器设置优先级,可以为每个服务器设置不同的权重。 



全局池之间的平衡示例。这就是全局VS在此方案中分配连接的方式:







池GslbPool_3的优先级为10,将首选作为客户端连接。在这些连接中,40%的负载将流向VS-B3,60%的负载将流向VS-B4。如果GslbPool_3不可用,则所有客户端连接将完全转到GslbPool_2,并且VS-B3和VS-B4之间的负载将平均分配。



本地DNS包含具有通过其平衡的服务的FQDN名称的记录。 



GSLB DNS是本地DNS VS操作模式,用于平衡GSLB站点之间的连接。 



当我们选择本地DNS VS作为提高的GSLB的DNS服务时,它便开始充当GSLB DNS。这样的DNS VS应该部署在全局池中包括的所有站点上。



GSLB将全局服务FQDN记录添加到每个本地DNS。NSX ALB使用全局VS池中包含的所有站点的本地VS的虚拟IP填充此记录。这些附加的VIP会自动添加,同时新的本地VS也添加到池中。记录中的数据会随着有关服务负载,服务器可用性以及客户端到站点的距离的信息而更新。当新客户端使用FQDN连接时,考虑到此累积的实际数据,本地DNS之一将发布本地VS的VIP地址。



我将在本文的第二部分中描述如何部署和配置NSX ALB系统,以及如何在其中提高GSLB服务。



All Articles