目录
第一章 概述
第二章 弹性伸缩简介
1、弹性伸缩
2、垂直伸缩
3、优势
4、应用场景
① 无规律的业务量波动
② 有规律的业务量波动
③ 无明显业务量波动
④ 混合型业务
⑤ 消息通知
⑥ 生命周期挂钩
⑦ 自定义方式
⑧ 滚的升级
5、使用限制
第三章 主要定义
1、工作原理
2、基础概念
① 伸缩组
② 弹性容器实例ECI
③ 稳定实例
④ SLB负载均衡实例
⑤ 伸缩模式
⑥ 实例配置信息来源
⑦ 伸缩配置
⑧ 伸缩规则
⑨ 自动触发任务
3、常见活动
① 伸缩活动
② 期望实例数
③ 并行伸缩活动
④ 非并行伸缩任务
4、伸缩组流程
① 伸缩组流程
② 组内实例生命周期
③ 生命周期挂钩
④ 冷却时间
第四章 使用流程
1、创建伸缩组
2、创建伸缩配置
3、启用伸缩组
4、创建伸缩规则
5、创建自动伸缩任务
① 定时任务
② 报警任务
第五章 伸缩组详解
1、创建伸缩组
2、伸缩组状态
3、创建伸缩组限制
4、创建步骤
5、删除伸缩组
① 删除保护
② 删除结果
③ 强制删除
④ 非强制删除
6、伸缩组内实例状态
7、自动创建ECS实例
8、手动创建ECS实例
9、查看伸缩组实例列表
10、移除或释放实例
11、转为备用状态
12、转出备用状态
13、转为保护状态
14、转为停用状态
15、手动移出或删除实例
16、自动移除策略
① 筛选最早伸缩配置对应的实例
② 筛选最早创建的实例
③ 筛选最新创建的实例
④ 无策略
第五章 伸缩配置详解
1、创建前提
2、创建步骤
3、伸缩配置状态
第六章 伸缩规则详解
1、规则类型
① 普通规则
② 步进规则
③ 预测规则
④ 目标追踪规则
第七章 伸缩模式详解
1、模式类型
① 固定数量模式
② 健康模式
③ 定时模式
④ 动态模式
⑤ 自定义模式
⑥ 多模式并行
2、健康模式说明
3、定时模式说明
4、动态模式说明
① 系统监控报警任务
② 自定义监控报警任务
③ 报警任务支持监控项
第八章 伸缩活动
1、弹性扩容
2、弹性缩容
3、伸缩活动特点
4、伸缩活动自动创建ECS实例
5、伸缩活动自动移出实例
6、手动添加实例到伸缩组
7、手动移出伸缩组实例
8、并行/非并行伸缩活动
① 并行伸缩活动
② 非并行伸缩活动
9、冷却时间
第九章 自动化运维
第一章 概述
第二章 弹性伸缩简介
1、弹性伸缩
根据业务实际需求和策略,自动调整计算能力(即实例数量),自动适配当前业务实际的需求,优化成本,也优化系统的稳定性。
2、垂直伸缩
不调整实例数量,而是调整实例的规格(vCPU和内存),系统自动完成停止实例,调整实例规格,启动实例。
3、优势
4、应用场景
① 无规律的业务量波动
利用弹性伸缩的报警任务,阿里云根据实例的运行指标自动弹性伸缩。
报警任务支持:CPU、内存、平均负载、内外网出入流量、TCP连接总数。
② 有规律的业务量波动
利用弹性伸缩的定时任务,自动定时执行弹性伸缩。
③ 无明显业务量波动
健康检查模式,确保服务健康。
④ 混合型业务
综合使用所有弹性策略。
⑤ 消息通知
伸缩成功、失败、拒绝之后都可以通知信息,支持消息通知(短信、站内信、邮件)和事件通知(发送至云监控事件或者消息服务(MNS主题和MNS队列))。
⑥ 生命周期挂钩
触发弹性伸缩的时候,设置挂钩可以让实例处于挂起中状态,可以有一段自定义操作的时间,支持OOS模板。
⑦ 自定义方式
手动向伸缩组添加或者移除ECS实例。
⑧ 滚的升级
通过任务形式批量修改ECS实例,可以为伸缩组内处理服务中的实例批量更换镜像,执行脚本、安装OOS软件包。
5、使用限制
部署在ECS实例上的应用必须是无状态的并且支持横向扩展。
伸缩组内的ECS可能会自动释放,所以不适合保存会话记录、应用数据、日志等信息。这些信息推荐使用独立的状态实例,数据保存到RDS、日志保存到日志服务;
不支持自动将实例添加到Memcache实例的访问白名单,需要手动添加。
如果伸缩组关联的RDS、ALB、CLB、SLB实例的后端服务器被删除了,伸缩组自动解雇关联关系。
如果伸缩组自动触发连续失败30天就不搞了,通知用户。
第三章 主要定义
1、工作原理
2、基础概念
① 伸缩组
具有相同应用场景,相同实例类型的集合。伸缩组定义了组内可容纳的实例数的最大最小值、关联的负载均衡实例,关联RDS实例等属性。
② 弹性容器实例ECI
阿里云结合容器和Serverless提供的容器运行服务。
③ 稳定实例
特指在伸缩组中处于服务中、保护中、备用中状态的ECS实例。
④ SLB负载均衡实例
对流量进行按需分发,流量分发到不同的实例处理,提供系统整体吞吐量。
⑤ 伸缩模式
对应不同的增加、减少实例的操作,包含:定时模式、动态模式、固定数量模式、自定义模式、健康模式、多模式并行。
⑥ 实例配置信息来源
需要指定伸缩的ECS到底要用什么配置来初始化创建ECS,支持伸缩模板和实例启动模板。
⑦ 伸缩配置
组内实例的配置信息,在创建实例的时候用到。
⑧ 伸缩规则
步进规则、目标追踪规则、简单规则用于触发伸缩时控制增加或者减少实例的具体数量;
预测规则可以基于历史变更数据智能规定实例的数量边界值;
⑨ 自动触发任务
分为定时任务、报警任务触发;定时任务可以指定该时间扩缩容,报警任务是根据监控到的异常指标决定是否扩缩容。
3、常见活动
① 伸缩活动
用于记录伸缩组内实例数、伸缩组边界值、期望实例数等数量变化情况。执行伸缩规则、修改边界值、修改期望实例数等操作都会触发伸缩活动。
② 期望实例数
开启期望实例数后,伸缩组会自动将实例的数量维持在期望数,无需人工干预。当然能用的前提是创建伸缩组的时候开启这个功能,开启之后可以修改的。
③ 并行伸缩活动
并且伸缩任务执行的时候可以执行其他并行任务。当以下方式触发伸缩活动就是并行伸缩活动:
手动执行伸缩规则、定时任务执行伸缩规则;
手动添加ECS实例,移除ECS实例;
期望实例数检查任务、实例健康检查任务、最大最小检查任务;
④ 非并行伸缩任务
具有排他性,不开启期望实例数功能,所有都是非并行伸缩任务。
4、伸缩组流程
① 伸缩组流程
指的是可以手动暂停、恢复的流程,包括:扩容流程、缩容流程、健康检查、定时任务、报警任务等用于更精细的控制伸缩组流程级别的动作。
② 组内实例生命周期
指ECS在伸缩组内从创建到释放的过程。如果由伸缩组自动创建就由伸缩组管理,手动创建的ECS实例可以托管给伸缩组,也可以不托管自己管理。
③ 生命周期挂钩
伸缩组创建或者释放实例的收,不立即执行,流出一定时间给自定义操作。
④ 冷却时间
伸缩活动后锁定一定时间不再被云监控触发伸缩活动请求,避免频繁触发。
第四章 使用流程
必须配置并且启用伸缩组、以及组内实例配置来源。其他组件可以按需配置。
1、创建伸缩组
使用弹性伸缩管理业务所用的ECS实例时,伸缩组是基本的管理单元。伸缩组用于管理有相同应用场景的ECS实例,并支持关联多个负载均衡实例和RDS实例。伸缩组关联负载均衡实例和RDS实例后,ECS实例加入伸缩组时会自动添加为负载均衡实例的后端服务器,其内网IP会自动加入RDS实例的访问白名单。
2、创建伸缩配置
伸缩配置是弹性伸缩自动创建ECS实例时所使用的实例模板。一个伸缩组支持创建多个伸缩配置,但同一时间只允许一个伸缩配置处于生效状态。(如果您在创建伸缩组时,选择启动模板或者已有实例作为配置信息来源,则不用手动创建伸缩配置,可以直接启用伸缩组。)
3、启用伸缩组
首次创建伸缩配置后,会自动提示启用伸缩组。您也可以在伸缩组列表自行启用伸缩组。
4、创建伸缩规则
伸缩规则用于指定扩缩容ECS实例的数量等信息或者智能地设置伸缩组边界值,您可以根据业务需要创建对应类型的伸缩规则。
5、创建自动伸缩任务
创建伸缩规则后,您可以通过自动伸缩任务自动执行伸缩规则,实现自动扩缩容。自动伸缩任务支持以下类型:
① 定时任务
如果您可以预测业务量波动的时间,使用定时任务在指定时间自动扩缩容即可。定时任务支持设置重复周期,满足周期性自动扩缩容的需求。
② 报警任务
如果您需要基于ECS实例的运行指标自动扩缩容,可以使用报警任务。报警任务基于云监控的监控项动态管理伸缩组内ECS实例。
第五章 伸缩组详解
1、创建伸缩组
如果弹性伸缩的ECS无法加入RDS或者SLB访问白名单,自动创建的实例回回滚和释放,手动创建的实例则会保留下来。
一个实例只能加入一个伸缩组,并且一定要在同一个地域。
2、伸缩组状态
可以看到API中只有三种:
3、创建伸缩组限制
同一个地域下,伸缩组的熟练有限制;
创建的时候需要执行实例数量的边界值,最大最小值,也可以指定期望数。
如果没有配置期望数,并且最小值大于0并且实际实例数小于最小值就自动扩容一次;如果配置了期望数,并且期望数大于0并且实际实例数不一致,就自动触发扩容一次。
4、创建步骤
登录控制台;
顶部菜单选择地域;
左侧导航栏选择伸缩组;
左上角创建,完成配置后确认;
5、删除伸缩组
① 删除保护
如果开启删除保护,就不可以通过控制台或者API删除伸缩组了。
② 删除结果
会同时删除组内的伸缩配置和伸缩规则。
如果有运行中的实例,会先停止实例,然后移出手动创建的实例,释放所有自动创建的实例。
③ 强制删除
先停止伸缩组,拒绝新的伸缩活动,等待已有的伸缩活动完成,移出手动,释放自动。
④ 非强制删除
当伸缩组没有任何伸缩活动并且实例为0就可以停止伸缩组,然后删除伸缩组。
6、伸缩组内实例状态
从加入到移出伸缩组,状态有:加入中 、加入挂起中、服务中、备用中、保护中、移出中、移出挂起中、停用中。
7、自动创建ECS实例
配置全部相同;
如果指定了RDS,系统自动将ECS的IP加入到RDS的访问白名单;
如果指定了负载均衡,系统自动将ECS加入负载均衡的后端服务器中;
8、手动创建ECS实例
实例和伸缩组必须同地域;
没有加入其他伸缩组;
实例必须运行中;
实例和伸缩组的网络类型必须一致;
伸缩组必须启用状态;
伸缩组不存在执行中的伸缩活动;
如果将手动创建的ECS托管生命周期给伸缩组,移除的时候也会释放实例,特殊的是支持将包年包月的实例添加,单不能托管。
9、查看伸缩组实例列表
登录控制台;
左侧菜单栏点击伸缩组管理;
选择地域;
对伸缩组查看详情;
实例列表页签;
查看ECS实例;
10、移除或释放实例
无论自动或者手动创建的实例,都可以转为备用状态、转入转出保护状态。
如果是自动创建的实例,并且被检测出不健康了,会自动释放实例,并且另起一个健康实例替换。
如果是手动创建的时候,被检测没有运行中就会被判定不健康,自动移除伸缩组,是否释放根据是否生命周期托管决定,托管了就释放,没托管就只是移除而不释放。
11、转为备用状态
如果配置了负载均衡,备用状态后负载均衡的权重归0;
一直保持备用直到移出;
不再自动管理备用的实例的生命周期,手动维护;
伸缩活动的时候,不会移出备用的实例;
备用的时候停止或者重启,不会更新健康检查状态;
需要先移出备用状态ECS才能释放;
如果伸缩组删除了,备用实例会被移出并且自动解除备用状态;
12、转出备用状态
实例恢复服务;
如果有负载均衡实例,实例会重新加入负载均衡,权重默认50;
ECS实例停止或者重启,会更新健康检查状态;
如果发生伸缩活动,实例可以正常被移除;
13、转为保护状态
如果配置了负载均衡实例,不会影响实例的权重;
一直保持状态直到被移出保护状态;
伸缩活动不会移出保护状态的实例,需要手动移出才能释放;
实例停止或者重启,不会更新健康检查状态;
14、转为停用状态
不再提供服务,部分资源不再收费;只有EIP和云盘还要继续收费。
15、手动移出或删除实例
伸缩组启用状态,并且不存在执行中的伸缩活动,就可以移出或者删除实例;
手动操作可以绕过冷却时间直接执行;
如果删除后实例数小于边界最小值,会失败;
16、自动移除策略
支持两段设置先筛选再从结果中移出,不支持两段设置相同的选项,如果筛选后还有多个实例则随机选择;
① 筛选最早伸缩配置对应的实例
但是不会先把手动的选出来,只有移除不够数的时候才用手动的实例;
② 筛选最早创建的实例
③ 筛选最新创建的实例
④ 无策略
表示不进行第二段筛选。
第五章 伸缩配置详解
1、创建前提
必须先创建伸缩组,如果要使用智能配置,网络类型必须是VPC。
必须创建安全组。
2、创建步骤
控制台-伸缩组管理-选择地域;
选择伸缩组,打开详情;
点击 实例配置来源 页签;
创建伸缩组配置;
完成基础:付费模式(按量,抢占)、配置方式(规格、智能)、镜像(公共、自定义、公共、社区)、存储、公网IP、安全组、IPv6;
完成系统配置:标签、资源组、登录凭证(不支持创建时设置密码,SSH密钥对可以)、实例名称、主机名、RAM角色(仅VPC)、自定义数据(仅VPC)、私有池容量、专有宿主机:
填写伸缩配置名称;
启用配置;
3、伸缩配置状态
Active:生效状态
Inactive:失效状态
Deleting:删除中
第六章 伸缩规则详解
1、规则类型
① 普通规则
用于触发伸缩活动,增加或者减少指定数量的实例,或者将实例调整到指定数量;如果是报警任务触发的则需要等到冷却完成之后才能生效了。
② 步进规则
基于云监控告警和分段扩缩容,通过一组策略更加精细的控制扩缩容。
③ 预测规则
智能设置伸缩组边界,通过分析至少24小时的活动,通过机器学习预测未来48小时的监控指标。
④ 目标追踪规则
选择一个云监控指标,指定目标值。伸缩组根据目标指标自动创建报警任务,删除规则后伸缩组会同步删除自动生成的报警任务。
第七章 伸缩模式详解
1、模式类型
① 固定数量模式
由伸缩组的最大、最小实例数,或者期望实例数。
② 健康模式
需要开始实例中的健康检查配置。
③ 定时模式
由定时任务决定、多个定时任务时执行最早触发的一个。
④ 动态模式
伸缩效果由报警任务决定。
⑤ 自定义模式
需要手动添加、移出、删除实例,或者手动触发伸缩规则。
⑥ 多模式并行
多种模式一起生效,配置也要全部都有。
2、健康模式说明
开启健康模式后,伸缩组会定时检查实例的运行状态,如果发现一台实例位处于运行中,判定实例不健康并移出,创建新的实例加入伸缩组。
3、定时模式说明
是一种预设任务,可以指定时间执行伸缩规则。
如果没有设置重复周期,那么只会执行一次。
伸缩方式可以选择已有的伸缩规则,也可以直接设置实例的最大最小值或者期望数。
重试过期时间:为了避免定时任务执行失败,在设置的重启过期时间内会重试定时任务。
可以在控制台操作修改或者删除定时任务、启用停用定时任务。
4、动态模式说明
适用于没有规律的波动需求。
需要利用云监控服务CMS,监控特定的指标,对数据指标进行实时统计,当统计值满足指定的报警条件时,触发报警任务并指定伸缩活动。
报警任务分为两类:系统监控报警和自定义报警任务。
如果有其他非并行的伸缩活动时,报警任务触发的伸缩活动就不生效。
冷却时间内不生效。
报警任务默认沉默时间是一分钟,一分钟内不会重复触发报警任务伸缩。
① 系统监控报警任务
伸缩组会给组内所有实例都安装云监控客户端,GPU监控需要单独安装GPU驱动程序。
② 自定义监控报警任务
需要主动将特定业务的监控指标上报给云监控。
③ 报警任务支持监控项
CPU使用率、内存、系统平均负载、内外网出入流量、TCP总连接数和已建立数、系统盘读写BPS和IOPS、内网网卡收包和发包数,GPU使用率、GPU内存空闲率和使用率。
第八章 伸缩活动
1、弹性扩容
2、弹性缩容
3、伸缩活动特点
无法强行终止;
ECS实例级别的事务完整性;
有冷却时间;
可进行实例生命周期托管;
可进行实例释放保护;
同一个伸缩组内,统一时间只能有一个伸缩活动;
4、伸缩活动自动创建ECS实例
判断伸缩组的健康状态和边界条件;
分配伸缩活动ID并执行活动;
创建ECS实例;
修改伸缩组的实例数;
为ECS分配IP;
将实例添加到RDS白名单;
启动ECS实例;
将实例添加到SLB的后端服务器组,权重就是配置的权重。
伸缩活动完成,启动冷却。
5、伸缩活动自动移出实例
判断申诉组健康状态;
分配伸缩活动ID并执行活动;
从SLB后端服务器组移出实例;
停止实例;
从RDS白名单移出实例;
释放实例;
修改伸缩组数量;
活动完成,启动冷却。
6、手动添加实例到伸缩组
判断伸缩组的健康状态、边界条件和实例的状态以及类型;
分配伸缩ID并执行伸缩活动;
将实例添加到伸缩组;
修改伸缩组实例数;
添加到RDS白名单;
将实例添加到SLB的后端服务器组;
伸缩完成,启动冷却。
7、手动移出伸缩组实例
判断申诉组健康状态;
分配伸缩活动ID并执行活动;
停止SLB向实例转发流量;
等待60S从SLB后端服务器组移出实例;
从RDS白名单移出实例;
修改伸缩组数量;
移出实例;
活动完成,启动冷却。
8、并行/非并行伸缩活动
已设置期望实例数的伸缩组可以执行并行伸缩活动、但是不支持同时有并行和非并行伸缩活动。
未设置期望数的伸缩组不可以执行并行伸缩组。
① 并行伸缩活动
存在执行中的并行伸缩活动时,可以执行其他并行伸缩活动。包括通过以下方式触发的伸缩活动:
-
手动执行伸缩规则、通过定时任务执行伸缩规则。
-
手动添加实例、手动移出实例。
-
系统自动进行的期望实例数检查任务、实例健康检查任务、最大最小值检查任务。
② 非并行伸缩活动
存在执行中的非并行伸缩活动时,不能执行其他伸缩活动。并行伸缩活动以外的伸缩活动均属于非并行伸缩活动。包括但不限于通过以下方式触发的伸缩活动:
-
系统通过报警任务自动执行伸缩规则。
-
手动在实例列表页签中执行再均衡分布。
-
系统自动执行抢占式实例补偿任务。
9、冷却时间
多台实例加入或者移出伸缩组,以最后一台实例为基准计算冷却时间。
如果是停用后的再启用伸缩组,首次伸缩活动可以立即执行,不需要CD。
非报警任务触发的伸缩活动不需要CD。
第九章 自动化运维
通过生命周期挂钩和OOS模板实现自动化运维。