青云QingCloud自动伸缩(AutoScaling)
-
自动伸缩
自动伸缩(AutoScaling)功能可以帮助用户基于监控数据动态地调节资源配置或集群规模,
及时应对突增的系统压力,充分利用云计算的弹性特点调节系统的处理能力,且有效降低维护成本。
比如 IP
带宽、数据库存储空间、负载均衡器的后端数量,都可以自动调节,无需人工介入。
自动调节后会发出通知到用户指定的通知列表,并保留近期的操作历史以备随时查看。warning
自动伸缩的资源操作是基于 API 实现,而 API 的调用是有限制的:
默认情况下每个用户每小时最多调用 2000 次。目前支持自动伸缩的资源包括:
公网IP
可根据公网 IP 的监控数据(进流量、出流量),自动提高或降低 IP 带宽,
并支持设置带宽的最大最小值,在可控的范围内自动调节。 (每天每个公网 IP
带宽调整次数最多 100 次)负载均衡器
可基于负载均衡器监听器的监控数据,自动增加或减少其下的后端服务器数量。
同样支持设置后端服务器集群的最大最小值。关系型数据库
由于磁盘空间不支持缩小操作,所以自动伸缩对数据库服务的支持仅限自动扩容。
当数据库磁盘使用量超过监控阈值后,会自动按照设定的数值扩大磁盘空间。创建自动伸缩
下面以负载均衡器的自动伸缩为例,介绍创建的步骤。
主机启动配置
因为负载均衡器的横向扩充(scale
out)会创建主机,而创建主机需要很多配置项,
所以我们得先准备好这些配置,以便在创建主机时可以按照我们指定的配置来创建。先在控制台导航中点击『管理』-『自动伸缩』进入自动伸缩页面,然后点击『主机启动配置』切换到启动配置页,
之后点击『创建』按钮,开始设置创建主机需要的参数:自有映像: : 主机的操作系统。你可以先在某台主机中搭好环境,需要自启动的服务请设置到开机启动项中。 然后将这个主机制作成自有映像,以后便可基于这个映像创建主机,新建的主机初始便带有已搭好的环境。
CPU / 内存: : 主机的 CPU 和内存
主机网络: : 主机要加入的网络,包括基础网络、受管私有网络和自管私有网络。
主机登录方式: : 密码登录 或 SSH 密钥登录(推荐 SSH 密钥登录,更安全)
防火墙: : 主机使用的防火墙
UserData: : 即用户自定义数据,可让用户在创建主机时通过上传一些自定义的参数或脚本。更多请见 guide-userdata
设置好后点击『提交』。
note
只有负载均衡器的自动伸缩需要依赖主机启动配置自动伸缩类型
现在我们切换到自动伸缩页开始创建伸缩策略,点击『创建』按钮
后首先我们需要指定操作类型、资源类型、资源ID等信息,
以及在资源发生自动伸缩操作后用于接收通知的『通知列表』。提交后会进入自动伸缩策略的详情页,页面中左侧是刚才设置的信息和关联的资源,右侧是伸缩规则。
除了数据库服务的自动伸缩只支持扩容规则外(硬盘不支持缩小容量),
公网IP和负载均衡器都支持『扩大』和『减少』两条规则。触发条件
下面我们开始定义触发条件,即根据监控数据设置阈值,若达到阈值则触发自动伸缩。
触发条件中可设置多条监控告警规则,规则间可以是『所有』或『任意』的关系。- 如果是『所有』关系,则每个告警规则都满足时,才触发自动伸缩;
- 如果是『任意』关系,则一旦有一条告警规则满足,就会触发。
这里我们设置若响应延迟时间大于2秒,且请求数和并发数都超出一定值的话,
则触发自动伸缩为负载均衡器增加后端。 (关于监控告警策略的更多介绍可参考
guide-alarm)操作参数
第二步是设置具体的操作参数,也是 AutoScaling
在执行时会参考和判断的数值。
如下面图中所示,负载均衡器在增加后端服务时,需要指定一次增加几台主机,以及最大数量是多少,
还有创建主机所需的启动配置,负载均衡服务端口号等参数。
(服务端口、转发策略、权重含义可参见 guide-loadbalancer )。这里我们设置为增加2个后端服务器,启动配置选择刚才准备好的配置,新建的主机名称设为
"website" (创建后主机名称将会是 “website [controlled by
asp-xxxx]”), 并且后端的数量最多不超过10个。warning
这里的最大值,是指由 AutoScaling 管理的后端数量。判断是否由
AutoScaling 管理目前是靠资源名称中是否带有 "controlled by asp-xxx"
来作为判断依据 ( 其中 “asp-xxx” 是自动伸缩策略的 ID )。
如果负载均衡器后端名称中包含这个标记,则会被 AutoScaling 调度,
如果没有则会被 AutoScaling 忽略。用户可根据需要自行修改资源名称,
决定是否交由 AutoScaling 管理。『减少』的规则也是类似,就不再赘述。
此例中我们设置为若连续3个监控周期,请求数和并发数都比较低的话,
就自动减少1个负载均衡器后端,且后端数量不少于3个。note
你可以根据业务特点和运维经验,选择合适的监控项作为自动伸缩的触发条件,并设置适当的调节幅度。至此自动伸缩策略便创建完成了,如果之后需要修改或调整,都可在自动伸缩策略详情页中操作。
需要注意的是,自动伸缩策略一旦创建完成,其『操作类型』和关联的资源便不可改变了。
如果需要对其他资源做自动伸缩,请另行创建相应的策略。
下图为设置后的自动伸缩详情页。note
虽然支持『扩大』和『减少』两种规则,但你可以只设置其中一个,这样只有设置的规则会起作用。执行自动伸缩
立即执行
当自动伸缩规则设定后,默认只有在触发条件满足时才会自动执行。
为了让用户能够随时了解自动伸缩会给资源带来的改变,我们提供了立即执行的功能。
你可以在操作参数右侧的『操作』菜单中点击『执行』。 点击后会立刻触发
AutoScaling 行为,并根据设定好的参数调整你的资源。note
每次成功执行完自动伸缩规则后,会有 5分钟 的冷却时间。
在此期间这个自动伸缩规则不接受新的执行请求,直至冷却时间结束。
所以在设置资源调整幅度时,需考虑冷却时间因素,设置恰当的调幅。查看脚本
自动伸缩规则设定后,会生成为类 python
的脚本,操作时会编译并执行这个脚本。
在控制台通过点击操作参数右侧的『操作』-『查看脚本』可以浏览这个脚本。未来我们考虑将脚本的编写功能开放,让用户可以根据自己的需要自行编写脚本,
这样自动伸缩功能就可支持更丰富、自定义的资源调度行为,满足有复杂需求的用户。查看自动伸缩历史记录
自动伸缩管理过程中的重要事件都会保存在历史记录中,包括:
- 自动伸缩执行后,会有相应的执行记录,包括执行过程中的所有API调用情况,以及脚本中的输出信息。
- 发送通知给通知列表后,也会有相应的记录,
历史记录会保留最近 50 条,更早的记录会定期删除。