Configure HTTP and health check firewall rules

检查我的进度

/ 20

Configure instance templates and create instance groups

检查我的进度

/ 20

Configure the HTTP Load Balancer

检查我的进度

/ 20

Test the HTTP Load Balancer

检查我的进度

/ 20

Create Cloud Armor Rate Limiting Policy

检查我的进度

/ 20

此实验可能会提供 AI 工具来支持您学习。

GSP975

Google Cloud 自学实验

概览

Google Cloud HTTP(S) 负载均衡部署在全球各地的 Google 入网点 (POP),位于 Google 网络边缘。定向到 HTTP(S) 负载均衡器的用户流量会进入距离用户最近的 POP,然后通过 Google 的全球网络进行负载均衡,转发到具有足够可用容量的最近后端。

通过 Cloud Armor IP 许可/拒绝名单,您可以在 Google Cloud 网络边缘允许或限制对 HTTP(S) 负载均衡器的访问,从而在尽可能接近用户和恶意流量的位置筑起一道安全防线。这样可以防止恶意用户或流量占用资源,或是进入您的虚拟私有云 (VPC) 网络。

在本实验中,您将配置一个带有全球后端的 HTTP 负载均衡器,如下图所示。接着,您将对负载均衡器进行压力测试,并添加 Cloud Armor 速率限制政策,以根据 IP 地址实施流量限制。

网络图

学习内容

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

  • 创建 HTTP 和健康检查防火墙规则
  • 配置两个实例模板
  • 创建两个托管式实例组
  • 配置支持 IPv4 和 IPv6 的 HTTP 负载均衡器
  • 对 HTTP 负载均衡器进行压力测试
  • 添加 Cloud Armor 速率限制政策,以根据 IP 地址实施访问限制
  • 验证从虚拟机运行压力测试时流量是否被阻止

设置和要求

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

请阅读以下说明。实验是计时的,并且您无法暂停实验。计时器在您点击开始实验后即开始计时,显示 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 概览指南

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

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

创建 HTTP 防火墙规则

创建防火墙规则,以允许 HTTP 流量进入后端。

  1. 在 Cloud 控制台中,前往导航菜单 (“导航菜单”图标) > VPC 网络 > 防火墙

  2. 请注意现有的 ICMPinternalRDPSSH 防火墙规则。

    每个 Google Cloud 项目在创建之初都包含 default 网络以及上述防火墙规则。

  3. 点击创建防火墙规则

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

    属性 值(按照说明输入值或选择选项)
    名称 default-allow-http
    网络 default
    目标 指定的目标标记
    目标标记 http-server
    来源过滤条件 IPv4 范围
    来源 IP 地址范围 0.0.0.0/0
    协议和端口 指定的协议和端口;然后勾选“tcp”,并输入“80”
    注意: 请务必在来源 IP 地址范围中包含 /0,以便指定所有网络。
  5. 点击创建

创建健康检查防火墙规则

健康检查能够识别负载均衡器中的哪些实例可以接收新连接。对于 HTTP 负载均衡,针对负载均衡实例的健康检查探测请求来自 130.211.0.0/2235.191.0.0/16 范围内的地址。您的防火墙规则必须允许这些连接。

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

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

    属性 值(按照说明输入值或选择选项)
    名称 default-allow-health-check
    网络 default
    目标 指定的目标标记
    目标标记 http-server
    来源过滤条件 IPv4 范围
    来源 IP 地址范围 130.211.0.0/2235.191.0.0/16
    协议和端口 指定的协议和端口;然后勾选“tcp”
    注意: 请务必逐个输入这两个来源 IP 地址范围,并在两者之间输入一个空格。
  3. 点击创建

点击检查我的进度,验证是否完成了以下目标: 配置 HTTP 和健康检查防火墙规则

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

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

配置实例模板

实例模板是一种可用于创建虚拟机实例和托管式实例组的 API 资源。该模板定义了机器类型、启动磁盘映像、子网、标签以及其他实例属性。为 各创建一个实例模板。

  1. 在 Cloud 控制台中,前往导航菜单 (“导航菜单”图标) > Compute Engine > 实例模板,随后点击创建实例模板
  2. 对于名称,输入 -template
  3. 对于位置,选择全球
  4. 对于系列,选择 E2
  5. 点击网络、磁盘、安全、管理、单租户

