弹性伸缩(Auto Scaling)

亚马逊弹性伸缩(Auto Scaling)自动地增加/减少EC2实例的数量,从而让你的应用程序一直能保持可用的状态。

你可以预定义Auto Scaling,使其在需求高峰期自动增加EC2实例,而在需求低谷自动减少EC2实例。这样不仅能让你的应用程序一直保持健康的状态,而且也节省了你为EC2实例所付出的费用。

Auto Scaling 适用于那些需求稳定的应用程序,同时也适用于在每小时、每天、甚至每周都有需求变化的应用程序。

  • Auto Scaling能保证你一直拥有一定数量的EC2实例来分担应用程序的负载
  • Auto Scaling能带来更高的容错性、更好的可用性和更高的性价比
  • 你可以控制伸缩的策略来决定在什么时候终止和创建EC2实例,以处理动态变化的需求
  • 默认情况下,Auto Scaling能控制每一个可用区内所运行的实例数量尽量平均
    • 为了达到这个目标,Auto Scaling在需要启动新实例的时候,会选择一个目前拥有运行实例最少的可用区

Auto Scaling的构成组件:

启动配置(Launch Configuration)/启动模板(Launch Template)

  • 启动配置是弹性伸缩组用来启动EC2实例的时候所使用的模板
  • 启动配置包含了镜像文件(AMI),实例类型、密钥对、安全组和挂载的存储设备
  • 一个启动配置可以关联多个Auto Scaling组
  • 启动配置一经创建不能被更改,只能删除重建
  • 启动配置中可以使用CloudWatch的基础监控(Basic Monitoring)或者详细监控(Detail Monitoring)
  • 启动模板几乎包含了启动配置的所有功能,并且多了一些版本控制,混合实例等功能,是比较推荐的一种方式

弹性伸缩组(Auto Scaling Group)

  • 弹性伸缩组(ASG)是弹性伸缩的核心,它包含了多个拥有类似配置/类型的EC2实例,这些实例被逻辑上认为是一样的
  • 弹性伸缩组需要的几个参数:
    • 启动配置(Launch Configuration):它决定了EC2使用什么模板,模板内容包括了镜像文件(AMI),实例类型、密钥对、安全组和挂载的存储设备
    • 最小和最大的性能:决定了在弹性伸缩的情况下,EC2实例数量的浮动范围
    • 所需的性能:决定了这个弹性伸缩组要保持的运作所需要的基本的EC2实例数量;如果没有填写,则默认为其数值等同于最小的性能
    • 可用区和子网:定义EC2实例启动时候所在的可用区和子网信息
    • 参数和健康检查:参数定义了何时启动新实例,何时终止旧实例;健康检查决定了实例的健康状态。
  • 如果一个EC2实例的健康状态变成“不健康”,那么ASG会终止这个EC2实例,并且自动启动一个新的EC2实例
  • 弹性伸缩组(ASG)只能在某一个AWS区域内运行,不能跨越多个区域
  • 如果启动配置(Launch Configuration)有更新,那么之后启动的新EC2实例会使用新的启动配置,而旧的EC2实例不受影响
  • 从AWS管理平台你可以直接删除一个弹性伸缩组(ASG);从AWS CLI你只能先将最小的性能和需求的性能两个参数设置为0,才能删除这个弹性伸缩组。

扩展选项

  • 始终保持当前实例级别:比如始终保持一个ASG有恒定的3个健康实例
  • 手动扩展:手动更改参数最大容量、最小容量或者所需容量来控制ASG内实例的数量
  • 按计划扩展:根据定义的具体时间来弹性扩展实例的数量
  • 根据需求进行扩展:结合CloudWatch来基于参数进行扩展(比如说当CPU利用率持续10分钟在70%以上就自动进行向上扩展,即增加EC2实例数量;而当CPU利用率持续10分钟在30%以下就自动进行向下扩展,即减少EC2实例数量)
  • 预测性扩展:根据机器学习算法,预判你的需求

默认的实例终止策略

如果你的Auto Scaling Group中包含了分布在不同可用区的实例时,当涉及到需要终止实例的情况下,Auto Scaling Group会按照以下顺序的规律终止实例。

  • 选择哪一个可用区?
    • 选择当前最多实例并且至少有一个实例不受缩小保护的可用区
    • 如果以上的可用区存在多个,则选择使用最旧的启动配置或者启动模版的实例所在的可用区
  • 选择哪一个实例?
    • 选择一个使用最旧启动配置或者启动模版并且不受保护的实例,如果有多个,则
    • 选择一个不受保护的,最接近下一个计费小时的实例,如果还有多个,则
    • 随机终止一个实例

弹性伸缩(Auto Scaling)可以和弹性负载均衡(Elastic Load Balancing)一起配合使用,这样能保证通过一个DNS地址对外提供服务,而后台能一直保证有一定数量的健康EC2实例处理相应的负载。

压测工具安装

sudo amazon-linux-extras install epel -y
yum install stress-ng
stress-ng —cpu 8 —timeout 300 —metrics-brief

实验之后记得把Autoscaling组删除,不要直接删除实例,否则autoscaling会自动帮你又把实例拉起来哈

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Loong_1213

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值