arrow_back

通过内部负载均衡提高应用可靠性和可伸缩性

登录 加入
访问 700 多个实验和课程

通过内部负载均衡提高应用可靠性和可伸缩性

实验 50 分钟 universal_currency_alt 5 个积分 show_chart 中级
info 此实验可能会提供 AI 工具来支持您学习。
访问 700 多个实验和课程

GSP216

Google Cloud 自学实验的徽标

概览

Google Cloud 的内部负载均衡 (ILB) 是一项用于管理和扩缩专用应用基础设施的关键服务。借助内部负载均衡,您可以高效地在内部虚拟机实例之间分配基于 TCP/UDP 的流量,从而确保应用在专用网络中具有高可用性和高性能。通过为服务提供单个稳定的专用 IP 地址,ILB 可简化内部应用通信并增强系统弹性。

在本实验中,您将通过在同一区域中创建两个托管式实例组来设置内部服务,这种部署模式常见于高可用性应用。随后,您将配置并全面测试一个内部负载均衡器,将这两个实例组作为其后端服务。此设置模拟了以下实际应用场景:内部应用(例如微服务、API 端点或数据库)可供其他内部服务或应用访问,同时避免暴露至公共互联网。

Network_Diagram.png

目标

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

  • 配置必要的防火墙规则,以允许内部后端接收安全的 HTTP 流量并对其执行健康检查。
  • 设计和实现实例模板,以实现一致且可伸缩的虚拟机部署。
  • 创建和管理托管式实例组,以实现应用后端的自动扩缩和自我修复。
  • 设置并测试内部负载均衡器,展示其有效分配内部流量并确保服务可用性的能力。

设置和要求

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

请阅读以下说明。实验是计时的,并且您无法暂停实验。计时器在您点击开始实验后即开始计时,显示 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 产品和服务,请点击导航菜单,或在搜索字段中输入服务或产品的名称。 “导航菜单”图标和“搜索”字段

任务 1. 配置 HTTP 防火墙规则和健康检查防火墙规则

合适的防火墙规则是构建安全且功能完备的内部负载均衡环境的基础。它们可确保只有授权流量到达后端服务,并确保负载均衡器能够准确评估实例的健康状况。

将防火墙规则配置为允许 HTTP 流量进入后端,以及允许接收来自 Google Cloud 健康检查工具的 TCP 流量。

探索 my-internal-app 网络

我们已为您配置了带有 subnet-a 和 subnet-b 的网络 my-internal-app,以及针对 RDP、SSH 和 ICMP 流量的防火墙规则。

  1. 在控制台中,前往导航菜单 > VPC 网络 > VPC 网络

  2. 向下滚动,找到 my-internal-app 网络及其子网 subnet-asubnet-b

    每个 Google Cloud 项目在创建时都有一个 default 网络。此外,我们已为您创建了 my-internal-app 网络作为您的网络图的一部分。

    您将在 subnet-asubnet-b 中创建托管式实例组。这两个子网都在 区域中,因为内部负载均衡器是区域级服务。托管式实例组将位于不同的可用区,使您的服务不受可用区故障的影响。

创建 HTTP 防火墙规则

创建防火墙规则,以允许来自负载均衡器和互联网的 HTTP 流量进入后端(以便在后端安装 Apache)。

  1. 仍然在 VPC 网络中,点击左侧窗格中的防火墙

  2. 请注意 app-allow-icmpapp-allow-ssh-rdp 防火墙规则。

    我们已为您创建了这些防火墙规则。

  3. 点击 + 创建防火墙规则

  4. 设置以下值,将所有其他值保留为默认值:

    属性 值(按照说明输入值或选择选项)
    名称 app-allow-http
    网络 my-internal-app
    目标 指定的目标标记
    目标标记 lb-backend
    来源过滤条件 IPv4 范围
    来源 IPv4 范围 10.10.0.0/16
    协议和端口 指定的协议和端口;然后勾选“tcp”,并输入“80”
注意:确保在来源 IPv4 范围中包含 /16,以指定所有网络。
  1. 点击创建

创建健康检查防火墙规则

