Create a GCS bucket

检查我的进度

/ 25

Create an instance template

检查我的进度

/ 25

Create an instance group

检查我的进度

/ 25

Configure autoscaling for the instance group

检查我的进度

/ 25

此实验可能会提供 AI 工具来支持您学习。
此内容尚未针对移动设备进行优化。
为获得最佳体验,请在桌面设备上访问通过电子邮件发送的链接。

GSP087

Google Cloud 自学实验

概览

通过在 Compute Engine 托管式实例组 (MIG) 中使用自动扩缩功能,可根据用户需求自动调整容量,从而确保应用的可靠性和成本效益。

实验架构图

  • 如果某个虚拟机实例发生故障或运行状况不佳,MIG 会自动替换该实例。
  • 在需求高峰期,实例组会扩容以处理负载;在需求低谷期,实例组会缩容以节省闲置计算资源产生的费用。
  • 通过使用自定义指标,您可以根据应用特有的内部运行状况因素(而不仅仅是基础的 CPU 使用率)来灵活进行扩缩。

在本实验中,您将部署一个基于指标自动扩缩的托管式实例组,然后使用 Monitoring 确认您的应用能否自动管理其容量。

目标

在本实验中,您将学习如何执行以下任务:

  • 部署自动扩缩的 Compute Engine 托管式实例组。
  • 创建用于扩缩实例组的自定义指标。
  • 通过 Monitoring 观察系统

设置和要求

点击“开始实验”按钮前的注意事项

请阅读以下说明。实验是计时的,并且您无法暂停实验。计时器在您点击开始实验后即开始计时,显示 Google Cloud 资源可供您使用多长时间。

此实操实验可让您在真实的云环境中开展实验活动,免受模拟或演示环境的局限。为此,我们会向您提供新的临时凭据,您可以在该实验的规定时间内通过此凭据登录和访问 Google Cloud。

为完成此实验,您需要:

  • 能够使用标准的互联网浏览器(建议使用 Chrome 浏览器)。
注意:请使用无痕模式(推荐)或无痕浏览器窗口运行此实验。这可以避免您的个人账号与学生账号之间发生冲突,这种冲突可能导致您的个人账号产生额外费用。
  • 完成实验的时间 - 请注意,实验开始后无法暂停。
注意:请仅使用学生账号完成本实验。如果您使用其他 Google Cloud 账号,则可能会向该账号收取费用。

如何开始实验并登录 Google Cloud 控制台

  1. 点击开始实验按钮。如果该实验需要付费,系统会打开一个对话框供您选择支付方式。右侧是实验设置和访问权限面板,其中包含以下内容:

    • 打开 Google Cloud 控制台按钮
    • 您在本实验中必须使用的临时凭证(用户名和密码)
    • 帮助您逐步完成该实验所需的其他信息(如果需要)

    请注意,实验计时器位于页面顶部附近,将显示剩余时间。

  2. 点击打开 Google Cloud 控制台(如果您使用的是 Chrome 浏览器,请右键点击并选择在无痕式窗口中打开链接)。

    该实验会启动资源并打开另一个标签页,显示“登录”页面。

    提示:可以将这些标签页分别放在不同的窗口中,并排显示。

    注意:如果您看见选择账号对话框,请点击使用其他账号。
  3. 如有必要,请复制下方的用户名,然后将其粘贴到登录对话框中。

    {{{user_0.username | "<用户名>"}}}

    您也可以在实验设置和访问权限面板中找到“用户名”。

  4. 点击下一步。

  5. 复制下面的密码,然后将其粘贴到欢迎对话框中。

    {{{user_0.password | "<密码>"}}}

    您也可以在实验设置和访问权限面板中找到“密码”。

  6. 点击下一步。

    重要提示:您必须使用实验提供的凭证。请勿使用您的 Google Cloud 账号凭证。 注意:在本实验中使用您自己的 Google Cloud 账号可能会产生额外费用。
  7. 依次点击进入后续页面:

    • 接受条款及条件。
    • 由于这是临时账号,请勿添加账号恢复选项或双重身份验证。
    • 请勿注册免费试用。

片刻之后,系统会在此标签页中打开 Google Cloud 控制台。

