在服务引擎上的负载超过或低于配置的阈值时,自动重新均衡功能可以帮助自动迁移或缩放虚拟服务。

以下是在 SE 级别汇总的几个触发器类型:

  • 每秒数据包数 (PPS)

  • Mbps 中的吐吐量

  • 打开的连接数

  • CPU

最小和最大阈值是与其中的一个触发器类型选项一起配置的。默认情况下,自动重新均衡基于 CPU 触发器类型。

在不进行基于 DNS 的自动缩放的情况下自动重新均衡时,可以根据负载在同一虚拟服务 IP 地址下添加额外的 SE。

对于某些部署,每个虚拟服务 IP 地址都有与之关联的主 SE 和辅助 SE。在主 SE 的容量达到其阈值时,流量不会重定向到辅助 SE,因为主 SE 仍在为入站请求提供服务。

限制

  • 缩放受限,尤其是在隧道模式下。

  • 在 AWS 部署中,主 SE 限制 (PPS) 会造成性能瓶颈,这种情况与辅助 SE 的数量无关。

避免上述限制的方法是,创建多个虚拟服务或多 VIP 虚拟服务。因此,基于 DNS 的 SE 自动重新均衡的第三种构造非常有用。

自动重新均衡

通过使用 SE 自动重新均衡功能,虚拟服务可解析为多个 IP 地址。

自动重新均衡功能不进行基于 DNS 的自动缩放,仅针对虚拟服务的给定 IP 地址执行负载均衡。借助 SE 自动重新均衡功能,DNS 将负责做出负载均衡决策。根据虚拟服务的 DNS 解析,入站流量将被重定向到同一虚拟服务的多个 IP。在主 VIP 达到不同触发器的阈值后,将启动辅助 VIP。辅助 VIP 达到饱和后,将启动第三个 VIP。

要使此功能正常工作,需要在服务引擎组中创建一个 VIP 自动缩放组。

AWS 中的自动缩放

如果特定区域发生故障,VIP 自动缩放会自动尝试在其他区域中启动 VIP 以保持规模。另一个区域启动后,VIP 自动缩放会将 VIP 移回该区域,以便 VIP 在区域之间平均分配。

DNS 集成

在添加和删除 VIP 时,DNS 条目也会相应地自动更新。自动添加 VIP 时,只有在该 VIP 处于 OPER_UP 状态后,才会添加相应的 DNS 条目。在删除 VIP 之前,会先撤消 DNS 条目,然后再删除 VIP。

自动缩放决策

自动缩放决策根据流量做出,并由 NSX Advanced Load Balancer Controller 控制(假设它受 VIP 自动缩放策略的限制)。

以下是添加新 VIP 时的注意事项。

  • VIP 在区域之间均匀分配(出于 HA 目的)。NSX Advanced Load Balancer Controller 将检查 SE 负载最少的区域。这有助于降低新实例成本。

  • 如果以循环方式执行 DNS 负载均衡,则随着时间推移,VIP 负载可能会发生偏差,其中一个 VIP 会占用整个 SE,而另一个 VIP 会与另一个虚拟服务共享负载。在这种场景下,可能需要将共享负载的 VIP 移至另一个 SE。此问题的另一个解决方案是,使用加权 DNS 负载均衡算法,并调整权重,以便根据 SE 大小均等地加载 VIP。

  • 后端服务器的位置(对于静态池列表,而不是服务器自动缩放)。若要最大限度提高区域中的流量并减少跨区域流量,这是必需的。

高可用性

根据 HA,NSX Advanced Load Balancer Controller 会选择将在其中添加或删除新 VIP 的可用区和子网。VIP 在可用区之间均匀分配。在扩展请求期间,将检查现有 VIP 列表和 VIP 自动缩放配置,以确定用于创建新 VIP 的新 VIP 自动缩放区域。

配置 SE 自动重新均衡

必备条件

  • 至少需要一个子网才能启动 VIP(要实现 HA,最好具有更多子网)。

  • IPAM 功能(对于 AWS,由 AWS 提供)。

  • 创建 SE 组和虚拟服务,并将它们与 VIP 自动缩放组相关联。

  • 创建至少具有一个虚拟服务 IP 地址的虚拟服务。目前,不允许创建没有 IP 地址的虚拟服务。

使用 CLI

登录到 Avi CLI 并转到 configure serviceenginegroup 模式,然后使用 vip_asg 命令配置 asg(自动缩放组)区域和 asg 策略,如下所示。