健康检查可确定负载均衡器的哪些实例能接收新连接。在进行内部负载均衡的过程中,对负载均衡实例的健康检查探测来自于 130.211.0.0/2235.191.0.0/16 范围内的地址。您的防火墙规则必须允许这些连接。

  1. 仍然在防火墙规则页面中,点击创建防火墙规则

  2. 设置以下值,将所有其他值保留为默认值:

    属性 值(按照说明输入值或选择选项)
    名称 app-allow-health-check
    网络 my-internal-app
    目标 指定的目标标记
    目标标记 lb-backend
    来源过滤条件 IPv4 范围
    来源 IPv4 范围 130.211.0.0/22 和 35.191.0.0/16
    协议和端口 指定的协议和端口;然后勾选“tcp”
注意:请务必分别输入两个来源 IPv4 范围并在两者间按空格键。
  1. 点击创建

点击“检查我的进度”,验证已完成以下目标:

配置 HTTP 防火墙规则和健康检查防火墙规则

任务 2. 配置实例模板并创建实例组

实例模板和托管式实例组是构建可伸缩、弹性佳且易于管理的应用的支柱。借助它们,您可以为虚拟机定义标准配置,然后自动管理其生命周期,从而确保一致性并实现自动扩缩和自我修复。

托管式实例组可使用实例模板来创建一组相同的实例。您可以使用这些实例来创建内部负载均衡器的后端。

配置实例模板

实例模板是一种可用于创建虚拟机实例和代管式实例组的 API 资源。实例模板可定义机器类型、启动磁盘映像、子网、标签和其他实例属性。请为 my-internal-app 网络的两个子网创建实例模板。

  1. 在控制台中,前往导航菜单 > Compute Engine > 实例模板

  2. 点击创建实例模板

  3. 名称部分,输入 instance-template-1

  4. 位置部分,选择全球

  5. 对于系列,选择 E2

  6. 对于机器类型,选择共享核心 > e2-micro

  7. 点击高级选项

  8. 点击网络

  9. 网络标记部分,指定 lb-backend

    注意:网络标记 lb-backend 可确保将 HTTP 防火墙规则和健康检查防火墙规则应用于这些实例。
  10. 网络接口部分,点击下拉菜单图标进行修改。

  11. 设置以下值,将所有其他值保留为默认值:

    属性 值(按照说明输入值或选择选项)
    网络 my-internal-app
    子网 subnet-a
    外部 IPv4 地址
  12. 点击完成

  13. 点击管理

  14. 元数据下,点击添加项,然后指定以下内容:

    键 1 值 1
    startup-script-url gs://spls/gsp216/startup.sh
注意:startup-script-url 将指定实例启动时执行的脚本。此脚本会安装 Apache,并更改欢迎页面以包含客户端 IP 地址以及虚拟机实例的名称、区域和可用区。您可以随时查看此脚本
  1. 点击创建
  2. 等待实例模板创建完毕。

配置下一个实例模板

通过复制 instance-template-1subnet-b 创建另一个实例模板。这展示了如何轻松地在不同子网或可用区之间复制配置,以实现高可用性和灾难恢复策略。

  1. 仍然在实例模板中,勾选 instance-template-1 旁边的复选框,然后点击复制。务必将名称更新为 instance-template-2
  2. 点击高级选项
  3. 点击网络标签页。
  4. 网络接口部分,点击下拉菜单图标进行修改。
  5. 选择 subnet-b 作为子网
  6. 点击完成,然后点击创建

创建托管式实例组

托管式实例组 (MIG) 是构建强大、可自我修复且可动态伸缩的应用的关键。它们会自动替换健康状况不佳的实例,并可根据需求扩缩应用容量,确保您的服务始终可用且性能出色,无需不断进行人工干预。这对于处理可变负载和确保达成服务等级目标 (SLO) 至关重要。

subnet-asubnet-b 中各配置一个托管式实例组。

注意:请从 subnet-a 所处的区域中再选择一个可用区。例如,如果 subnet-a 的可用区是 us-west2-a,则可以为 subnet-b 选择 us-west2-b
  1. 仍然在 Compute Engine 中,点击左侧窗格中的实例组,然后点击创建实例组

  2. 设置以下值,将所有其他值保留为默认值:

    属性 值(按照说明输入值或选择选项)
    名称 instance-group-1
    实例模板 instance-template-1
    位置 单个可用区
    区域
    可用区
    自动扩缩 > 实例数下限 1
    自动扩缩 > 实例数上限 1
    自动扩缩 > 自动扩缩信号(点击下拉菜单图标进行修改)> 信号类型 CPU 利用率
    目标 CPU 利用率 80
    初始化期 45