注意:如需访问 Google Cloud 产品和服务,请点击导航菜单,或在搜索字段中输入服务或产品的名称。 “导航菜单”图标和“搜索”字段

激活 Cloud Shell

Cloud Shell 是一种装有开发者工具的虚拟机。它提供了一个永久性的 5GB 主目录,并且在 Google Cloud 上运行。Cloud Shell 提供可用于访问您的 Google Cloud 资源的命令行工具。

  1. 点击 Google Cloud 控制台顶部的激活 Cloud Shell “激活 Cloud Shell”图标。

  2. 在弹出的窗口中执行以下操作:

    • 继续完成 Cloud Shell 信息窗口中的设置。
    • 授权 Cloud Shell 使用您的凭据进行 Google Cloud API 调用。

如果您连接成功,即表示您已通过身份验证,且项目 ID 会被设为您的 Project_ID 。输出内容中有一行说明了此会话的 Project_ID:

Your Cloud Platform project in this session is set to {{{project_0.project_id | "PROJECT_ID"}}}

gcloud 是 Google Cloud 的命令行工具。它已预先安装在 Cloud Shell 上,且支持 Tab 自动补全功能。

  1. (可选)您可以通过此命令列出活跃账号名称:
gcloud auth list
  1. 点击授权。

输出:

ACTIVE: * ACCOUNT: {{{user_0.username | "ACCOUNT"}}} To set the active account, run: $ gcloud config set account `ACCOUNT`
  1. (可选)您可以通过此命令列出项目 ID:
gcloud config list project

输出:

[core] project = {{{project_0.project_id | "PROJECT_ID"}}} 注意:如需查看在 Google Cloud 中使用 gcloud 的完整文档,请参阅 gcloud CLI 概览指南。

创建应用

实例模板需要通过某种方式在所创建的每个新虚拟机上安装必要的应用和脚本。Cloud Storage 为启动脚本 (startup.sh) 提供了一个稳定且易于访问的来源,该脚本会在新实例启动时执行。

您将复制本实验所用示例应用的启动脚本和应用文件。该应用会将特定的数据模式推送到自定义指标中,随后您可以将该指标配置为控制自动扩缩行为的依据。

注意:本实验已自动创建一个现有实例模板和实例组,而且该实例组已在运行。自动扩缩功能至少需要 30 分钟才能完整展示扩容和缩容行为。您稍后将检查该实例组,观察自定义指标脚本生成的指标值变化是如何控制扩缩行为的。

任务 1. 创建存储桶

  1. 在 Cloud 控制台中,从导航菜单中选择 Cloud Storage > 存储桶,然后点击创建。

  2. 为存储桶指定唯一名称,不要使用您可能会在其他项目中使用的名称。如需详细了解如何命名存储桶,请参阅存储桶命名准则。您可以使用项目 ID + "bucket" 作为存储桶名称。在本实验中,此存储桶将统称为 YOUR_BUCKET。

  3. 接受默认值,然后点击创建。

  4. 如果出现 Public access will be prevented 弹出式窗口,请点击确认。

存储桶创建后,系统会打开存储桶详情页面。

验证您已完成的任务

点击检查我的进度,验证您已完成的任务。如果您成功创建了 Cloud Storage 存储桶,则会看到一个评估分数。

创建 Cloud Storage 存储桶
  1. 接下来,在 Cloud Shell 中运行以下命令,将启动脚本文件从实验默认的 Cloud Storage 存储桶复制到您创建的存储桶中。请记得将 <YOUR BUCKET> 替换为您刚刚创建的存储桶的名称:
gcloud storage cp -r gs://spls/gsp087/* gs://<YOUR BUCKET>
  1. 上传脚本后,点击存储桶详情页面上的刷新。您的存储桶应该会列出添加的文件。

了解代码组件

  • Startup.sh - 一种 Shell 脚本,用于在 Compute Engine 实例被添加到托管式实例组时,为每个实例安装必要的组件。
  • writeToCustomMetric.js - 一个 Node.js 代码段,用于创建自定义监控指标,该指标的值可触发扩缩行为。在生产环境中,这部分内容将由您的实际应用代码替代,而其报告的值 (appdemo_queue_depth_01) 则会是一项关键的业务指标,例如:队列中待处理的消息数、打开的数据库连接数或批处理任务的积压长度。
  • Config.json - 一个 Node.js 配置文件,用于指定自定义监控指标的值,供 writeToCustomMetric.js 使用。
  • Package.json - 一种 Node.js 软件包文件,用于指定 writeToCustomMetric.js 的标准安装配置和依赖项。
  • writeToCustomMetric.sh - 一种 Shell 脚本,用于在每个 Compute Engine 实例上连续运行 writeToCustomMetric.js 程序。

