arrow_back

结合使用应用负载均衡器与 Cloud Armor

登录 加入
Quick tip: Review the prerequisites before you run the lab
Use an Incognito or private browser window to run this lab. This prevents any conflicts between your personal account and the student account, which may cause extra charges incurred to your personal account.
欢迎加入我们的社区,一起测试和分享您的知识!
done
学习 700 多个动手实验和课程并获得相关技能徽章

结合使用应用负载均衡器与 Cloud Armor

实验 1 小时 universal_currency_alt 5 个积分 show_chart 中级
info 此实验可能会提供 AI 工具来支持您学习。
欢迎加入我们的社区,一起测试和分享您的知识!
done
学习 700 多个动手实验和课程并获得相关技能徽章

GSP215

Google Cloud 自学实验的徽标

概览

Google Cloud 应用负载均衡在全球 Google 入网点 (POP) 的 Google 网络边缘实施。定向到应用负载均衡器的用户流量会进入距离用户最近的入网点,然后在 Google 全球网络上实现负载均衡,以便将其传输到具有足够可用容量的最近后端。

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

在本实验中,您将利用全球后端配置应用负载均衡器,如下图所示。随后您需要对该负载均衡器进行压力测试,并使用 Cloud Armor 将压力测试 IP 地址加入拒绝名单。

展示负载均衡的网络图

目标

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

  • 创建 HTTP 防火墙规则和健康检查防火墙规则
  • 配置两个实例模板
  • 创建两个托管式实例组
  • 配置一个支持 IPv4 和 IPv6 的应用负载均衡器
  • 对应用负载均衡器进行压力测试
  • 将一个 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 产品和服务的菜单,请点击左上角的导航菜单导航菜单图标

任务 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 范围
    来源 IPv4 范围 0.0.0.0/0
    协议和端口 指定的协议和端口;然后勾选“TCP”,并输入“80”

确保在来源 IPv4 范围中包含 /0,以指定所有网络。

  1. 点击创建

创建健康检查防火墙规则

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

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

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

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

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

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

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

配置实例模板

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

分别为 各创建一个实例模板。

  1. 在 Cloud 控制台中,前往导航菜单 (“导航菜单”图标) > Compute Engine > 实例模板,随后点击创建实例模板

  2. 名称部分,输入 -template

  3. 位置部分,选择全球

  4. 对于系列,选择 E2

  5. 对于机器类型,选择 e2-micro

  6. 点击高级选项

  7. 点击网络。设置以下值,将所有其他值保留为默认值:

    属性 值(按照说明输入值或选择选项)
    网络标记 http-server
  8. 点击网络接口下的默认。设置以下值,将所有其他值保留为默认值:

    属性 值(按照说明输入值或选择选项)
    网络 default
    子网 default

    点击完成

网络标记 http-server 可确保将 HTTP 防火墙规则和健康检查防火墙规则应用于这些实例。

  1. 点击管理标签页。

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

    startup-script-url gs://cloud-training/gcpnet/httplb/startup.sh

startup-script-url 指定实例启动时执行的脚本。此脚本会安装 Apache,并更改欢迎页面以包含客户端 IP 地址以及虚拟机实例的名称、区域和可用区。您可以随时查看此脚本

  1. 点击创建
  2. 等待实例模板创建完毕。

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

  1. 点击 -template,然后点击顶端的 + 创建类似虚拟机选项。
  2. 名称部分,输入 -template
  3. 位置部分,选择全球
  4. 点击高级选项
  5. 点击网络
  6. 确保将 http-server 添加为网络标记
  7. 网络接口子网部分,选择 default ()
  8. 点击完成
  9. 点击创建

创建托管式实例组

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

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

  2. 点击创建实例组

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

    属性 值(按照说明输入值或选择选项)
    名称 -mig(如有必要,请移除名称中额外的空格)
    实例模板 -template
    位置 多个可用区
    区域
    实例数下限 1
    实例数上限 2
    “自动扩缩信号” > 点击下拉菜单 > “信号类型” CPU 利用率
    目标 CPU 利用率 80;点击完成
    初始化期 45

借助托管式实例组提供的自动扩缩功能,您可以根据负载的增减自动在托管式实例组中添加或移除实例。自动扩缩可帮助您的应用顺利应对流量增加的情况,并在资源需求量减少时降低费用。您只需定义自动扩缩政策,自动扩缩器即可根据测量到的负载执行自动扩缩。

  1. 点击创建

接下来重复相同的过程,在 中为 -mig 创建第二个实例组:

  1. 点击创建实例组

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

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

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

