导图社区 云计算-弹性伸缩
阿里云和腾讯云弹性伸缩的对比总结思维导图,弹性伸缩是根据业务需求和策略自动调整计算能力(即实例数量)的服务。
编辑于2022-02-18 17:53:18弹性伸缩
弹性伸缩-AS(腾讯云)
配置流程
创建启动配置
启动配置定义了用于弹性伸缩的 CVM 实例的配置信息,包括 CVM 的地域和机型、镜像、存储和网络、安全组和主机登录方式和其他配置信息。
创建伸缩组
伸缩组是遵循相同规则、面向同一场景的云服务器实例的集合。
配置内容
最小实例数、最大实例数,起始实例数,启动配置,支持网络,可用区,移除策略
伸缩组的当前 CVM 实例数将维持在最小伸缩数与最大伸缩数之间。
起始实例数定义了伸缩组一开始CVM实例的数量。
若当前 CVM 实例数小于最小伸缩数,弹性伸缩服务将自动添加实例,使其等于最小伸缩数。
若当前 CVM 实例数大于最大伸缩数,弹性伸缩服务将自动减少实例,使其等于最大伸缩数。
选择已有的启动配置,您也可以新建启动配置。
选择网络、可用区、移出策略。
(可选)选择关联已有负载均衡策略或新建负载均衡。
创建伸缩策略
分类
创建定时任务,用于定时执行伸缩活动,您还可设置是否周期性执行。
创建告警触发策略,根据云监控指标(如 CPU、内存使用率等)情况执行伸缩活动。
指定某台服务器不受告警伸缩策略影响
使用 auto scaling 前,也许您的系统已经有常用的服务器,您出于以下考虑,不希望机器被告警伸缩策略移出:
一机多用:集群中某台服务器除了做集群所做的事情外,还兼做其他用途。例如网站建设初期,您的某台服务器既作为缓存服务器使用,又作为文件服务器。在缓存服务器集群放入伸缩组时,您不希望它被告警伸缩策略移出。
存放数据:该服务器是有状态的或自带其他服务器没有的数据。例如集群中其他服务器运行中产生的增量数据,都统一保存到该服务器里。
更新镜像/快照:固定使用该服务器定期做镜像和快照
在管理页面下方的“实例列表”,对所要设置的实例单击“设置移出保护”
健康检查
为了保持伸缩组中的实例正常运行,AS 会对伸缩组内实例的运行状况执行定期检查。如果发现实例运行状况不佳,它将终止该实例,并启动一台新的云服务器实例。
实例健康检查
伸缩组定期检查实例运行状态来确定每个实例是否健壮,判断标准为该机器是否连续1分钟 ping 不可达。如果实例超过1分钟 ping 不可达,则 AS 会标记该实例运行状况不佳。
替换不健康实例
不健康的实例被标记为运行状况不佳之后,伸缩组将立即启动新的实例对它进行替换(设置了“移出保护”的机器除外)。
手动扩容
前提条件
实例处于运行状态。
实例与伸缩组位于同一地域。
实例的网络属性必须与伸缩组一样,即同属基础网络或同属于一个私有网络。
说明
AS 会将该组的所需容量与要添加的实例数相加。
例如您伸缩组目前的期望实例数是5,手动增加3台实例后,您伸缩组的期望实例数会变为 5 + 3 = 8。如果要增加的实例数加上所需容量超过伸缩组的最大实例数,请求将失败。
伸缩组已关联一个或多个负载均衡(CLB),手动添加的实例会自动注册到伸缩组的所有 CLB 中。
伸缩组缩容时会先移出自动创建的机器,没有自动创建的机器时,才会选择移出手动添加的机器。
伸缩组移出手动添加的实例时,只是将该实例移出伸缩组和 CLB,使实例不再通过伸缩组管理,不会销毁您的实例。
一键扩容
提前将 CLB 转发规则、机器配置、业务部署这类工作做好,后续业务需要扩容,只需一键修改伸缩组的参数,快速完成扩容。
适用条件
业务的波峰波谷较难预测,但不愿把扩缩容完全交给系统决定。业务波峰波谷可预测。
您的计算需求是项目性的,且每次用的机器都类似。例如社情舆论收集、基因测序、天气预测等。
缩容处理
移出策略
伸缩组缩容时,会根据移出策略决定移出哪台机器。您可从以下两种移出策略中选择:
删除最旧机器:删除最早自动增加的机器;自动增加的机器删除完后,删除最早手动增加的机器。
删除最新机器:删除最新自动增加的机器;自动增加的机器删除完后,删除最新手动增加的机器。
指定实例免于缩容
实际实践中,有以下情况适用将指定实例设置免于缩容:
一机多用:基于成本考虑,个别机器除做集群中的事情外,还兼作其他用途,例如存储集群中产生的数据,那么这台机器实际上是有状态的。
避免误操作:若担心策略设置错误影响业务,则可以对部分机器设置“免于缩容”,这样 AS 永远不会缩容该机器,“请求-LB-子机”的通路可以保持畅通。
冷却时间
弹性伸缩(AS)冷却时间是伸缩组的一个可配置设置,设置冷却时间,可以确保在上一扩展活动生效前 AS 不会启动或终止其他实例。伸缩组使用简单的扩展策略动态扩展后,AS 会等待冷却时间完成,然后再继续扩展活动。
手动扩展伸缩组时,默认为不等待冷却时间,但您可以设置冷却时间覆盖默认设置。请注意,如果监测出实例运行状况不佳,AS 会即时替换运行状况不佳的实例,而不会等待冷却时间完成。
默认的冷却时间为60秒。
AS 监控指标
CPU 使用率
内存使用率
内网入带宽
外网入带宽
内网出带宽
外网出带宽
弹性伸缩-AS(阿里云)
使用弹性伸缩(Auto Scaling),您可以根据业务需求和策略设置伸缩规则,在业务需求增长时自动为您增加ECS实例以保证计算能力,在业务需求下降时自动减少ECS实例以节约成本
伸缩模式
定时模式:您自定义自动伸缩发生的时间和频率,如每天 13:00增加 ECS 实例
动态模式:基于云监控性能指标(如 CPU 利用率),自动增加或减少 ECS 实例
固定数量模式:通过设置 最小实例数 (MinSize),即健康运行的ECS 实例最小数量,以保证可用性
自定义模式:通过 API 调用您的自有监控系统,您可以执行手工伸缩 1. 手工执行伸缩规则。 2. 手工添加或移出既有的 ECS 实例。 3.自定义 MinSize、MaxSize,弹性伸缩会自动创建或释放 ECS 实例,将当前 ECS 实例数维持在 MinSize 与 MaxSize 之间。
健康模式:如 ECS 实例为非 Running 状态,弹性伸缩将自动移出或释放不健康的 ECS 实例
多模式并行:以上所有模式都可以组合配置。例如设置了每天 13:00 ~ 14:00 创建 20 个 ECS 实例以应对业务高峰,但实际需求有可能需要多于20个实例, 则您可以选择其他伸缩模式,与定时模式配合一起使用
产品限制
1. 伸缩组内部署在ECS实例的应用必须无状态并且可横向扩展。 2. 伸缩组内的ECS实例可能会被自动释放,因此不适合保存应用状态信息和相关数据等信息,例如会话记录(Session)、数据库或者日志等,如需要则保存状态信息到独立的状态云服务器ECS、保存数据到云数据库RDS或者集中日志存储到日志服务。 3. 弹性伸缩无法自动将ECS实例添加到开放缓存Memcache实例访问白名单,需要您自行添加。 4. 弹性伸缩无法纵向扩展,即弹性伸缩无法自动升降ECS实例的vCPU、内存和带宽等配置。
数量限制
同一个账号一个地域下最多创建 50 个伸缩组。 一个伸缩组内最多创建 10 个伸缩配置。 一个伸缩组内最多创建 50 个伸缩规则。 一个伸缩组内最多创建 6 个事件通知。 一个伸缩组内最多创建 6 个生命周期挂钩。 一个伸缩组最多同时关联 5 个负载均衡实例。 一个账号下最多创建 20 个定时任务。 一个伸缩配置下,最多可以选择 10 个实例规格。
使用流程
1. 创建伸缩组(CreateScalingGroup),配置伸缩资源的最小值(MinSize)、最大值(MaxSize)及需要关联的负载均衡实例和RDS实例。 2. 创建伸缩配置(CreateScalingConfiguration),指定需要弹性伸缩的 ECS 实例的相关属性,如 ImageID、InstanceType 等。 3. 以第二步创建的伸缩配置启用伸缩组(EnableScalingGroup)。 4. 创建伸缩规则(CreateScalingRule),如加 N 台 ECS 实例的伸缩规则。 5. 创建定时任务(CreateScheduledTask),如创建 12:00 触发第四步伸缩规则的定时任务。 6. 创建报警任务(云监控 API PutAlarmRule),如创建 CPU 平均值 (也可以是最大值或最小值)大于等于 80% 则增加一台 ECS 实例的报警任务。
伸缩组
伸缩规则
1. 手动执行 2. 通过定时任务执行 3. 通过报警任务执行
伸缩活动
1. 同一伸缩组内、同一时刻只能有一个伸缩活动在执行。 2. 伸缩活动不可以中断。例如,某个创建20台ECS实例的伸缩活动正在执行中,当创建到第5台ECS实例时,您无法强行终止该伸缩活动。 3. 伸缩活动有ECS实例加入伸缩组失败时,需要保持ECS实例级事务的完整性,而非伸缩活动级事务的完整性,即只进行ECS实例级回滚,而不是伸缩活动级回滚。例如,当伸缩组创建了20台ECS实例,但只有19台ECS实例成功加入负载均衡时,则只对不成功的1台ECS实例进行自动释放操作。 4. 由于弹性伸缩是借助阿里云的RAM(Resource Access Management)服务,通过ECS OpenAPI弹性创建ECS实例,所以回滚的ECS实例在被释放前仍然会被扣费。
冷却时间
1. 伸缩组成功执行伸缩活动后,弹性伸缩服务开始计算冷却时间。如果在伸缩活动中,多台 ECS 实例加入或者移出伸缩组,则从最后一台 ECS 实例加入或者移出伸缩组后开始计算冷却时间。如果在伸缩活动中,没有 ECS 实例成功加入或者移出伸缩组,则不会开始计算冷却时间。 2. 在冷却时间内,伸缩组会拒绝由云监控报警任务触发的伸缩活动请求。但其他类型任务(手动执行任务、定时任务)触发的伸缩活动可以立即执行,绕过冷却时间。 3. 如果您停用伸缩组,然后再次启用伸缩组,冷却时间将会失效。
移出策略
默认策略
先按最早伸缩配置(OldestScalingConfiguration)对应的 ECS 实例进行一级筛选,再按最早创建的 ECS 实例(OldestInstance)进行二级筛选。 先在伸缩组里选最早伸缩配置(OldestScalingConfiguration)对应的 ECS 实例,然后在筛选的结果中,选最早创建的 ECS 实例(OldestInstance)。如果还有多台 ECS 实例,则随机选择一台移出伸缩组。 1. 由于用户手工加入的既有 ECS 实例不与伸缩配置绑定,所以不会先选出该类型的 ECS 实例。 2. 如果伸缩配置关联的 ECS 实例已经全部移出,但还需移出 ECS 实例时,则选最早用户手工移入的 ECS 实例。
自定义设置释放策略
释放策略类型: 1. OldestInstance:取最早创建的 ECS 实例,如果作为一级筛选条件,不区分是用户手工加入的 ECS 实例还是自动创建的 ECS 实例,直接按最早创建的实例进行移出。 2. NewestInstance:取最新创建的实例,如果作为一级筛选条件,不区分是用户手工加入的 ECS 实例还是自动创建的 ECS 实例,直接按最新创建的 ECS 实例进行移出。 3. OldestScalingConfiguration:取最早伸缩配置创建的 ECS 实例;对于用户手工移入的 ECS 实例,自动跳过此条件;如果与伸缩配置相关联的 ECS 实例已经全部移出,还要继续移出 ECS 实例时,则在用户手工加入的 ECS 实例中(没有与伸缩配置关联的 ECS 实例),随机选一台。
实例管理
自动创建的 ECS 实例
弹性伸缩服务负责该类型 ECS 实例的全生命周期管理,即在伸缩组扩展活动中,负责该 ECS 实例的创建,在伸缩组的收缩活动中,负责停止和释放该 ECS 实例。
手工添加的 ECS 实例
弹性伸缩服务不负责该类型 ECS 实例的全生命周期管理,即该类型的 ECS 实例是在弹性伸缩服务之外创建,只能手工加入伸缩组,在伸缩组的收缩活动中或用户手工移出该类型 ECS 实例时,弹性伸缩服务只负责将该 ECS 实例移出伸缩组,不会停止和释放该 ECS 实例。
移出不健康ECS实例
移出不健康 ECS 实例,不受 MinSize 的限制,即移出不健康 ECS 实例后,有可能导致 Total Capacity 低于 MinSize,此时弹性伸缩服务会自动创建差额的 ECS 实例使得 Total Capacity 等于 MinSize。
负载均衡管理
您持有一个或多个处于运行中状态的负载均衡实例,具体操作请参见创建负载均衡实例。 1.负载均衡实例和伸缩组必须位于同一地域。 2.如果负载均衡实例和伸缩组的网络类型均为专有网络,则必须位于同一专有网络。 3.当负载均衡实例的网络类型为经典网络,伸缩组的网络类型为专有网络时,如果负载4.均衡实例的后端服务器组中包含专有网络ECS实例,该ECS实例必须与伸缩组位于同一专有网络。 5.负载均衡实例配置至少一个监听。 6.负载均衡实例必须开启健康检查。
自动创建伸缩活动流程
1. 判断伸缩组的健康状态和边界条件。 2. 分配伸缩活动ID并执行伸缩活动。 3. 创建ECS实例。 4. 修改伸缩组实例数。 5. 为ECS实例分配IP。 6. 将ECS实例添加至RDS实例白名单。 7. 启动ECS实例,等待启动完成。 8.将ECS实例添加至SLB实例后端服务器组,权重设为创建伸缩配置时指定的权重。 9.伸缩活动完成,启动冷却。
自动创建移除活动流程
1.判断伸缩组的健康状态和边界条件。 2.分配伸缩活动ID并执行伸缩活动。 3.从SLB实例后端服务器组移出ECS实例。 4.停止ECS实例,等待停止完成。 5.从RDS实例白名单移出ECS实例。 6.释放ECS实例。 7.修改伸缩组实例数。 8.伸缩活动完成,启动冷却。
手动添加已有ECS实例
1.判断伸缩组的健康状态、边界条件和ECS实例的状态、类型。 2.分配伸缩活动ID并执行伸缩活动。 3.将ECS实例加入伸缩组。 4.修改伸缩组实例数。 5.将ECS实例添加至RDS实例白名单。 6.将ECS实例添加至SLB实例后端服务器组,权重设为当前伸缩组中已激活的伸缩配置中指定的权重。 7.伸缩活动完成,启动冷却。
手动移出已有ECS实例
1.断伸缩组的健康状态和边界条件。 2.分配伸缩活动ID并执行伸缩活动。 3.SLB实例停止向该ECS实例转发流量。 4.等待60秒后,从SLB实例后端服务器组移出ECS实例。 5.从RDS实例白名单移出ECS实例。 6.修改伸缩组实例数。 7.从伸缩组移出ECS实例。 8.伸缩活动完成,启动冷却。