任务 2. 创建实例模板

实例模板是实例组中所有虚拟机的蓝图。自动扩缩通过销毁和创建实例来实现,因此它必须确切地知道如何重建这些实例。该模板定义了机器类型、操作系统映像,最重要的是,还定义了指向 Cloud Storage 存储桶中 startup.sh 脚本的元数据。

  1. 在 Cloud 控制台中,点击导航菜单 > Compute Engine > 实例模板。

  2. 点击页面顶部的创建实例模板。

  3. 将实例模板命名为 autoscaling-instance01。

  4. 将位置设置为 Global。

  5. 在机器配置部分,选择 E2 作为机器家族,选择 e2-medium 作为机器类型。

  6. 向下滚动并点击高级选项。

  7. 在管理标签页的元数据部分,输入以下元数据键值对,每输入一个请点击一次 + 添加项按钮。记得将 [YOUR_BUCKET_NAME] 占位符替换为存储桶名称:

键 值
startup-script-url gs://[YOUR_BUCKET_NAME]/startup.sh
gcs-bucket gs://[YOUR_BUCKET_NAME]

元数据页面

  1. 点击创建。

验证您已完成的任务

点击检查我的进度,验证您已完成的任务。如果您已成功创建实例模板,则会看到一个评估分数。

创建实例模板

任务 3. 创建实例组

实例组是虚拟机舰队的容器和控制器。自动扩缩模式最初设置为关闭,以便您控制环境,并确保在启用自动扩缩之前,第一个实例已成功运行自定义指标脚本。

  1. 在左侧窗格中,点击实例组。

  2. 点击页面顶部的创建实例组。

  3. 名称:autoscaling-instance-group-1。

  4. 对于实例模板,选择您刚刚创建的实例模板。

  5. 对于位置,选择单个可用区,并分别使用 和 作为区域和可用区。

  6. 将自动扩缩模式设置为关闭:不自动扩缩。

您将在实例组创建完成后修改自动扩缩设置。将其他设置保留为默认值。

  1. 点击创建。
注意:您可以忽略实例组旁边的 Autoscaling is turned off. The number of instances in the group won't change automatically. The autoscaling configuration is preserved. 警告。

验证您已完成的任务

点击检查我的进度,验证您已完成的任务。如果您已成功创建实例组,则会看到一个评估分数。

创建实例组

任务 4. 确认已创建实例组

请耐心等待,直到您刚刚创建的新实例组旁边出现绿色对勾标记。启动脚本可能需要几分钟时间才能完成安装并开始报告值。

您必须确认单个测试实例正在成功运行 writeToCustomMetric.js 脚本,并且数据正常流入 Cloud Monitoring。如果未报告指标数据,自动扩缩器将无法做出回应。若在虚拟机日志中看到 nodeapp: available,则说明此数据流水线已正常运行。

如果耗时超过数分钟,请点击刷新。

注意:如果您看到实验预先创建的另一个实例组旁边显示红色图标,可以忽略此警告。实例组在初始化期间会显示警告,持续时间最长可达 10-15 分钟。这是正常现象。
  1. 在“实例组”窗口中,点击 autoscaling-instance-group-1 的名称,即可查看该组中正在运行的实例。

  2. 向下滚动并点击相应实例名称。由于自动扩缩实例组尚未启动其他实例,因此只有一个实例在运行。

  3. 在详细信息标签页的日志部分中,点击日志记录链接以查看该虚拟机实例的日志。

  4. 等待 1 到 2 分钟,以便累积一些数据。开启显示查询切换开关,您将在查询预览框中看到 resource.type 和 resource.labels.instance_id。

 查询预览框

  1. 在第 3 行添加 "nodeapp",使代码如下所示:

