简介
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 组
的冷却时间
来改变此行为,以更快地响应流量增加。但是,在调整冷却时间
时,需要权衡资源的使用和应用程序的性能要求