使用多个目标组配置 Auto Scaling

Posted

技术标签:

【中文标题】使用多个目标组配置 Auto Scaling【英文标题】:Configuring auto scaling with multiple target groups 【发布时间】:2020-08-13 08:43:21 【问题描述】:

为多个目标组设置 1 个自动缩放是否是一种好习惯。所有目标组注册到同一个负载均衡器。

场景是应用负载均衡器 LB1 监听 80 和 443,有目标组:

“打开”端口是http/80

“安全”。端口是 https/443

如果 Auto Scaling 组有针对平均 CPU 利用率的目标跟踪策略,如果“开放”目标组的 CPU 利用率高于“安全”目标组。那么就没有自动缩放了?

如果违反警报,Auto Scaling 组如何确定哪个目标组应该拥有新实例?

我是否必须创建单独的自动缩放。每个目标组的组。对于 1 个 Auto Scaling 组下的多个目标组的这种情况,我找不到任何亚马逊文档。

请告诉我

【问题讨论】:

ASG 中的所有实例都将位于两个 TG 中。所以没关系。横向扩展将同时向两个 TG 注册一个新实例。 @Marcin 如果来自一个目标组的实例变得不健康但来自其他仍然 ASG 的健康实例将不会被替换,因为健康计数与所需计数匹配,则这里存在问题,除非两个 TG 保持健康检查模式与实例永远不会被替换。如果相同的自动缩放必须监控两个 TG,那么这两个 TG 必须以某种方式相互依赖。 有趣的地方。不知道。但这对于某些灭绝者来说是个好问题。我的猜测是任何不健康的行为都会导致实例终止。有时间我会尝试用两个 TG 创建 ASG 并检查它是如何工作的。但我认为最好有两个 ASG。 Aws 文档似乎也没有解释 ASG 中的多 TG 是如何工作的。 我试过了,即使被一个目标群体标记为不健康,实例仍然保留 感谢您告诉我。所以两个 ASG 是首选。 【参考方案1】:

根据AWS Documentation

如果您将多个负载均衡器目标组或 Classic Load Balancer 附加到该组,它们都必须报告该实例运行状况良好,以便它认为该实例运行状况良好。如果其中任何一个将实例报告为不健康,Auto Scaling 组将替换该实例,即使其他人将其报告为健康。

我的测试证实了这种行为,但有一个例外。通常人们开始使用默认设置配置自动伸缩组,这意味着健康检查默认设置为EC2。为了使附加到一个自动缩放组的多个目标组正常工作,应将运行状况检查设置为 ELB。如果您 ASG 启动后更改它,现有实例将不遵守此新设置并保留在组中。

可能会导致这样的错误结论:

我已经尝试过了,即使从一个目标群体@prassank 标记为不健康,实例也会保留

所以答案是:

除非您想要更严格的乘法健康检查,否则将多个目标组附加到单个自动缩放组不是一个好方法

【讨论】:

以上是关于使用多个目标组配置 Auto Scaling的主要内容,如果未能解决你的问题,请参考以下文章

Auto-Scaling 组不会在启动配置更改时更新

与多个可用区一起使用时,Auto Scaling 如何“放置”实例?

AWS - 错误 - 更新 Auto Scaling 组、Amazon CloudFormation、无法部署配置

Auto Scaling Group 启动配置更改

Elastic Beanstalk 环境的 Auto Scaling 组

如何使用扩展策略和指标通过 boto 配置 Auto Scaling?