简介
ASG(Auto Scaling Group)是AWS提供的一项服务,它允许您自动调整EC2 实例数量,以满足应用程序负载的需求。ASG的主要目标是确保应用程序的可用性和弹性,无论处理高峰负载还是负载减少
ASG可以根据指定的条件自动增加或减少实例的数量,这些条件可以是:CPU 使用率、网络流量、请求次数等。当负载增加时,ASG会自动添加更多的实例以满足需求;当负载下降时,ASG会自动终止多余的实例以节省成本
ASG 与 ELB 关联
ASG可以结合ELB以实现自动扩展和负载均衡的功能,从而提供高可用性和弹性的应用程序部署。那么,ASG又是如何与ELB关联起来的呢?谈到这里就得从创建一个ASG入手了
创建 ASG
创建ASG的过程中会让你配置很多选项,当然这其中就包括了对关联的ELB的配置,下面我就简单介绍一下比较重要的配置:
启动模板,是用于启动实例时参考的模板- 关于
cpu、memory的配置 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 是一个单独的服务吗?
ASG是AWS的服务之一,是一种自动伸缩的管理服务。但是,它与一些其他AWS 服务(如EC2、S3、RDS 等)不同。ASG本身并不是一个独立的单一服务,与ELB、EBS一样,是EC2 服务的一部分
为什么 ASG 要与 ELB 结合使用?
这个其实从ELB和ASG的概念中应该就深有体会了,此处一起罗列出来应该体会会更加深刻:
ELB用于在多个 EC2 实例之间分发流量,从而实现负载均衡。ELB会根据配置的监听规则和目标组将流量转发到可用的实例ASG用于自动扩展 EC2 实例的数量,以适应应用程序负载的变化。ASG会根据配置的缩放策略自动增加或减少实例数量,从而实现弹性的容量管理
所以,一个用于流量分发,一个用于应对负载变化,二者功能不同,结合在一起,便能实现应对请求负载变化的同时,还能合理分发请求流量的功能,更符合使用者需求
ASG 就只依靠配置缩放策略来实现自动扩展实例?
在简单的场景下,通过配置ASG的缩放策略来实现EC2 实例的自动扩展即可,但如果需要更复杂的自动化和监控,就需要借助其他服务来实现了
CloudWatch来监控EC2 实例的性能指标和负载情况,然后根据自定义指标触发ASG的缩放策略Lambda 函数来自定义自动化操作,例如根据特定条件自动调整实例数量或执行其他任务
ELB、target group、ASG 是否要在同一个 VPC 下?
这里就需要好好的理清一下了,通过创建ELB、target group、ASG,并选择在不同的VPC进行创建,最后得出的结果便是他们都需要在同一个VPC下才能关联起来
那么,下面就来一起回顾一下这几个服务使用的流程吧:
创建 target group
在创建ELB时,可以选择先创建target group,创建target group时会选择一个VPC,然后此VPC下的所有可用区域的实例都可以作为加入该target group的选项
创建 ELB
创建ELB时会也选择一个VPC,还会选择一个target group,这里target group可以是之前创建好的,也可以是创建ELB时新创建的,这里就需要注意:只有target group和ELB在同一个VPC下才能被选择到
创建 ASG
创建好了ELB之后,便会去创建ASG,创建ASG时也会选择一个VPC,然后接下来就会遇到关联ELB的配置,如果不是同一个VPC也是不行的,因为ASG是无法选择到其他VPC下的ELB的target group
默认冷却时间(Cooldown Period)
冷却时间是在Auto Scaling 组执行缩容或扩展操作后的一段时间,用于避免频繁的自动扩缩容
当应用程序突然收到大量流量,导致触发Auto Scaling 组进行扩展操作时,由于默认冷却时间的存在,Auto Scaling 组不会立即启动新的EC2 实例来响应流量增加,而是会等待冷却时间结束后才开始执行自动扩展
可以调整Auto Scaling 组的冷却时间来改变此行为,以更快地响应流量增加。但是,在调整冷却时间时,需要权衡资源的使用和应用程序的性能要求