注意:自动扩缩是托管式实例组的一项关键功能,可根据测量到的负载动态扩缩资源。借助此功能,您的应用可以顺畅处理可变流量,并优化云支出。
  1. 点击创建

    对与 subnet-a 在同一区域中的另一个可用区中的 instance-group-2 重复执行相同的过程:

  2. 点击创建实例组

  3. 设置以下值,将所有其他值保留为默认值:

    属性 值(按照说明输入值或选择选项)
    名称 instance-group-2
    实例模板 instance-template-2
    位置 单个可用区
    区域
    可用区 可用区(使用与 subnet-a 在同一区域的另一个可用区)
    自动扩缩 > 实例数下限 1
    自动扩缩 > 实例数上限 1
    自动扩缩 > 自动扩缩信号(点击下拉菜单图标进行修改)> 信号类型 CPU 利用率
    目标 CPU 利用率 80
    初始化期 45
  4. 点击创建

验证后端

验证这两个子网中都创建了虚拟机实例,并创建一个实用程序虚拟机来直接访问后端的 HTTP 站点。此步骤可在引入负载均衡器之前确认各个后端的功能,确保服务层级设置正确。

  1. 仍然在 Compute Engine 中,点击虚拟机实例

  2. 请注意以 instance-group-1instance-group-2 开头的两个实例。

    这两个实例位于不同的可用区中,它们的内部 IP 地址是 subnet-asubnet-b CIDR 块的一部分。

  3. 如需创建新实例,请点击创建实例

  4. 机器配置中,

    选择以下值:

    属性 值(按照说明输入值或选择选项)
    名称 utility-vm
    区域
    可用区
    系列 E2
    机器类型 e2-micro(1 个共享 vCPU)
  5. 点击网络

    对于网络接口,点击切换以修改网络接口。

    指定下列内容:

    属性 值(按照说明输入值或选择选项)
    网络 my-internal-app
    子网 subnet-a
    主要内部 IPv4 地址 临时(自定义)
    自定义临时 IP 地址 10.10.20.50
  6. 点击完成,然后点击创建

点击“检查我的进度”,验证已完成以下目标:

配置实例模板并创建实例组
  1. 后端的内部 IP 地址是 10.10.20.210.10.30.2
注意:如果这些 IP 地址不同,请在下面的两条 curl 命令中替换它们。
  1. 对于 utility-vm,请点击 SSH 以启动一个终端并进行连接。
  2. 如需验证 instance-group-1-xxxx 的欢迎页面,请运行以下命令:
curl 10.10.20.2

输出应如下所示:

<h1>Internal Load Balancing Lab</h1><h2>Client IP</h2>Your IP address : 10.10.20.50<h2>Hostname</h2>Server Hostname: instance-group-1-1zn8<h2>Server Location</h2>Region and Zone: us-central1-a
  1. 如需验证 instance-group-2-xxxx 的欢迎页面,请运行以下命令:
curl 10.10.30.2

输出应如下所示:

<h1>Internal Load Balancing Lab</h1><h2>Client IP</h2>Your IP address : 10.10.20.50<h2>Hostname</h2>Server Hostname: instance-group-2-q5wp<h2>Server Location</h2>Region and Zone: us-central1-b

注意:这些 curl 命令表明,每个虚拟机实例都会列出相应的客户端 IP 地址以及实例名称和位置。这在验证内部负载均衡器是否向这两个后端发送流量时很有用。
  1. 关闭 utility-vm 的 SSH 终端:
exit

任务 3. 配置内部负载均衡器

配置 ILB 可集中访问后端服务,为内部流量提供单一入口点,并确保根据实例的健康状况和容量进行智能流量分配。此步骤对于实现前面讨论的高可用性和可伸缩性优势至关重要,可作为分布式服务的集中式接入点。

配置内部负载均衡器,在两个后端(instance-group-1instance-group-2)之间均衡流量,如下图所示。

显示内部负载均衡器在两个后端之间均衡流量的网络图

开始配置

  1. 在导航菜单中,选择查看所有产品。在网络下,选择网络服务
  2. 选择负载均衡页面。
  3. 点击创建负载均衡器
  4. 负载均衡器的类型部分,选择网络负载均衡器 (TCP/UDP/SSL)
  5. 代理或直通部分,选择直通式负载均衡器
  6. 公开或内部部分,选择内部
  7. 点击配置
  8. 名称部分,输入 my-ilb
  9. 对于区域,选择
  10. 网络部分,选择 my-internal-app