[admin:controller]: > configure serviceenginegroup Default-Group
Updating an existing object. Currently, the object is:
+---------------------------------------+---------------------------------------------------------+
| Field                                 | Value                                                   |
+---------------------------------------+---------------------------------------------------------+
| uuid                                  | serviceenginegroup-1a591c76-89d1-40fa-b1ae-39eb23731b47 |
| name                                  | Default-Group                                           |



[admin:controller]: serviceenginegroup>
[admin:controller]: serviceenginegroup> vip_asg
[admin:controller]: serviceenginegroup:vip_asg> configuration
[admin:controller]: serviceenginegroup:vip_asg:configuration> zones subnet_uuid subnet-62f1b707
New object being created
[admin:controller]: serviceenginegroup:vip_asg:configuration:zones> save
[admin:controller]: serviceenginegroup:vip_asg:configuration> zones subnet_uuid subnet-782f480f
New object being created
[admin:controller]: serviceenginegroup:vip_asg:configuration:zones> save
[admin:controller]: serviceenginegroup:vip_asg:configuration> where
Tenant: admin
Cloud: aws-cloud
+---------------+-----------------+
| Field         | Value           |
+---------------+-----------------+
| zones[1]      |                 |
|   subnet_uuid | subnet-62f1b707 |
| zones[2]      |                 |
|   subnet_uuid | subnet-782f480f |
+---------------+-----------------+
[admin:controller]: serviceenginegroup:vip_asg:configuration> sav
[admin:controller]: serviceenginegroup:vip_asg> sav
[admin:controller]: serviceenginegroup> sav
+---------------------------------------+---------------------------------------------------------+
| Field                                 | Value                                                   |
+---------------------------------------+---------------------------------------------------------+
| uuid                                  | serviceenginegroup-1a591c76-89d1-40fa-b1ae-39eb23731b47 |
| name                                  | Default-Group                                           |



[admin:controller]: > show serviceenginegroup Default-Group
| vip_asg                               |                                                         |
|   configuration                       |                                                         |
|     zones[1]                          |                                                         |
|       availability_zone               | us-west-2a                                              |
|       subnet_uuid                     | subnet-62f1b707                                         |
|       fip_capable                     | False                                                   |
|     zones[2]                          |                                                         |
|       availability_zone               | us-west-2b                                              |
|       subnet_uuid                     | subnet-782f480f                                         |
|       fip_capable                     | False                                                   |
  • 为自动缩放策略设置 SE 的最小和最大大小以获取触发器,并设置 DNS 冷却期的值。

[admin:controller]: serviceenginegroup>
[admin:controller]: serviceenginegroup> vip_asg
[admin:controller]: serviceenginegroup:vip_asg> policy
[admin:controller]: serviceenginegroup:vip_asg:policy> min_size 2
[admin:controller]: serviceenginegroup:vip_asg:policy> max_size 10
[admin:controller]: serviceenginegroup:vip_asg:policy> dns_cooldown 120
[admin:controller]: serviceenginegroup:vip_asg:policy> save
[admin:controller]: serviceenginegroup:vip_asg> save
[admin:controller]: serviceenginegroup> save
+---------------------------------------+---------------------------------------------------------+
| Field                                 | Value                                                   |
+---------------------------------------+---------------------------------------------------------+
| uuid                                  | serviceenginegroup-1a591c76-89d1-40fa-b1ae-39eb23731b47 |
| name                                  | Default-Group                                           |




[admin:controller]: > show serviceenginegroup Default-Group

| vip_asg                               |                                                         |
|   policy                              |                                                         |
|     min_size                          | 2                                                       |
|     max_size                          | 10                                                      |
|     dns_cooldown                      | 120 seconds                                             |
|     suspend                           | False                                                   |
|   configuration                       |                                                         |
|     zones[1]                          |                                                         |
|       availability_zone               | us-west-2a                                              |
|       subnet_uuid                     | subnet-62f1b707                                         |
|       fip_capable                     | False                                                   |
|     zones[2]                          |                                                         |
|       availability_zone               | us-west-2b                                              |
|       subnet_uuid                     | subnet-782f480f                                         |
|       fip_capable                     | False                                                   |



[admin:controller]: > configure serviceenginegroup Default-Group
Updating an existing object. Currently, the object is:

[admin:controller]: serviceenginegroup> auto_rebalance
No change in field value
[admin:controller]: serviceenginegroup> save

使用 CLI 配置 VIP 自动缩放子网

也可以使用 NSX Advanced Load Balancer UI 配置 SE 组的自动缩放组。导航到基础架构 > 服务引擎组,然后选择高级选项。从可用于 VIP 自动缩放子网的下拉菜单中选择选项。