验证后端

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

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

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

    这些实例属于这两个托管式实例组。

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

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

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

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

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

任务 3. 配置应用负载均衡器

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

展示负载均衡的网络图

开始配置

  1. 在 Cloud 控制台中,依次点击导航菜单 (“导航菜单”图标) > 查看所有产品 > 网络 > 网络服务 > 负载均衡

  2. 点击创建负载均衡器

  3. 应用负载均衡器 HTTP(S) 下,点击“下一步”。

  4. 公共或内部字段中,选择公共(外部),然后点击“下一步”。

  5. 全球或单区域部署字段中,选择最适合全球性工作负载,然后点击“下一步”。

  6. 创建负载均衡器中,点击配置

  7. 负载均衡器名称设置为 http-lb

配置前端

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

  1. 点击前端配置

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

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

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

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

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

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

配置后端

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

  1. 点击后端配置

  2. 对于后端服务和后端存储桶,点击创建后端服务

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

    属性 值(按照说明选择选项)
    名称 http-backend
    实例组 -mig
    端口号 80
    均衡模式 请求速率
    RPS 上限 50
    容量 100

此配置意味着负载均衡器会尽力将 -mig 中每个实例的每秒请求数 (RPS) 保持在 50 或以下。

  1. 点击完成

  2. 点击添加后端

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

    属性 值(按照说明选择选项)
    实例组 -mig
    端口号 80
    均衡模式 利用率
    后端利用率上限 80
    容量 100

此配置意味着负载均衡器会尽力将 -mig 中每个实例的 CPU 利用率保持在 80% 或以下。

  1. 点击完成

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

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

    属性 值(按照说明选择选项)
    名称 http-health-check
    协议 TCP
    端口 80

健康检查确定哪些实例能接收新连接。此 HTTP 健康检查每 5 秒轮询一次实例,最多等待 5 秒来接收响应,并将 2 次成功尝试或 2 次失败尝试分别视为状况良好或状况不佳的判断标准。

  1. 点击保存
  2. 选中启用日志记录框。
  3. 采样率设置为 1
  4. 点击创建以创建后端服务。
  5. 点击确定

检查并创建应用负载均衡器

  1. 点击检查并最终确定
  2. 检查后端前端服务。
  3. 点击创建
  4. 等待负载均衡器创建完毕。
  5. 点击负载均衡器的名称 (http-lb)。
  6. 请记下负载均衡器的 IPv4 和 IPv6 地址,下一个任务中会用到。下文将分别以 [LB_IP_v4][LB_IP_v6] 来引用这两个地址。
注意: 采用十六进制格式的地址是 IPv6 地址。

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

任务 4. 测试应用负载均衡器

现在您已经为自己的后端创建了应用负载均衡器,接下来验证流量会不会转发到该后端服务。

访问应用负载均衡器

若要使用 IPv4 地址来测试对应用负载均衡器的访问,请在浏览器中打开一个新标签页,并转到 http://[LB_IP_v4]。请务必将 [LB_IP_v4] 替换为负载均衡器的 IPv4 地址。

注意: 您最多可能需要 5 分钟时间才能访问应用负载均衡器。在此期间,您可能会收到 404 或 502 错误。请继续尝试,直至您看到一个后端的网页。 注意: 根据您与 的距离,您的流量可能会转发到 -mig-mig 中的某个实例。

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

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

使用 siege,创建一个新的虚拟机来模拟应用负载均衡器上的负载。然后确定当负载较高时,系统是否在两个后端之间均衡流量。

  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
  1. 若要在环境变量中存储应用负载均衡器的 IPv4 地址,请运行以下命令,并使用 IPv4 地址替换 [LB_IP_v4]
export LB_IP=[LB_IP_v4]
  1. 若要模拟负载,请运行以下命令:
siege -c 150 -t120s http://$LB_IP
  1. 在 Cloud 控制台中,依次点击导航菜单 (“导航菜单”图标) > 查看所有产品 > 网络 > 网络服务 > 负载均衡

  2. 点击后端

  3. 点击 http-backend

  4. 前往 http-lb

  5. 点击监控标签页。

  6. 花两三分钟时间,监控在北美区域和这两个后端之间的前端位置(总入站流量)

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

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

  1. 返回 siege-vmSSH 终端。
  2. 如果 siege 仍在运行,按 CTRL+C 使其停止运行。

输出应如下所示:

