arrow_back

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

登录 加入
Test and share your knowledge with our community!
done
Get access to over 700 hands-on labs, skill badges, and courses

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

Lab 1 小时 universal_currency_alt 5 个积分 show_chart 中级
Test and share your knowledge with our community!
done
Get access to over 700 hands-on labs, skill badges, and courses

GSP215

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 负载均衡器进行压力测试
  • 将一个 IP 地址列入拒绝名单,限制其对 HTTP 负载均衡器的访问

设置和要求

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

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

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

为完成此实验,您需要:

  • 能够使用标准的互联网浏览器(建议使用 Chrome 浏览器)。
注意:请使用无痕模式或无痕浏览器窗口运行此实验。这可以避免您的个人账号与学生账号之间发生冲突,这种冲突可能导致您的个人账号产生额外费用。
  • 完成实验的时间 - 请注意,实验开始后无法暂停。
注意:如果您已有自己的个人 Google Cloud 账号或项目,请不要在此实验中使用,以避免您的账号产生额外的费用。

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

  1. 点击开始实验按钮。如果该实验需要付费,系统会打开一个弹出式窗口供您选择付款方式。左侧是实验详细信息面板,其中包含以下各项:

    • 打开 Google 控制台按钮
    • 剩余时间
    • 进行该实验时必须使用的临时凭据
    • 帮助您逐步完成本实验所需的其他信息(如果需要)
  2. 点击打开 Google 控制台。 该实验会启动资源并打开另一个标签页,显示登录页面。

    提示:请将这些标签页安排在不同的窗口中,并将它们并排显示。

    注意:如果您看见选择帐号对话框,请点击使用其他帐号
  3. 如有必要,请从实验详细信息面板复制用户名,然后将其粘贴到登录对话框中。点击下一步

  4. 请从实验详细信息面板复制密码,然后将其粘贴到欢迎对话框中。点击下一步

    重要提示:您必须使用左侧面板中的凭据。请勿使用您的 Google Cloud Skills Boost 凭据。 注意:在本次实验中使用您自己的 Google Cloud 帐号可能会产生额外费用。
  5. 继续在后续页面中点击以完成相应操作:

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

片刻之后,系统会在此标签页中打开 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. 点击创建

创建健康检查防火墙规则

健康检查可确定负载均衡器的哪些实例能接收新连接。在 HTTP 负载均衡的过程中,对负载均衡实例的健康检查探测来自于 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. 配置实例模板并创建实例组

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

配置实例模板

实例模板是一种用于创建虚拟机实例和托管式实例组的 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 开头)和服务器位置 中的一个可用区)。

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

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

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

展示负载均衡的网络图

开始配置

  1. 在 Cloud 控制台中,点击导航菜单 (“导航菜单”图标) > 点击网络服务 > 负载均衡

  2. 点击创建负载均衡器

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

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

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

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

  7. 将新 HTTP(S) 负载均衡器的名称设置为 http-lb

配置前端

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

  1. 点击前端配置

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

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

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

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

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

HTTP(S) 负载均衡支持使用 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. 点击确定

检查并创建 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
  1. 若要在环境变量中存储 HTTP 负载均衡器的 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 列入拒绝名单,以禁止其访问 HTTP 负载均衡器。

创建安全政策

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

  1. 在控制台中,前往导航菜单 (“导航菜单”图标) > Compute Engine > 虚拟机实例
  2. 请记下 siege-vm外部 IP。下文中以 [SIEGE_IP] 引用此外部 IP 地址。
注意: 您可以通过几种方法来识别尝试访问 HTTP 负载均衡器的客户端的外部 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 不能访问 HTTP 负载均衡器。

  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 地址。
注意: 您可以从浏览器访问 HTTP 负载均衡器,因为默认规则是允许流量;但不能从 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 安全政策会创建日志,您可以查看该日志来确定系统何时拒绝了流量、何时允许了流量,还可确定流量来源。

恭喜!

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

后续步骤/了解详情

Google Cloud 培训和认证

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

上次更新手册的时间:2024 年 4 月 18 日

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

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