第 1 行:resource.type=&quot;gce.instance&quot;。第 2 行:resource.labels.instance_id=&quot;4519089149916136834&quot;。第 3 行:“nodeapp”

  1. 点击运行查询。

如果 Compute Engine 实例正在执行 Node.js 脚本,系统会向 API 发送一个请求,并显示内容为 nodeapp: available 的日志条目。

注意:如果您没有看到此日志条目,则表示 Node.js 脚本未报告自定义指标值。检查输入的元数据是否正确。如果元数据不正确,最简单的方法可能是重新开始实验。应用可能需要大约 10 分钟才能启动。

任务 6. 为实例组配置自动扩缩

在验证自定义指标已成功报告第一个实例中的数据后,即可将实例组配置为根据自定义指标的值自动扩缩。

  1. 在 Cloud 控制台中,前往 Compute Engine > 实例组。

  2. 点击 autoscaling-instance-group-1 实例组。

  3. 点击修改。

  4. 在自动扩缩下,将自动扩缩模式设置为开启:在实例组中添加和移除实例。

  5. 将实例数下限设置为 1,将实例数上限设置为 3 这定义了成本和性能保证的下限和上限。您至少需要为 1 个实例付费,并且可以保证实例数量不会超过 3 个,从而控制您的费用。

  6. 在自动扩缩信号下,点击添加信号以修改指标。设置以下字段,并将其他字段保留为默认值。

    • 信号类型:Cloud Monitoring metric。点击配置。
    • 在资源和指标下,点击选择指标,然后依次点击虚拟机实例 > 自定义指标 > Custom/appdemo_queue_depth_01。
    • 点击应用。
    • 利用率目标:150

    当自定义监控指标值高于或低于目标值时,自动扩缩器会通过增加或减少实例数量来扩缩托管式实例组。目标值可以是任何 double 类型的值,但在本实验中,我们选择了 150,因为它与自定义监控指标报告的值相匹配。

    • 利用率目标类型:Gauge。点击选择。

    GAUGE:根据所有实例中指标的当前平均值进行扩缩。(例如:“平均队列深度为 200,超过了 150 的目标值,因此我需要再增加一台机器。”)这适用于队列深度或 CPU 利用率等指标。(相比之下,将目标模式设置为 DELTA_PER_MINUTE 或 DELTA_PER_SECOND 时,系统会根据观察到的变化率而不是平均值自动扩缩。)

  7. 点击保存。

注意:选择 Gauge 后,再次点击下拉菜单并重新选择一次 Gauge。有时,这样做可以强制界面正确识别该值。

验证您已完成的任务

点击检查我的进度,验证您已完成的任务。如果您已成功为实例组配置自动扩缩,则会看到一个评估分数。

为实例组配置自动扩缩

任务 7. 观察实例组执行自动扩缩

Node.js 脚本会随着时间的推移而改变从每个实例报告的自定义指标值。如果指标值上升,实例组将通过添加虚拟机进行扩容。如果该值下降,实例组也会检测到,并通过移除实例进行缩容。该脚本模拟真实指标,其数值也会像真实指标一样上下波动。

接下来,点击 Monitoring 标签页以查看自动扩缩的实例数图表,观察实例组如何根据指标进行扩缩。

  1. 在左侧窗格中,点击实例组。
  2. 点击列表中的 builtin-igm 实例组。
  3. 点击 Monitoring 标签页。
  4. 启用自动刷新。

由于此实例组已抢先运行,您可以在自动扩缩图表中直接看到该组的自动扩缩详细信息。自动扩缩器大约需要 5 分钟才能正确识别自定义指标,而脚本可能需要长达 10-15 分钟的时间来生成足够的数据,以触发自动扩缩行为。

“监控”标签页中显示了两个监控图表

将鼠标悬停在图表上即可查看更多详细信息。

您可以切换回自己创建的实例组,查看其运行情况(实验剩余时间可能不足,您未必能观察到该实例组的自动扩缩行为)。

在实验剩余时间内,您可以观察自动扩缩图表如何随着实例的添加和移除而波动。

任务 8. 自动扩缩示例

请浏览此自动扩缩示例,了解在规模更大的环境中,容量和自动扩缩的实例数是如何运作的。