New configuration template added to /home/student-02-dd02c94b8808/.siege Run siege -C to view the current settings in that file { "transactions": 24729, "availability": 100.00, "elapsed_time": 119.07, "data_transferred": 3.77, "response_time": 0.66, "transaction_rate": 207.68, "throughput": 0.03, "concurrency": 137.64, "successful_transactions": 24729, "failed_transactions": 0, "longest_transaction": 10.45, "shortest_transaction": 0.03 }

任务 5. 将 siege-vm 列入拒绝名单

使用 Cloud Armor 将 siege-vm 列入拒绝名单,以禁止其访问该应用负载均衡器。

创建安全政策

创建 Cloud Armor 安全政策,在其中包含一项用于 siege-vm 的拒绝名单规则。

  1. 在控制台中,前往导航菜单 (“导航菜单”图标) > Compute Engine > 虚拟机实例
  2. 请记下 siege-vm外部 IP。下文中以 [SIEGE_IP] 引用此外部 IP 地址。
注意: 您可以通过几种方法来识别尝试访问应用负载均衡器的客户端的外部 IP 地址。例如,您可以检查 BigQuery 中的 VPC 流日志捕获的流量,以确定传入请求量较大的情况。
  1. 在 Cloud 控制台中,依次点击导航菜单 (“导航菜单”图标) > 查看所有产品 > 网络 > 网络安全 > Cloud Armor 政策

  2. 点击创建政策

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

    属性 值(按照说明输入值或选择选项)
    名称 denylist-siege
    默认规则操作 允许
  4. 点击下一步

  5. 点击添加规则

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

    属性 值(按照说明输入值或选择选项)
    条件 > 匹配 输入 SIEGE_IP
    操作 拒绝
    响应代码 403(已禁止)
    优先级 1000
  7. 点击完成

  8. 点击下一步

  9. 点击添加目标

  10. 类型部分,选择后端服务(外部应用负载均衡器)

  11. 目标部分,选择 http-backend

  12. 点击创建政策

注意: 您也可以将默认规则设置为拒绝,并且仅将来自授权用户/IP 地址的流量列入许可名单,或通过其他方式允许这些流量。
  1. 等待政策创建完毕,然后再转到下一步。

点击“检查我的进度”以验证是否完成了以下目标: 将 siege-vm 列入拒绝名单

验证安全政策

验证 siege-vm 是否不能访问此应用负载均衡器。

  1. 返回 siege-vmSSH 终端。
  2. 如需访问负载均衡器,请运行以下命令:
curl http://$LB_IP

输出应如下所示:

<!doctype html><meta charset="utf-8"><meta name=viewport content="width=device-width, initial-scale=1"><title>403</title>403 Forbidden 注意: 安全政策可能需要几分钟时间才能生效。如果您能够访问后端,请继续尝试,直至收到“403 Forbidden”错误
  1. 在浏览器中打开一个新标签页并导航到 http://[LB_IP_v4]。请务必将 [LB_IP_v4] 替换为负载均衡器的 IPv4 地址。
注意: 您可以从浏览器访问应用负载均衡器,因为默认规则是允许流量;但不能从 siege-vm 访问,因为您对其实施了拒绝规则。
  1. 返回 siege-vm 的 SSH 终端,为了模拟负载,请运行以下命令:
siege -c 150 -t120s http://$LB_IP

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

浏览安全政策日志,确定系统是否也阻止了此流量。

  1. 在控制台中,前往导航菜单 > 网络安全 > Cloud Armor 政策
  2. 点击 denylist-siege
  3. 点击日志
  4. 点击查看政策日志
  5. 在“日志记录”页面上,确保清除查询预览中的所有文本。为应用负载均衡器 > http-lb-forwarding-rule > http-lb 选择资源,随后点击应用
  6. 现在,点击运行查询
  7. 展开查询结果中的一条日志条目。
  8. 展开 httpRequest

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

  1. 展开 jsonPayload
  2. 展开 enforcedSecurityPolicy
  3. 请注意,configuredActionDENYnamedenylist-siege

“查询结果”页面

Cloud Armor 安全政策会创建日志,您可以查看该日志来确定系统何时拒绝了流量、何时允许了流量,还可确定流量来源。

恭喜!

您配置了具有 后端的应用负载均衡器。 随后,您借助虚拟机对负载均衡器进行了压力测试,并通过 Cloud Armor 将该虚拟机的 IP 地址列入了拒绝名单。 您能够浏览安全政策日志,以确定系统阻止流量的原因。

后续步骤/了解详情

Google Cloud 培训和认证

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

上次更新手册的时间:2024 年 10 月 24 日

上次测试实验的时间:2024 年 4 月 18 日

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