“身份和 API 访问权限”页面

  1. 点击网络,对于网络标记,输入 http-server

  2. 对于网络接口,展开 default 网络并设置以下值。

    属性 值(按照说明输入值或选择选项)
    网络 default
    子网 default ()
注意: 网络标记 http-server 可确保 HTTP 防火墙规则和健康检查防火墙规则应用于这些实例。
  1. 点击管理标签页。

“管理”标签页

  1. 元数据下,点击 +添加项,然后指定以下值:

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

现在,通过复制 -template 来为 subnet-b 创建另一个实例模板:

  1. 点击 -template,然后点击顶部的复制选项。
  2. 对于名称,输入 -template
  3. 对于位置,选择全球
  4. 点击高级选项
  5. 依次点击网络 > 网络接口,展开 default 网络。
  6. 对于子网,选择 default ()
  7. 点击创建

创建托管式实例组

中各创建一个托管式实例组。

  1. 导航菜单 (“导航菜单”图标) 中,依次点击左侧菜单中的 Compute Engine > 实例组

  2. 点击创建实例组

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

    属性 值(按照说明输入值或选择选项)
    名称 -mig
    实例模板 -template
    位置 多个可用区
    区域
    实例数下限 1
    实例数上限 5
    自动扩缩 > 自动扩缩信号(点击下拉菜单图标进行修改)> 信号类型 CPU 利用率
    目标 CPU 利用率 80
    初始化期 45
    注意: 托管式实例组具备自动扩缩功能,能够根据负载的增减,自动向组内添加或从中移除实例。自动扩缩可帮助您的应用从容应对流量增长,并在资源需求量较低时降低成本。您只需定义自动扩缩政策,自动扩缩器就会根据测量到的负载自动进行扩缩。
  4. 点击创建

现在重复上述步骤,在 中为 -mig 创建第二个实例组:

  1. 点击创建实例组

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

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

点击检查我的进度,验证是否完成了以下目标: 配置实例模板和实例组

验证后端

验证两个区域中是否都创建了虚拟机实例,并访问其 HTTP 站点。

  1. 仍然在 Compute Engine 中,点击左侧菜单中的虚拟机实例

  2. 请注意以 -mig-mig 开头的实例。

    这些实例包含在上述两个托管式实例组中。

  3. 点击 -mig 中一个实例的外部 IP

    您应该会看到客户端 IP(您的 IP 地址)、主机名(以 -mig 开头)和服务器位置 中的一个可用区)。

  4. 点击 -mig 中一个实例的外部 IP

    您应该会看到客户端 IP(您的 IP 地址)、主机名(以 -mig 开头)和服务器位置 中的一个可用区)。

注意: 主机名服务器位置确定了 HTTP 负载均衡器将流量发送到何处。

任务 3. 配置 HTTP 负载均衡器

配置 HTTP 负载均衡器,在两个后端( 中的 -mig 中的 -mig)之间均衡分配流量,如网络图所示:

网络图

开始配置

  1. 在 Cloud 控制台中,点击导航菜单 (“导航菜单”图标),然后选择查看所有产品。在网络下,点击网络服务 > 负载均衡,然后点击创建负载均衡器
  2. 应用负载均衡器 (HTTP/S) 下,点击下一步
  3. 公开或仅限内部下,选择公开(外部),然后点击下一步
  4. 全球或单个区域部署字段中,选择最适合全球性工作负载,然后点击下一步
  5. 负载均衡器世代下,选择全球外部应用负载均衡器,然后点击下一步
  6. 点击配置
  7. 对于负载均衡器名称,输入 http-lb

配置后端

后端服务会将传入的流量定向到一个或多个关联的后端。每个后端由一个实例组和附加的服务容量元数据组成。

  1. 点击后端配置

  2. 点击后端服务和后端存储桶下拉菜单,然后点击创建后端服务

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

    属性 值(按照说明选择选项)
    名称 http-backend
    实例组 -mig
    端口号 80
    均衡模式 速率
    RPS 上限 50
    容量 100
    注意: 此配置意味着负载均衡器会尝试将 -mig 中每个实例的每秒请求数 (RPS) 保持在 50 或以下。
  4. 点击完成

  5. 点击添加后端

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

    属性 值(按照说明选择选项)
    实例组 -mig
    端口号 80
    均衡模式 利用率
    后端利用率上限 80
    容量 100
    注意:此配置意味着负载均衡器会尝试将 -mig 中每个实例的 CPU 利用率保持在 80% 或以下。
  7. 点击完成

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

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

    属性 值(按照说明选择选项)
    名称 http-health-check
    协议 TCP
    端口 80
    注意:健康检查决定了哪些实例可以接收新连接。此 HTTP 健康检查每 5 秒轮询一次实例,最多等待 5 秒来接收响应,并将连续 2 次成功尝试或 2 次失败尝试分别视为状况良好或状况不佳的判断标准。
  10. 点击创建

  11. 选中启用日志记录框。

  12. 采样率设为 1

  13. 点击创建以创建后端服务,然后点击确定