上方图表显示的实例数量会随着下方图表报告的自定义指标属性值的汇总水平变化而变化。每个实例启动后,最长会有五分钟的延迟,然后该实例才会开始报告其自定义指标值。在自动扩缩功能启动期间,请浏览此图表,以深入了解即将发生的情况:

“成员”标签页中显示一个包含多个数据点的图表

脚本首先会生成较大的值(持续约 15 分钟),以触发扩容行为。

  • 11:27 自动扩缩实例组最初只有一个实例。自定义指标的汇总目标值为 150。
  • 11:31 获取初始指标数据。指标值大于目标值 150,因此自动扩缩实例组启动第二个实例。
  • 11:33 开始获取第二个实例的自定义指标数据。现在,汇总目标值为 300。指标值高于 300,因此自动扩缩实例组启动第三个实例。
  • 11:37 开始获取第三个实例的自定义指标数据。现在,汇总目标值为 450。累计指标值超过 450,因此自动扩缩实例组启动第四个实例。
  • 11:42 开始获取第四个实例的自定义指标数据。现在,汇总目标值为 600。累计指标值现已超过新目标值 600,但是由于已达到自动扩缩实例组规模上限,因此不会进一步执行扩容操作。
  • 11:44 应用脚本进入了为期 15 分钟的低指标时段。即使累计指标值低于目标值 600,缩容操作也必须等到内置的 10 分钟缩容延迟结束后才能执行。
  • 11:54 自定义指标数值已连续 10 分钟低于四节点集群的汇总目标值 600。缩容操作现在会接连快速移除两个实例。
  • 11:56 自动扩缩计算中排除了已移除节点的自定义指标数据,汇总目标值也随之降至 300。
  • 12:00 应用脚本重新进入为期 15 分钟的高指标时段。累计自定义指标值再次超过汇总目标值 300,因此自动扩缩实例组启动第三个实例。
  • 12:03 系统已获取新实例的自定义指标数据,但报告的累计值仍低于目标值 450,因此自动扩缩功能未执行任何更改。
  • 12:04 累计自定义指标值超过目标值 450,因此自动扩缩实例组启动第四个实例。

恭喜!

恭喜!在本实验中,您创建了一个 Compute Engine 托管式实例组,该实例组会根据自定义 Cloud Monitoring 指标的值自动扩缩。您还学习了如何使用 Cloud 控制台直观呈现自定义指标和实例组大小。

后续步骤/了解详情

Google Cloud 培训和认证

…可帮助您充分利用 Google Cloud 技术。我们的课程会讲解各项技能与最佳实践,可帮助您迅速上手使用并继续学习更深入的知识。我们提供从基础到高级的全方位培训,并有点播、直播和虚拟三种方式选择,让您可以按照自己的日程安排学习时间。各项认证可以帮助您核实并证明您在 Google Cloud 技术方面的技能与专业知识。

本手册最后更新时间:2026 年 5 月 20 日

本实验最后测试时间:2026 年 2 月 25 日

版权所有 2026 Google LLC 保留所有权利。Google 和 Google 徽标是 Google LLC 的商标。其他所有公司名和产品名可能是其各自相关公司的商标。

准备工作

  1. 实验会创建一个 Google Cloud 项目和一些资源,供您使用限定的一段时间
  2. 实验有时间限制,并且没有暂停功能。如果您中途结束实验,则必须重新开始。
  3. 在屏幕左上角,点击开始实验即可开始

使用无痕浏览模式

  1. 复制系统为实验提供的用户名和密码
  2. 在无痕浏览模式下,点击打开控制台

登录控制台

  1. 使用您的实验凭证登录。使用其他凭证可能会导致错误或产生费用。
  2. 接受条款,并跳过恢复资源页面
  3. 除非您已完成此实验或想要重新开始,否则请勿点击结束实验,因为点击后系统会清除您的工作并移除该项目

此内容目前不可用

一旦可用,我们会通过邮件告知您

太好了!

一旦可用,我们会通过邮件联系您

一次一个实验

确认结束所有现有实验并开始此实验

使用无痕浏览模式运行实验

使用无痕模式或无痕浏览器窗口是运行此实验的最佳方式。这可以避免您的个人账号与学生账号之间发生冲突,这种冲突可能导致您的个人账号产生额外费用。