本节讨论 NSX Advanced Load Balancer 上服务引擎的自动重新均衡功能无法按预期工作时的解决方案。因此,当服务引擎上的负载高于或低于定义的阈值时,虚拟服务不会缩减或扩展到其他服务引擎。
解决方案
auto-rebalance 选项仅适用于弹性 HA 模式,默认情况下在 NSX Advanced Load Balancer 上关闭该选项。如果选择该选项,当 SE 上的负载超过最大阈值或低于最小阈值时,将自动迁移或扩展/缩减虚拟服务。NSX Advanced Load Balancer 控制器 在目录 /var/lib/avi/log 中具有 rebalance.log。与自动重新均衡相关的事件消息均在 rebalance.log 文件中提供。
以下错误消息记录在成功扩展事件的 rebalance.log 文件中。
[2017-09-14 20:00:18,539] DEBUG [seautoscale.autoscale:481] as: se_vs_cpu[avi-se-hq][ssl-vs-3#1]=100 (This depicts the SE is at 100%)
[2017-09-14 20:00:18,553] DEBUG [resource_monitor.get_scaleout_candidates:864] vs[ssl-vs-3] 1 candidate-se-host-list: rpc_status: 0
error_message: “No SE found” (This indicates that the SE is trying to scale out by trying to find out if there are any available SEs).
[2017-09-14 20:00:19,554] DEBUG [seautoscale.create_new_se:246] as: scale-out from high to new se: avi_se_hq to NEW-SE with 1 cpu(s), vs = ssl-vs-3#1
上述错误表示虚拟服务已从具有高 CPU (avi_se_hq) 的 SE 扩展到具有一个 CPU 的新 SE。
当自动重新均衡未启动扩展或缩减事件时,会观察到以下错误消息。
[2017-09-13 16:44:00,976] DEBUG [resource_monitor.SeGroupRebalanceRpc:3250] [43837][] call later(1) [2017-09-13 16:44:01,977] DEBUG [resource_monitor.DeferSeGroupRebalance:3255] [43837][] Defer to Thread Pool [2017-09-13 16:44:01,978] DEBUG [resource_monitor.SeGroupRebalance:3266] [43837,PoolThread-worker-1][] START SEGROUP REBALANCE [2017-09-13 16:44:02,937] ERROR [resource_monitor.rebalance_task_err_callback:3245] [43837,MainThread] Error in rebalance task:Traceback (most recent call last):
要进一步对问题进行故障排除,或者,如果在 rebalance.log 文件中观察到类似的错误消息,请联系 VMware 客户支持。
要了解如何让 NSX Advanced Load Balancer 服务引擎组的自动重新均衡功能正常工作,请考虑以下配置:
[admin:Controller]: > show serviceenginegroup rebalance-segroup +---------------------------------------+---------------------------------------------------------+ | Field | Value | +---------------------------------------+---------------------------------------------------------+ | uuid | serviceenginegroup-2896bcb1-6e46-4213-b789-d83367cacda6 | | name | rebalance-segroup | | max_vs_per_se | 10 | | min_scaleout_per_vs | 1 | | max_scaleout_per_vs | 4 | | max_se | 10 | | vcpus_per_se | 1 | | memory_per_se | 2048 | | disk_per_se | 10 gb | | max_cpu_usage | 50 percent | | min_cpu_usage | 20 percent | | | | | se_deprovision_delay | 120 min | | auto_rebalance | True | | auto_rebalance_interval | 10 sec |
将扩展操作的最大 CPU 阈值设置为 50%,或关闭自动重新均衡功能。自动重新均衡时间间隔设置为 10 秒:如果虚拟服务的 SE 的 CPU 在 10 秒内持续超过 50%,将启动扩展事件。
在下面的屏幕截图中,虚拟服务的一个 SE 处于 100% CPU 状态的时间超过 10 秒。
当 SE 的 CPU 超出配置的阈值级别时,将触发自动重新均衡事件,并且会由于扩展操作而创建新的 SE。
以下 NSX Advanced Load Balancer CLI 输出显示了一个成功的扩展事件。请注意以下输出中所示的状态 SCALEOUT_SUCCESS。
vs_scaleout_details se_assigned 0 standby: false connected: true name: avi-se-hooeb primary: true 1 standby: false connected: true name: avi-se-ktrez primary: false se_requested num_se: 2 num_standby_se: 0 vs_uuid: virtualservice-b70c8da3-2d14-47d6-a867-c15f1d9cb98c scale_status end_time_str: 2017-0914 20:00:02.661759 start_time_str: 2017-0914 19:59:57.901848 scale_se: avi-se-ktrez state: SCALEOUT_SUCCESS num_se_assigned: 2 action: SCALE_OUT num_se_requested: 2 ip: 10.1.1.1
已从 NSX Advanced Load Balancer UI 中移除自动重新均衡选项,但可以从 NSX Advanced Load Balancer CLI 配置此选项。有关详细信息,请参见《VMware NSX Advanced Load Balancer 配置指南》中的“无法通过 NSX Advanced Load Balancer UI 使用自动重新均衡选项”主题。
要使用 CLI 配置自动重新均衡,请参见《VMware NSX Advanced Load Balancer 配置指南》中的“如何使用 NSX Advanced Load Balancer CLI 配置自动重新均衡”主题。