配置前端

主机和路径规则决定将如何定向您的流量。例如,您可以将视频流量定向到一个后端,将静态流量定向到另一个后端。不过,主机和路径规则的配置并不在本实验的涵盖范围内。

  1. 点击前端配置

  2. 指定以下内容,并将所有其他值保留为默认值:

    属性 值(按照说明输入值或选择选项)
    协议 HTTP
    IP 版本 IPv4
    IP 地址 临时
    端口 80
  3. 点击完成

  4. 点击添加前端 IP 和端口

  5. 指定以下内容,并将所有其他值保留为默认值:

    属性 值(按照说明输入值或选择选项)
    协议 HTTP
    IP 版本 IPv6
    IP 地址 自动分配
    端口 80
  6. 点击完成

注意: HTTP(S) 负载均衡支持使用 IPv4 和 IPv6 地址来路由客户端流量。客户端 IPv6 请求在全球负载均衡层终止,然后通过 IPv4 代理传输到您的后端。

检查并创建 HTTP 负载均衡器

  1. 点击检查并最终确定

    “检查并最终确定”选项

  2. 检查后端服务前端

    前端和后端部分

  3. 点击创建

  4. 等待负载均衡器创建完毕。

  5. 点击负载均衡器的名称 (http-lb)。

  6. 请记下负载均衡器的 IPv4 和 IPv6 地址,以便在下一个任务中使用。下文将分别以 [LB_IP_v4][LB_IP_v6] 来指代这两个地址。

注意: 采用十六进制格式的地址是 IPv6 地址。

点击检查我的进度,验证是否完成了以下目标: 配置 HTTP 负载均衡器

任务 4. 测试 HTTP 负载均衡器

现在您已经为后端创建了 HTTP 负载均衡器,请验证流量是否会转发到该后端服务。

访问 HTTP 负载均衡器

  • 若要测试对 HTTP 负载均衡器的 IPv4 访问,请在浏览器中打开一个新标签页,并前往 http://[LB_IP_v4]。请务必将 [LB_IP_v4] 替换为负载均衡器的 IPv4 地址。
注意: 您最长可能需要 5 分钟才能访问 HTTP 负载均衡器。在此期间,您可能会收到 404 或 502 错误。请继续尝试,直至看到其中一个后端的页面。 注意: 根据您与 的距离,您的流量可能会转发到 -mig-mig 中的某个实例。

如果您有本地 IPv6 地址,请前往 http://[LB_IP_v6],尝试使用 HTTP 负载均衡器的 IPv6 地址。请务必将 [LB_IP_v6] 替换为负载均衡器的 IPv6 地址。

对 HTTP 负载均衡器进行压力测试

使用 siege 创建一个新的虚拟机,以模拟 HTTP 负载均衡器上的负载。然后观察在高负载情况下,流量是否在两个后端之间实现了均衡。

  1. 在控制台中,前往导航菜单 (“导航菜单”图标) > Compute Engine > 虚拟机实例

  2. 点击创建实例

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

    属性 值(按照说明输入值或选择选项)
    名称 siege-vm
    区域
    可用区
    系列 E2
注意: 由于 距离 比距离 更近,流量应只会转发到 -mig(除非负载过高)。
  1. 点击创建
  2. 等待 siege-vm 实例创建完成。
  3. 对于 siege-vm,点击 SSH 启动终端并进行连接。
  4. 运行以下命令来安装 siege:
sudo apt-get -y install siege

点击检查我的进度,验证是否完成了以下目标: 测试 HTTP 负载均衡器

  1. 若要在环境变量中存储 HTTP 负载均衡器的 IPv4 地址,请运行以下命令,使用 IPv4 地址替换 [LB_IP_v4]
export LB_IP=[LB_IP_v4]
  1. 若要模拟负载,请运行以下命令:
siege -c 250 http://$LB_IP

输出应如下所示:

