AWS 之 ASG

简介

ASG(Auto Scaling Group)AWS提供的一项服务,它允许您自动调整EC2 实例数量,以满足应用程序负载的需求。ASG的主要目标是确保应用程序的可用性弹性,无论处理高峰负载还是负载减少

ASG可以根据指定的条件自动增加或减少实例的数量,这些条件可以是:CPU 使用率网络流量请求次数等。当负载增加时,ASG会自动添加更多的实例以满足需求;当负载下降时,ASG会自动终止多余的实例以节省成本

ASG 与 ELB 关联

ASG可以结合ELB以实现自动扩展负载均衡的功能,从而提供高可用性和弹性的应用程序部署。那么,ASG又是如何与ELB关联起来的呢?谈到这里就得从创建一个ASG入手了

创建 ASG

创建ASG的过程中会让你配置很多选项,当然这其中就包括了对关联的ELB的配置,下面我就简单介绍一下比较重要的配置:

  • 启动模板,是用于启动实例时参考的模板
  • 关于cpumemory的配置
  • target group启动实例的期望值(Desired Capacity)最小值(Minimum Size)最大值(Maximum Size)的配置
  • ELB,提供了三个选项:不关联、关联存在的ELB、新创建ELB并关联

启动模板

创建启动模板就跟创建EC2 实例是一样的,理解起来也很简单,因为ASG增加实例时就是根据启动模板来创建EC2 实例

ASG 中 target group 的三个值

  • 期望值ASG希望启动的 EC2 实例数量ASG会自动根据负载情况增加减少实例数量,以使其接近期望值
  • 最小值ASG允许的最小 EC2 实例数量。即使负载较低,ASG也不会缩减实例数量到少于最小值
  • 最大值ASG允许的最大 EC2 实例数量。即使负载很高,ASG也不会增加实例数量到多于最大值

在设置这些参数时,确保满足以下条件:

  • 期望值大于等于最小值:确保始终有足够的实例来处理应用程序的基本负载
  • 期望值小于等于最大值:防止ASG无限制地扩展实例数量,从而避免不必要的费用和资源浪费

ELB 关联

如果在关联ELB配置项选择了不关联,那么在创建好ASG之后,进入详情页去找到关于ELB的选项编辑即可

拓展

根据上面的内容,已经大致了解到ASG的功能作用,以及它如何与ELB关联。下面部分则是个人的一些思考,感兴趣的话也是可以了解一下的

ASG 是一个单独的服务吗?

ASGAWS的服务之一,是一种自动伸缩的管理服务。但是,它与一些其他AWS 服务(如EC2S3RDS 等)不同。ASG本身并不是一个独立的单一服务,与ELBEBS一样,是EC2 服务的一部分

为什么 ASG 要与 ELB 结合使用?

这个其实从ELBASG的概念中应该就深有体会了,此处一起罗列出来应该体会会更加深刻:

  • ELB用于在多个 EC2 实例之间分发流量,从而实现负载均衡。ELB会根据配置的监听规则目标组将流量转发到可用的实例
  • ASG用于自动扩展 EC2 实例的数量,以适应应用程序负载的变化。ASG会根据配置的缩放策略自动增加或减少实例数量,从而实现弹性的容量管理

所以,一个用于流量分发,一个用于应对负载变化,二者功能不同,结合在一起,便能实现应对请求负载变化的同时,还能合理分发请求流量的功能,更符合使用者需求

ASG 就只依靠配置缩放策略来实现自动扩展实例?

在简单的场景下,通过配置ASG缩放策略来实现EC2 实例的自动扩展即可,但如果需要更复杂的自动化监控,就需要借助其他服务来实现了

  • CloudWatch来监控EC2 实例性能指标负载情况,然后根据自定义指标触发ASG缩放策略
  • Lambda 函数自定义自动化操作,例如根据特定条件自动调整实例数量执行其他任务

ELB、target group、ASG 是否要在同一个 VPC 下?

这里就需要好好的理清一下了,通过创建ELBtarget groupASG,并选择在不同的VPC进行创建,最后得出的结果便是他们都需要在同一个VPC下才能关联起来

那么,下面就来一起回顾一下这几个服务使用的流程吧:

创建 target group

在创建ELB时,可以选择先创建target group,创建target group时会选择一个VPC,然后此VPC下的所有可用区域的实例都可以作为加入该target group的选项

创建 ELB

创建ELB时会也选择一个VPC,还会选择一个target group,这里target group可以是之前创建好的,也可以是创建ELB时新创建的,这里就需要注意:只有target groupELB在同一个VPC下才能被选择到

创建 ASG

创建好了ELB之后,便会去创建ASG,创建ASG时也会选择一个VPC,然后接下来就会遇到关联ELB的配置,如果不是同一个VPC也是不行的,因为ASG是无法选择到其他VPC下的ELBtarget group

默认冷却时间(Cooldown Period)

冷却时间是在Auto Scaling 组执行缩容或扩展操作后的一段时间,用于避免频繁的自动扩缩容

当应用程序突然收到大量流量,导致触发Auto Scaling 组进行扩展操作时,由于默认冷却时间的存在,Auto Scaling 组不会立即启动新的EC2 实例来响应流量增加,而是会等待冷却时间结束后才开始执行自动扩展

可以调整Auto Scaling 组冷却时间来改变此行为,以更快地响应流量增加。但是,在调整冷却时间时,需要权衡资源的使用和应用程序的性能要求

相关推荐
海水冷却2 天前
RTC成语音AI基础设施:AWS和ElevenLabs相继跟进,ZEGO已跑三年
人工智能·实时音视频·aws
亚马逊云开发者3 天前
开了 GuardDuty 一周,发现 EC2 被人暴力破解 SSH 了
aws
亚马逊云开发者3 天前
Bedrock 调用次数比预期多了一倍?CloudTrail 5 分钟定位元凶
aws
亚马逊云开发者3 天前
API Key 还明文写在配置文件里?OpenClaw SecretRef 帮你摘出来
aws
zhojiew4 天前
[INFRA] EMR集群节点下线 (Decommission) 机制和逻辑深入分析
aws·emr·bigdata
zhojiew4 天前
[INFRA] EMR集群中Hive和Spark集成Glue Data Catalog过程的深入分析
hive·hadoop·spark·aws·bigdata
亚马逊云开发者4 天前
我用 Lambda Durable Functions 把五个 Lambda 缩成了一个,代码量砍半
aws
亚马逊云开发者4 天前
异构 GPU 混合部署 Whisper,我用 HyperPod 一个集群搞定了
aws
亚马逊云开发者5 天前
模型搜完网页就"脑算"数字?用 Dynamic Filtering 让它老老实实写代码
aws
亚马逊云开发者5 天前
老板让我迁 Graviton,我用 AI 工具几分钟搞定了迁移评估
aws