自动扩缩是 GCP 中托管实例组的一项功能。这有助于通过扩展实例来处理非常高的流量,同时它还可以在没有流量时缩减实例,从而节省大量资金。
要设置自动缩放,我们需要以下内容:
实例模板 是一个蓝图,用于定义将在自动扩展的托管实例组中运行的同类实例的机器类型、映像和磁盘。我已经写好了设置实例模板here的步骤。
托管实例组有助于保留一组基于单个实例模板的同类实例。假设实例模板为 sample-template。这可以通过在gcloud 中运行以下命令来设置:
gcloud compute instance-groups managed \
create autoscale-managed-instance-group \
--base-instance-name autoscaled-instance \
--size 3 \
--template sample-template \
--region asia-northeast1
以上命令基于示例模板创建了一个托管实例组,其中包含 3 个计算引擎,位于 asia-northeast1 区域的三个不同区域。
-
base-instance-name 将是所有自动创建的实例的基本名称。除了基本名称之外,每个实例名称都将附加一个唯一生成的随机字符串。
-
size 表示组中所需的实例数。截至目前,3 个实例将一直运行,而与应用程序产生的流量无关。稍后,可以通过向该组应用策略来自动缩放。
-
区域(多区域)或单区域:托管实例组可以设置在区域(多区域)中,即同构实例将均匀分布在给定区域的所有区域中或者所有实例都可以部署在一个区域内的同一个区域中。它也可以部署为跨区域一,目前处于 alpha 阶段。
自动扩缩政策决定了自动扩缩器的行为。自动缩放器聚合来自实例的数据并将其与策略中指定的所需容量进行比较,并确定要采取的操作。有许多自动缩放策略,例如:
平均 CPU 利用率
HTTP 负载均衡服务能力(请求数/秒)
Stackdriver 标准和自定义指标
和many more
现在,通过在gcloud 中运行以下命令,向此托管实例组引入 Autoscaling:
gcloud compute instance-groups managed \
set-autoscaling \
autoscale-managed-instance-group \
--max-num-replicas 6 \
--min-num-replicas 2 \
--target-cpu-utilization 0.60 \
--cool-down-period 120 \
--region asia-northeast1
上述命令设置了一个基于 CPU 利用率 的自动缩放器,范围从 2(如果没有流量)到 6(如果交通繁忙)。
-
cool-down-period 标志指定实例启动后在关联的自动调节程序开始从中收集信息之前等待的秒数。
- 一个自动扩缩器最多可以关联 5 个不同的政策。如果有多个策略,Autoscaler 会推荐具有最大实例数的策略。
-
有趣的事实:当实例由自动扩缩器启动时,它确保实例运行至少 10 分钟,而与流量无关。之所以这样做,是因为 GCP 会为计算引擎的至少十分钟运行时间计费。它还可以防止实例的不稳定启动和关闭。
最佳实践:从我的角度来看,创建一个安装了所有软件的自定义映像比使用启动脚本更好。因为在自动缩放组中启动新实例所需的时间应尽可能短。这将提高您扩展 Web 应用程序的速度。
这是3-part series 的第 2 部分,关于构建自动缩放和负载平衡的后端。