配置区域级后端服务

后端服务是 ILB 背后的智能服务,用于定义流量分配方式和实例健康状况监控方式。这对于确保流量仅流向正常运行的实例并防止过载至关重要。您还可以在此处配置高级功能,如会话亲和性,用于保持用户与同一后端的连接;或连接排空,用于顺利完成后端更新。

后端服务可监控实例组并防止它们超出配置的用量。

  1. 点击后端配置

  2. 设置以下值,将所有其他值保留为默认值:

    属性 值(按照说明选择选项)
    实例组 instance-group-1
  3. 点击添加后端

  4. 实例组部分,选择 instance-group-2

  5. 对于健康检查,请选择创建健康检查

  6. 设置以下值,将所有其他值保留为默认值:

    属性 值(按照说明选择选项)
    名称 my-ilb-health-check
    协议 TCP
    端口 80
注意:健康检查可确定哪些实例能接收新连接。此 HTTP 健康检查每 5 秒轮询一次实例,最多等待 5 秒来接收响应,并将 2 次成功尝试或 2 次失败尝试分别视为健康状况良好或健康状况不佳的判断标准。这种持续监控对于快速从实例故障中恢复以及满足服务等级协议 (SLA) 至关重要
  1. 点击创建
  2. 在 Cloud 控制台中确认后端配置旁边是否有蓝色对勾标记。如果没有,请仔细检查您是否完成了上述所有步骤。

配置前端

前端是 ILB 的公开接口。通过分配静态内部 IP 地址,您可以为其他内部服务提供一致且可预测的连接端点,从而简化应用架构、在 VPC 内轻松发现服务并提高可靠性。

前端可将流量转发到后端。

  1. 点击前端配置

  2. 指定以下内容,并将其余项保留为默认值:

    属性 值(按照说明输入值或选择选项)
    子网 subnet-b
    内部 IP IP 地址下,选择创建 IP 地址
  3. 指定以下内容,并将其余项保留为默认值:

    属性 值(按照说明输入值或选择选项)
    名称 my-ilb-ip
    静态 IP 地址 让我选择
    自定义 IP 地址 10.10.30.5
  4. 点击预留

  5. 端口号部分,输入 80

  6. 点击完成

检查并创建内部负载均衡器

  1. 点击检查并最终确定

  2. 检查后端前端

  3. 点击创建。 等待负载均衡器创建完毕,然后再执行下一个任务。

点击“检查我的进度”,验证已完成以下目标:

配置内部负载均衡器

任务 4. 测试内部负载均衡器

最后一项测试用于验证 ILB 是否正确地将流量分配给健康状况良好的后端实例。这样可以证实您的内部服务现在更具弹性和可伸缩性,能够充分利用 ILB 的核心优势,并且专用连接已正确建立。

验证 my-ilb IP 地址将流量转发到了 instance-group-1instance-group-2

访问内部负载均衡器

  1. 在 Cloud 控制台中,前往导航菜单 > Compute Engine > 虚拟机实例
  2. 对于 utility-vm,请点击 SSH 以启动一个终端并进行连接。
  3. 如需验证内部负载均衡器是否转发了流量,请运行以下命令:
curl 10.10.30.5

输出应如下所示:

<h1>Internal Load Balancing Lab</h1><h2>Client IP</h2>Your IP address : 10.10.20.50<h2>Hostname</h2>Server Hostname: instance-group-1-1zn8<h2>Server Location</h2>Region and Zone: us-central1-a 注意:正如预期的那样,流量从内部负载均衡器 (10.10.30.5) 转发到了后端。
  1. 再运行几次同一命令。

在输出中,您应该会看到 中的 instance-group-1 以及同一区域中另一个可用区中的 instance-group-2 发出的响应。负载均衡器可将流量分配至后端实例,有效保障高可用性并实现负载分配。

恭喜!

您成功配置并测试了内部负载均衡器,了解了它在 Google Cloud 上构建强大、可伸缩且安全的内部应用方面发挥的关键作用。

后续步骤/了解详情

如需了解负载均衡的基本概念,请参阅 Google Cloud Load Balancing 文档

Google Cloud 培训和认证

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

上次更新手册的时间:2025 年 9 月 15 日

上次测试实验的时间:2025 年 5 月 26 日

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

准备工作

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

使用无痕浏览模式

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

登录控制台

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

此内容目前不可用

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

太好了!

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

一次一个实验

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

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

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