自动伸缩

自动伸缩(AutoScaling)功能可以帮助用户基于监控数据动态地调节资源配置或集群规模, 及时应对突增的系统压力,充分利用云计算的弹性特点调节系统的处理能力,且有效降低维护成本。 比如 IP 带宽、数据库存储空间、负载均衡器的后端数量,都可以自动调节,无需人工介入。 自动调节后会发出通知到用户指定的通知列表,并保留近期的操作历史以备随时查看。

警告

自动伸缩的资源操作是基于 API 实现,而 API 的调用是有限制的: 默认情况下每个用户每小时最多调用 2000 次。

支持的资源类型

目前支持自动伸缩的资源包括:

公网IP

可根据公网 IP 的监控数据(进流量、出流量),自动提高或降低 IP 带宽, 并支持设置带宽的最大最小值,在可控的范围内自动调节。

警告

每天每个公网 IP 带宽调整次数最多 100 次)

负载均衡器

负载均衡器的自动伸缩支持两种模式:

  • 固定的后端数量

    基于负载均衡器监听器的健康检查机制,维持一个固定数量的后端集群。 当健康的后端数量不等于所设置的值时,会自动创建或删除后端服务器。

  • 动态浮动的后端数量

    基于负载均衡器监听器的多种压力监控项,自动增加或减少其下的后端服务器。 并支持设置后端服务器集群的最大、最小数,在可控的范围内自动调节。。

关系型数据库

当数据库磁盘使用量超过监控阈值后,会自动按照设定的数值扩大磁盘空间。 (由于磁盘空间不支持缩小操作,所以自动伸缩对数据库服务的支持仅限自动扩容)

创建自动伸缩

下面以负载均衡器的自动伸缩为例,介绍创建的步骤。

主机启动配置

因为负载均衡器的横向扩充(scale out)会创建主机,而创建主机需要很多配置项, 所以我们得先准备好这些配置,以便在创建主机时可以按照我们指定的配置来创建。

先在控制台导航中点击『管理』-『自动伸缩』进入自动伸缩页面,然后点击『主机启动配置』切换到启动配置页, 之后点击『创建』按钮,开始设置创建主机需要的参数:

  • 自有映像:

    主机的操作系统。你可以先在某台主机中搭好环境,需要自启动的服务请设置到开机启动项中。 然后将这个主机制作成自有映像,以后便可基于这个映像创建主机,新建的主机初始便带有已搭好的环境。

  • CPU / 内存:

    主机的 CPU 和内存

  • 主机网络:

    主机要加入的网络,包括基础网络、受管私有网络和自管私有网络。

  • 主机登录方式:

    密码登录 或 SSH 密钥登录(推荐 SSH 密钥登录,更安全)

  • 防火墙:

    主机使用的防火墙

  • UserData:

    即用户自定义数据,可让用户在创建主机时通过上传一些自定义的参数或脚本。更多请见 User Data 指南

设置好后点击『提交』。

注解

只有负载均衡器的自动伸缩需要依赖主机启动配置

自动伸缩类型

现在我们切换到自动伸缩页开始创建伸缩策略,点击『创建』按钮 后首先我们需要指定操作类型、资源类型、资源ID等信息, 以及在资源发生自动伸缩操作后用于接收通知的『通知列表』。

提交后会进入自动伸缩策略的详情页,页面中左侧是刚才设置的信息和关联的资源,右侧是伸缩规则。 除了数据库服务的自动伸缩只支持扩容规则外(硬盘不支持缩小容量), 公网IP和负载均衡器都支持『扩大』和『减少』两条规则。

触发条件

下面我们开始定义触发条件,即根据监控数据设置阈值,若达到阈值则触发自动伸缩。 触发条件中可设置多条监控告警规则,规则间可以是『所有』或『任意』的关系。

  • 如果是『所有』关系,则每个告警规则都满足时,才触发自动伸缩;
  • 如果是『任意』关系,则一旦有一条告警规则满足,就会触发。

这里我们设置若响应延迟时间大于2秒,且请求数和并发数都超出一定值的话, 则触发自动伸缩为负载均衡器增加后端。 (关于监控告警策略的更多介绍可参考 监控告警)

操作参数

第二步是设置具体的操作参数,也是 AutoScaling 在执行时会参考和判断的数值。 如下面图中所示,负载均衡器在增加后端服务时,需要指定一次增加几台主机,以及最大数量是多少, 还有创建主机所需的启动配置,负载均衡服务端口号等参数。 (服务端口、转发策略、权重含义可参见 负载均衡器 )。

这里我们设置为增加2个后端服务器,启动配置选择刚才准备好的配置,新建的主机名称设为 “website” (创建后主机名称将会是 “website [controlled by asp-xxxx]”), 并且后端的数量最多不超过10个。

警告

这里的最大值,是指由 AutoScaling 管理的后端数量。判断是否由 AutoScaling 管理目前是靠资源名称中是否带有 “controlled by asp-xxx” 来作为判断依据 ( 其中 “asp-xxx” 是自动伸缩策略的 ID )。 如果负载均衡器后端名称中包含这个标记,则会被 AutoScaling 调度, 如果没有则会被 AutoScaling 忽略。用户可根据需要自行修改资源名称, 决定是否交由 AutoScaling 管理。

『减少』的规则也是类似,就不再赘述。 此例中我们设置为若连续3个监控周期,请求数和并发数都比较低的话, 就自动减少1个负载均衡器后端,且后端数量不少于3个。

注解

你可以根据业务特点和运维经验,选择合适的监控项作为自动伸缩的触发条件,并设置适当的调节幅度。

至此自动伸缩策略便创建完成了,如果之后需要修改或调整,都可在自动伸缩策略详情页中操作。 需要注意的是,自动伸缩策略一旦创建完成,其『操作类型』和关联的资源便不可改变了。 如果需要对其他资源做自动伸缩,请另行创建相应的策略。 下图为设置后的自动伸缩详情页。

注解

虽然支持『扩大』和『减少』两种规则,但你可以只设置其中一个,这样只有设置的规则会起作用。

执行自动伸缩

立即执行

当自动伸缩规则设定后,默认只有在触发条件满足时才会自动执行。 为了让用户能够随时了解自动伸缩会给资源带来的改变,我们提供了立即执行的功能。 你可以在操作参数右侧的『操作』菜单中点击『执行』。 点击后会立刻触发 AutoScaling 行为,并根据设定好的参数调整你的资源。

注解

每次成功执行完自动伸缩规则后,会有 5分钟 的冷却时间。 在此期间这个自动伸缩规则不接受新的执行请求,直至冷却时间结束。 所以在设置资源调整幅度时,需考虑冷却时间因素,设置恰当的调幅。

查看脚本

自动伸缩规则设定后,会生成为类 python 的脚本,操作时会编译并执行这个脚本。 在控制台通过点击操作参数右侧的『操作』-『查看脚本』可以浏览这个脚本。

未来我们考虑将脚本的编写功能开放,让用户可以根据自己的需要自行编写脚本, 这样自动伸缩功能就可支持更丰富、自定义的资源调度行为,满足有复杂需求的用户。

查看自动伸缩历史记录

自动伸缩管理过程中的重要事件都会保存在历史记录中,包括:

  • 自动伸缩执行后,会有相应的执行记录,包括执行过程中的所有API调用情况,以及脚本中的输出信息。
  • 发送通知给通知列表后,也会有相应的记录,

历史记录会保留最近 50 条,更早的记录会定期删除。