为啥 EC2 Autoscaling 仅支持 Classic Load Balancer?
Posted
技术标签:
【中文标题】为啥 EC2 Autoscaling 仅支持 Classic Load Balancer?【英文标题】:Why EC2 Autoscaling supports ONLY Classic Load Balancers?为什么 EC2 Autoscaling 仅支持 Classic Load Balancer? 【发布时间】:2018-07-26 10:19:40 【问题描述】:来自here 我得到了这样的声明: 要在 Auto Scaling 组中的实例之间分配流量,您可以在架构中引入负载均衡器
所以我创建了 ALB(应用程序负载均衡器)。 令我惊讶的是,在创建 Auto Scaling 组的过程中,它专门要求“经典负载均衡器”。真的很想知道为什么 aws 文档提到了 this : Elastic Load Balancing 支持三种类型的负载均衡器:应用程序负载均衡器、网络负载均衡器和经典负载均衡器。您可以将任何这些类型的负载均衡器附加到您的 Auto Scaling 组。
我错过了什么吗?请更正。
问题:为什么只需要 CLB 来创建 Auto Scaling,为什么不需要 ALB 或 NLB?亚马逊为什么要坚持CLB?
【问题讨论】:
同意,这非常令人沮丧(现在已经过了一年半了)。你有没有想过这个?如果是这样,请以我们其他人可以理解的方式回答您自己的问题:)。 其实,我终于找到了一个很好的答案——如下所示。 【参考方案1】:ALB 以不同的方式工作,您需要创建目标组,然后在自动缩放设置中选择目标组。
这里是attach an ALB to Autoscaling group.的具体步骤。
执行以下操作之一:
一个。 [经典负载均衡器] 对于负载均衡器,请选择您的负载 平衡器。
b. [目标群体] 对于目标群体,请选择您的目标群体。
您可以在此处阅读有关how ALB works 的更多信息。
【讨论】:
这是一个可以接受的答案吗?该链接显示了如何配置 Classic Load Balancer,而不是 Application Load Balancer。 步骤相同,只需使用 ALB 的目标组(参见 5.b)【参考方案2】:这让我非常困惑,但后来我找到了相关的文档(终于):
如果您按实例 ID 注册目标,则可以将负载均衡器与 Auto Scaling 组一起使用。将目标组附加到 Auto Scaling 组后,Auto Scaling 会在启动目标时为您将目标注册到目标组。有关更多信息,请参阅 Amazon EC2 Auto Scaling 用户指南中的将负载均衡器附加到您的 Auto Scaling 组。
来自这里:https://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-target-groups.html。
所以,基本上,自动伸缩组管理目标组的成员。然后负载平衡器平衡目标组。因此,当 auto scaling group 向上或向下扩展时,会在 target group(即 负载均衡器 正在使用。
我试过了,它按预期工作。所以:
-
创建一个目标组。
创建您的自动缩放组并将其指向目标组。
创建您的应用程序负载平衡器并将其指向目标组。
在第 3 步期间的注册目标页面上,您将看到您的自动缩放组节点并放心:)。
【讨论】:
【参考方案3】:Classic Load Balancer 和 AWS 中的 Application Load Balancer 的工作原理不同。
Classic Load Balancer 不了解基于 URL 路径或基于域的路由更改的条件。因此,您可以直接在经典负载均衡器下附加实例。由于所有请求在经典负载均衡器下都被视为相同,因此它确实显示为 EC2 Auto-Scaling 组下的一个实体。
应用负载均衡器旨在了解路由流量的各种条件。这些条件是基于路径的路由和基于域的路由。因此,您不能直接在应用程序负载均衡器下附加 EC2 实例,为此您需要创建目标组并将 EC2 实例附加到目标组下。
因此,我可以说,您可以在 Auto-Scaling 组下看到 Classic Load balancer 选项,但不能直接看到 Application Load balancer。要在应用程序负载均衡器上使用 Autoscaling 组,您需要更改实现方案的方法。
将 AutoScaling 组与应用程序负载均衡器结合使用 1. 创建目标组。参考 AWS 提供的Creating Target Group 页面 2. 创建应用负载均衡器并参考上面创建的目标组。您可以参考 AWS 提供的Create application Load balancer 页面 3. 创建自动缩放组。参考Create autoscaling group using launch template或Create autoscaling group using launch configuration或Create launch configuration using EC2 Instance或create autoscaling group using launch wizard 4. 将负载均衡器附加到自动缩放组。请按照this链接中的第4步和第5a步进行操作
通过以上内容,您将能够将自动缩放组与应用程序负载平衡器一起使用。 谢谢
【讨论】:
以上是关于为啥 EC2 Autoscaling 仅支持 Classic Load Balancer?的主要内容,如果未能解决你的问题,请参考以下文章
CloudWatch 自定义 EC2 内存指标和带有 AutoScaling 策略的警报
AWS EC2 Autoscaling:定义一个永不终止的主实例
具有 cloudformation 的 AutoScaling ec2 实例
为啥我的 ECS 服务无法向我的 ELB 注册可用的 EC2 实例?