如何在 Google Cloud Platform 中配置托管实例组和自动扩缩

Posted

技术标签:

【中文标题】如何在 Google Cloud Platform 中配置托管实例组和自动扩缩【英文标题】:How do I configure managed instance group and autoscaling in Google Cloud Platform 【发布时间】:2017-05-23 08:16:29 【问题描述】:

自动缩放可帮助您根据负载自动添加或删除计算引擎。 GCP 中自动扩缩的先决条件是实例模板和托管实例组。

这个问题是另一个question's answer 的一部分,该问题是关于构建一个自动缩放和负载平衡的后端。

我已经编写了以下答案,其中包含在 GCP 中设置自动缩放的步骤。

【问题讨论】:

只是阅读有关这些问题的元数据。我同意您的方法 - 创建单独的问题,并邀请其他用户就特定问题提供潜在的高质量答案。但是,也许您可​​以将这些问题表述为更像问题?例如。 “如何在 Google Cloud 平台中配置托管实例组和自动缩放?”。您甚至可以包含原始问题中的一些上下文。这可能会使问题更易于搜索,并允许人们在不知道原始上下文的情况下回答它。 @graham 我已根据您的建议更改了问题。你想让我从问题中删除“这个问题是另一个问题的答案的一部分”的引用吗? 【参考方案1】:

自动扩缩是 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 部分,关于构建自动缩放和负载平衡的后端。

【讨论】:

在实例组上设置 CPU 利用率与在添加后端或后端服务的命令上设置它有什么区别?他们都支持该选项,这似乎是多余且令人困惑的。 >它也可以作为跨区域部署,目前处于 alpha 阶段。你能扩展一下吗?我想使用它,但似乎没有这样的功能。

以上是关于如何在 Google Cloud Platform 中配置托管实例组和自动扩缩的主要内容,如果未能解决你的问题,请参考以下文章

Google Cloud Messaging VS Google Cloud Platform

如何在 Google Cloud Platform 上查看 Dataproc 作业的输出文件

如何从 google-cloud-platform vminstance 中的 pubsub 回调函数调用全局变量?

如何让 PySoundfile 在 Google Cloud Platform 柔性环境中运行? [关闭]

Google Cloud Platform:如何监控VM实例的内存使用情况

有关如何从 Google Cloud Platform 调用外部网络服务的任何信息?