检查点
Configure HTTP and health check firewall rules
/ 25
Configure instance templates and instance group
/ 25
Configure the HTTP Load Balancer
/ 25
Blacklist the siege-vm
/ 25
将 HTTP 负载均衡器与 Cloud Armor 结合使用
GSP215
概览
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 控制台按钮
- 剩余时间
- 进行该实验时必须使用的临时凭据
- 帮助您逐步完成本实验所需的其他信息(如果需要)
-
点击打开 Google Cloud 控制台(如果您使用的是 Chrome 浏览器,请右键点击并选择在无痕式窗口中打开链接)。
该实验会启动资源并打开另一个标签页,显示登录页面。
提示:请将这些标签页安排在不同的窗口中,并将它们并排显示。
注意:如果您看见选择账号对话框,请点击使用其他账号。 -
如有必要,请复制下方的用户名,然后将其粘贴到登录对话框中。
{{{user_0.username | "<用户名>"}}} 您也可以在实验详细信息面板中找到用户名。
-
点击下一步。
-
复制下面的密码,然后将其粘贴到欢迎对话框中。
{{{user_0.password | "<密码>"}}} 您也可以在实验详细信息面板中找到密码。
-
点击下一步。
重要提示:您必须使用实验提供的凭据。请勿使用您的 Google Cloud 账号凭据。 注意:在本次实验中使用您自己的 Google Cloud 账号可能会产生额外费用。 -
继续在后续页面中点击以完成相应操作:
- 接受条款及条件。
- 由于该账号为临时账号,请勿添加账号恢复选项或双重验证。
- 请勿注册免费试用。
片刻之后,系统会在此标签页中打开 Google Cloud 控制台。
任务 1. 配置 HTTP 防火墙规则和健康检查防火墙规则
将防火墙规则配置为允许 HTTP 流量进入后端,以及允许接收来自 Google Cloud 健康检查工具的 TCP 流量。
创建 HTTP 防火墙规则
创建防火墙规则,以允许 HTTP 流量进入后端。
-
在 Cloud 控制台中,前往导航菜单 () > VPC 网络 > 防火墙。
-
请注意现有的 ICMP、internal、RDP 和 SSH 防火墙规则。
每个 Google Cloud 项目都从 default 网络和上述防火墙规则开始。
-
点击创建防火墙规则。
-
设置以下值,将所有其他值保留为默认值:
属性 值(按照说明输入值或选择选项) 名称 default-allow-http 网络 default 目标 指定的目标标记 目标标记 http-server 来源过滤条件 IPv4 范围 来源 IPv4 范围 0.0.0.0/0 协议和端口 指定的协议和端口;然后勾选“TCP”,并输入“80”
确保在来源 IPv4 范围中包含 /0,以指定所有网络。
- 点击创建。
创建健康检查防火墙规则
健康检查可确定负载均衡器的哪些实例能接收新连接。在 HTTP 负载均衡的过程中,对负载均衡实例的健康检查探测来自于 130.211.0.0/22
和 35.191.0.0/16
范围内的地址。您的防火墙规则必须允许这些连接。
-
仍然在防火墙政策页面中,点击创建防火墙规则。
-
设置以下值,将所有其他值保留为默认值:
属性 值(按照说明输入值或选择选项) 名称 default-allow-health-check 网络 default 目标 指定的目标标记 目标标记 http-server 来源过滤条件 IPv4 范围 来源 IPv4 范围 130.211.0.0/22
,35.191.0.0/16
协议和端口 指定的协议和端口;然后勾选“TCP” 注意: 请务必分别输入两个来源 IPv4 范围并在两者间按空格键。 -
点击创建。
点击“检查我的进度”,验证已完成以下目标。
任务 2. 配置实例模板并创建实例组
托管式实例组可使用实例模板来创建一组相同的实例。您可以使用这些实例来创建 HTTP 负载均衡器的后端。
配置实例模板
实例模板是一种用于创建虚拟机实例和托管式实例组的 API 资源。实例模板可定义机器类型、启动磁盘映像、子网、标签和其他实例属性。
分别为
-
在 Cloud 控制台中,前往导航菜单 () > Compute Engine > 实例模板,随后点击创建实例模板。
-
在名称部分,输入
-template。 -
在位置部分,选择全球。
-
对于系列,选择 E2。
-
对于机器类型,选择 e2-micro。
-
点击高级选项。
-
点击网络。设置以下值,将所有其他值保留为默认值:
属性 值(按照说明输入值或选择选项) 网络标记 http-server -
点击网络接口下的默认。设置以下值,将所有其他值保留为默认值:
属性 值(按照说明输入值或选择选项) 网络 default 子网 default 点击完成。
网络标记 http-server 可确保将 HTTP 防火墙规则和健康检查防火墙规则应用于这些实例。
-
点击管理标签页。
-
在元数据下,点击 + 添加项,然后指定以下内容:
键 值 startup-script-url gs://cloud-training/gcpnet/httplb/startup.sh
startup-script-url
指定实例启动时执行的脚本。此脚本会安装 Apache,并更改欢迎页面以包含客户端 IP 地址以及虚拟机实例的名称、区域和可用区。您可以随时查看此脚本。
- 点击创建。
- 等待实例模板创建完毕。
现在复制
- 点击
-template,然后点击顶端的 + 创建类似虚拟机选项。 - 在名称部分,输入
-template。 - 在位置部分,选择全球。
- 点击高级选项。
- 点击网络。
- 确保将 http-server 添加为网络标记。
- 在网络接口 的子网部分,选择 default (
)。 - 点击完成。
- 点击创建。
创建托管式实例组
在
-
仍然在 Compute Engine 中,点击左侧菜单中的实例组。
-
点击创建实例组。
-
设置以下值,将所有其他值保留为默认值:
属性 值(按照说明输入值或选择选项) 名称 -mig(如有必要,请移除名称中额外的空格) 实例模板 -template 位置 多个可用区 区域 实例数下限 1 实例数上限 2 “自动扩缩信号” > 点击下拉菜单 > “信号类型” CPU 利用率 目标 CPU 利用率 80;点击完成。 初始化期 45
借助托管式实例组提供的自动扩缩功能,您可以根据负载的增减自动在托管式实例组中添加或移除实例。自动扩缩可帮助您的应用顺利应对流量增加的情况,并在资源需求量减少时降低费用。您只需定义自动扩缩政策,自动扩缩器即可根据测量到的负载执行自动扩缩。
- 点击创建。
接下来重复相同的过程,在
-
点击创建实例组。
-
设置以下值,将所有其他值保留为默认值:
属性 值(按照说明输入值或选择选项) 名称 -mig 实例模板 -template 位置 多个可用区 区域 实例数下限 1 实例数上限 2 “自动扩缩信号” > 点击下拉菜单 > “信号类型” CPU 利用率 目标 CPU 利用率 80;点击完成。 初始化期 45 -
点击创建。
点击“检查我的进度”,验证已完成以下目标。
验证后端
验证在这两个区域中都创建了虚拟机实例,并访问其 HTTP 站点。
-
仍然在 Compute Engine 中,点击左侧菜单中的虚拟机实例。
-
请注意以
-mig 和 -mig 开头的实例。 这些实例属于这两个托管式实例组。
-
点击
-mig 中一个实例的外部 IP。 您应该会看到客户端 IP(您的 IP 地址)、主机名(以
-mig 开头)和服务器位置( 中的一个可用区)。 -
点击
-mig 中一个实例的外部 IP。 您应该会看到客户端 IP(您的 IP 地址)、主机名(以
-mig 开头)和服务器位置( 中的一个可用区)。
任务 3. 配置 HTTP 负载均衡器
配置 HTTP 负载均衡器,在两个后端(
开始配置
-
在 Cloud 控制台中,点击导航菜单 () > 点击网络服务 > 负载均衡。
-
点击创建负载均衡器。
-
在应用负载均衡器 HTTP(S) 下,点击“下一步”。
-
在公共或内部字段中,选择公共(外部),然后点击“下一步”。
-
在全球或单区域部署字段中,选择最适合全球性工作负载,然后点击“下一步”。
-
在创建负载均衡器中,点击配置。
-
将新 HTTP(S) 负载均衡器的名称设置为
http-lb
。
配置前端
主机和路径规则决定将如何定向您的流量。例如,您可以将视频流量定向到一个后端,将静态流量定向到另一个后端。不过,主机和路径规则的配置并不在本实验的涵盖范围内。
-
点击前端配置。
-
指定以下内容,并将所有其他值保留为默认值:
属性 值(按照说明输入值或选择选项) 协议 HTTP IP 版本 IPv4 IP 地址 临时 端口 80 -
点击完成。
-
点击添加前端 IP 和端口。
-
指定以下内容,并将所有其他值保留为默认值:
属性 值(按照说明输入值或选择选项) 协议 HTTP IP 版本 IPv6 IP 地址 自动分配 端口 80 -
点击完成。
HTTP(S) 负载均衡支持使用 IPv4 和 IPv6 地址来路由客户端流量。客户端 IPv6 请求会在全球负载均衡层终止,然后通过 IPv4 代理传输到您的后端。
配置后端
后端服务会将传入的流量定向到一个或多个关联的后端。每个后端由一个实例组和附加的服务容量元数据组成。
-
点击后端配置。
-
对于后端服务和后端存储桶,点击创建后端服务。
-
设置以下值,将所有其他值保留为默认值:
属性 值(按照说明选择选项) 名称 http-backend 实例组 -mig 端口号 80 均衡模式 请求速率 RPS 上限 50 容量 100
此配置意味着负载均衡器会尽力将
-
点击完成。
-
点击添加后端。
-
设置以下值,将所有其他值保留为默认值:
属性 值(按照说明选择选项) 实例组 -mig 端口号 80 均衡模式 利用率 后端利用率上限 80 容量 100
此配置意味着负载均衡器会尽力将
-
点击完成。
-
对于健康检查,请选择创建健康检查。
-
设置以下值,将所有其他值保留为默认值:
属性 值(按照说明选择选项) 名称 http-health-check 协议 TCP 端口 80
健康检查确定哪些实例能接收新连接。此 HTTP 健康检查每 5 秒轮询一次实例,最多等待 5 秒来接收响应,并将 2 次成功尝试或 2 次失败尝试分别视为状况良好或状况不佳的判断标准。
- 点击保存。
- 选中启用日志记录框。
- 将采样率设置为
1
。 - 点击创建以创建后端服务。
- 点击确定。
检查并创建 HTTP 负载均衡器
- 点击检查并最终确定。
- 检查后端和前端服务。
- 点击创建。
- 等待负载均衡器创建完毕。
- 点击负载均衡器的名称 (http-lb)。
- 请记下负载均衡器的 IPv4 和 IPv6 地址,下一个任务中会用到。下文将分别以
[LB_IP_v4]
和[LB_IP_v6]
来引用这两个地址。
点击“检查我的进度”,验证已完成以下目标。
任务 4. 测试 HTTP 负载均衡器
现在您已经为自己的后端创建了 HTTP 负载均衡器,接下来验证流量会转发到该后端服务。
访问 HTTP 负载均衡器
若要测试对 HTTP 负载均衡器的 IPv4 访问,在浏览器中打开一个新标签页,并转到 http://[LB_IP_v4]
。请务必将 [LB_IP_v4]
替换为负载均衡器的 IPv4 地址。
如果您有本地 IPv6 地址,请转到 http://[LB_IP_v6]
,尝试使用 HTTP 负载均衡器的 IPv6 地址。请务必将 [LB_IP_v6]
替换为负载均衡器的 IPv6 地址。
对 HTTP 负载均衡器进行压力测试
使用 siege
,创建一个新的虚拟机来模拟 HTTP 负载均衡器上的负载。然后确定当负载较高时,系统是否在两个后端之间均衡流量。
-
在控制台中,前往导航菜单 () > Compute Engine > 虚拟机实例。
-
点击创建实例。
-
设置以下值,将所有其他值保留为默认值:
属性 值(按照说明输入值或选择选项) 名称 siege-vm 区域 可用区 系列 E2
由于
- 点击创建。
- 等待 siege-vm 实例创建完成。
- 对于 siege-vm,点击 SSH 以启动一个终端并进行连接。
- 运行以下命令来安装 siege:
- 若要在环境变量中存储 HTTP 负载均衡器的 IPv4 地址,请运行以下命令,并使用 IPv4 地址替换
[LB_IP_v4]
:
- 若要模拟负载,请运行以下命令:
- 在 Cloud 控制台的导航菜单 () 中,点击网络服务 > 负载均衡。
- 点击后端。
- 点击 http-backend。
- 前往 http-lb。
- 点击监控标签页。
- 花两三分钟时间,监控在北美区域和这两个后端之间的前端位置(总入站流量)。
流量最初应该仅会定向到
这表示流量默认会转发到最近的后端,但如果负载过高,流量也会被分配到其他后端。
- 返回 siege-vm 的 SSH 终端。
- 如果 siege 仍在运行,按 CTRL+C 使其停止运行。
输出应如下所示:
任务 5. 将 siege-vm 列入拒绝名单
使用 Cloud Armor 将 siege-vm 列入拒绝名单,以禁止其访问 HTTP 负载均衡器。
创建安全政策
创建 Cloud Armor 安全政策,在其中包含一项用于 siege-vm 的拒绝名单规则。
- 在控制台中,前往导航菜单 () > Compute Engine > 虚拟机实例。
- 请记下 siege-vm 的外部 IP。下文中以
[SIEGE_IP]
引用此外部 IP 地址。
-
在 Cloud 控制台中,前往导航菜单 > 网络安全 > Cloud Armor 政策。
-
点击创建政策。
-
设置以下值,将所有其他值保留为默认值:
属性 值(按照说明输入值或选择选项) 名称 denylist-siege 默认规则操作 允许 -
点击下一步。
-
点击添加规则。
-
设置以下值,将所有其他值保留为默认值:
属性 值(按照说明输入值或选择选项) 条件 > 匹配 输入 SIEGE_IP 操作 拒绝 响应代码 403(已禁止) 优先级 1000 -
点击完成。
-
点击下一步。
-
点击添加目标。
-
在类型部分,选择后端服务(外部应用负载均衡器)。
-
在目标部分,选择 http-backend。
-
点击创建政策。
- 等待政策创建完毕,然后再转到下一步。
点击“检查我的进度”,验证已完成以下目标。
验证安全政策
验证 siege-vm 不能访问 HTTP 负载均衡器。
- 返回 siege-vm 的 SSH 终端。
- 如需访问负载均衡器,请运行以下命令:
输出应如下所示:
- 在浏览器中打开一个新标签页并导航到
http://[LB_IP_v4]
。请务必将[LB_IP_v4]
替换为负载均衡器的 IPv4 地址。
- 返回 siege-vm 的 SSH 终端,为了模拟负载,请运行以下命令:
此命令不会产生任何输出。
浏览安全政策日志,确定系统是否也阻止了此流量。
- 在控制台中,前往导航菜单 > 网络安全 > Cloud Armor 政策。
- 点击 denylist-siege。
- 点击日志。
- 点击查看政策日志。
- 在“日志记录”页面上,确保清除查询预览中的所有文本。为应用负载均衡器 > http-lb-forwarding-rule > http-lb 选择资源,随后点击应用。
- 现在,点击运行查询。
- 展开查询结果中的一条日志条目。
- 展开 httpRequest。
请求应该来自 siege-vm IP 地址。若非如此,请展开另外一条日志条目。
- 展开 jsonPayload。
- 展开 enforcedSecurityPolicy。
- 请注意,configuredAction 为
DENY
,name 为denylist-siege
。
Cloud Armor 安全政策会创建日志,您可以查看该日志来确定系统何时拒绝了流量、何时允许了流量,还可确定流量来源。
恭喜!
您配置了具有
后续步骤/了解详情
-
如需了解 Cloud Armor 的基本概念,请参阅 Cloud Armor 文档。
-
如需详细了解负载均衡,请参阅负载均衡文档。
Google Cloud 培训和认证
…可帮助您充分利用 Google Cloud 技术。我们的课程会讲解各项技能与最佳实践,可帮助您迅速上手使用并继续学习更深入的知识。我们提供从基础到高级的全方位培训,并有点播、直播和虚拟三种方式选择,让您可以按照自己的日程安排学习时间。各项认证可以帮助您核实并证明您在 Google Cloud 技术方面的技能与专业知识。
上次更新手册的时间:2024 年 4 月 18 日
上次测试实验的时间:2024 年 4 月 18 日
版权所有 2024 Google LLC 保留所有权利。Google 和 Google 徽标是 Google LLC 的商标。其他所有公司名和产品名可能是其各自相关公司的商标。