New configuration template added to /home/cloudcurriculumdeveloper/.siege Run siege -C to view the current settings in that file
  1. 在 Cloud 控制台的导航菜单 (“导航菜单”图标) 中,选择查看所有产品。在网络下,点击网络服务 > 负载均衡
  2. 点击后端
  3. 点击 http-backend
  4. 前往 http-lb
  5. 点击监控标签页。
  6. 监控北美区域与这两个后端之间的前端位置(总入站流量),持续 2 到 3 分钟。

起初,流量仅会定向到 -mig,但随着 RPS 的增加,流量也会定向到 -mig

监控图表

这表明在默认情况下,流量会转发到最近的后端;但如果负载过高,流量也会被分配到其他后端。

  1. 返回 siege-vmSSH 终端。
  2. 按 CTRL+C 停止 siege。

任务 5. 创建 Cloud Armor 速率限制政策

在本部分中,您将使用 Cloud Armor 设置速率限制政策,将 siege-vm 列入拒绝清单,从而禁止其访问 HTTP 负载均衡器。

  1. 在 Cloud Shell 中,通过 gcloud 创建安全政策:
gcloud compute security-policies create rate-limit-siege \ --description "policy for rate limiting"
  1. 接下来,添加速率限制规则:
gcloud beta compute security-policies rules create 100 \ --security-policy=rate-limit-siege \ --expression="true" \ --action=rate-based-ban \ --rate-limit-threshold-count=50 \ --rate-limit-threshold-interval-sec=120 \ --ban-duration-sec=300 \ --conform-action=allow \ --exceed-action=deny-404 \ --enforce-on-key=IP
  1. 将安全政策附加到后端服务 http-backend:
gcloud compute backend-services update http-backend \ --security-policy rate-limit-siege --global
  1. 在 Cloud 控制台的导航菜单 (“导航菜单”图标) 中,选择查看所有产品。在网络下,依次点击网络安全 > Cloud Armor 政策

  2. 点击 rate-limit-siege。您的政策应如下所示:

rate-limit-security-policy 页面

点击检查我的进度,验证是否完成了以下目标: 创建 Cloud Armor 速率限制政策

任务 6. 验证安全政策

  1. 返回 siege-vm 的 SSH 终端。

  2. 对负载均衡器 IP 执行 curl 命令,以验证您是否仍能正常连接,此时应收到 200 响应:

curl http://$LB_IP
  1. 在 siege-vm 的 SSH 终端中,请运行以下命令来模拟负载:
siege -c 250 http://$LB_IP

此命令不会产生任何输出。

  1. 查看安全政策日志,以确定此流量是否也被屏蔽。

  2. 在 Cloud 控制台的导航菜单 (“导航菜单”图标) 中,选择查看所有产品。在网络下,依次点击网络安全 > Cloud Armor 政策

  3. 点击 rate-limit-siege

  4. 点击日志

  5. 点击查看政策日志

  6. 在“日志记录”页面上,请务必清除“查询预览”中的所有文本。

  7. 将资源选择为应用负载均衡器 > http-lb-forwarding-rule > http-lb,然后点击应用

  8. 现在,点击运行查询

  9. 展开“查询结果”中的一条日志条目。

    “查询结果”页面

  10. 展开 httpRequest

请求应该来自 siege-vm IP 地址。若非如此,请展开另外一条日志条目。

  1. 展开 jsonPayload

  2. 展开 enforcedSecurityPolicy

    “查询结果”页面

请注意,configuredActionDENY,名称为 rate-limit-siege

注意: Cloud Armor 安全策略会生成日志,通过查看这些日志,您可以确定流量在何时被拒绝或允许,并了解流量的来源。

恭喜!

您已配置了一个在 中拥有后端的 HTTP 负载均衡器。接着,您利用虚拟机对负载均衡器进行了压力测试,并通过 Cloud Armor 的速率限制功能将相应的 IP 地址列入了拒绝清单。您成功查看安全政策日志,并确定了流量被阻止的原因。

后续步骤/了解详情

如需了解 Cloud Armor 的基本概念,请参阅 Cloud Armor 文档

如需详细了解负载均衡,请参阅负载均衡

Google Cloud 培训和认证

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

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

上次测试实验的时间:2025 年 9 月 8 日

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

准备工作

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

使用无痕浏览模式

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

登录控制台

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

此内容目前不可用

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

太好了!

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

一次一个实验

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

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

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

完成此快速步骤即可开始实验。