GSP155

概述
在本实操实验中,您将学习如何在 Compute Engine 虚拟机 (VM) 上设置第 7 层 (L7) 应用负载均衡器。L7 负载均衡器可以理解 HTTP(S) 协议,让它们能够根据网址、标头、Cookie 等参数和请求内容做出路由决策。这样可以提升应用的性能和响应能力。
您可以通过多种方式在 Google Cloud 上实现负载均衡。
本实验将引导您完成下列负载均衡器的设置过程:
建议您自己手动输入命令,这有助于您学习核心概念。
很多实验中都有一个代码块,其中会包含所需的命令。
在实验过程中,您可以轻松复制代码块中的命令并粘贴至合适位置。
目标
在本实验中,您将学习如何执行以下任务:
- 为您的资源配置默认区域和可用区。
- 创建应用负载均衡器。
- 测试发送到实例的流量。
设置和要求
点击“开始实验”按钮前的注意事项
请阅读以下说明。实验是计时的,并且您无法暂停实验。计时器在您点击开始实验后即开始计时,显示 Google Cloud 资源可供您使用多长时间。
此实操实验可让您在真实的云环境中开展实验活动,免受模拟或演示环境的局限。为此,我们会向您提供新的临时凭据,您可以在该实验的规定时间内通过此凭据登录和访问 Google Cloud。
为完成此实验,您需要:
- 能够使用标准的互联网浏览器(建议使用 Chrome 浏览器)。
注意:请使用无痕模式(推荐)或无痕浏览器窗口运行此实验。这可以避免您的个人账号与学生账号之间发生冲突,这种冲突可能导致您的个人账号产生额外费用。
注意:请仅使用学生账号完成本实验。如果您使用其他 Google Cloud 账号,则可能会向该账号收取费用。
如何开始实验并登录 Google Cloud 控制台
-
点击开始实验按钮。如果该实验需要付费,系统会打开一个对话框供您选择支付方式。左侧是“实验详细信息”窗格,其中包含以下各项:
- “打开 Google Cloud 控制台”按钮
- 剩余时间
- 进行该实验时必须使用的临时凭据
- 帮助您逐步完成本实验所需的其他信息(如果需要)
-
点击打开 Google Cloud 控制台(如果您使用的是 Chrome 浏览器,请右键点击并选择在无痕式窗口中打开链接)。
该实验会启动资源并打开另一个标签页,显示“登录”页面。
提示:将这些标签页安排在不同的窗口中,并排显示。
注意:如果您看见选择账号对话框,请点击使用其他账号。
-
如有必要,请复制下方的用户名,然后将其粘贴到登录对话框中。
{{{user_0.username | "<用户名>"}}}
您也可以在“实验详细信息”窗格中找到“用户名”。
-
点击下一步。
-
复制下面的密码,然后将其粘贴到欢迎对话框中。
{{{user_0.password | "<密码>"}}}
您也可以在“实验详细信息”窗格中找到“密码”。
-
点击下一步。
重要提示:您必须使用实验提供的凭据。请勿使用您的 Google Cloud 账号凭据。
注意:在本实验中使用您自己的 Google Cloud 账号可能会产生额外费用。
-
继续在后续页面中点击以完成相应操作:
- 接受条款及条件。
- 由于这是临时账号,请勿添加账号恢复选项或双重验证。
- 请勿注册免费试用。
片刻之后,系统会在此标签页中打开 Google Cloud 控制台。
注意:如需访问 Google Cloud 产品和服务,请点击导航菜单,或在搜索字段中输入服务或产品的名称。
激活 Cloud Shell
Cloud Shell 是一种装有开发者工具的虚拟机。它提供了一个永久性的 5GB 主目录,并且在 Google Cloud 上运行。Cloud Shell 提供可用于访问您的 Google Cloud 资源的命令行工具。
-
点击 Google Cloud 控制台顶部的激活 Cloud Shell
。
-
在弹出的窗口中执行以下操作:
- 继续完成 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 自动补全功能。
- (可选)您可以通过此命令列出活跃账号名称:
gcloud auth list
- 点击授权。
输出:
ACTIVE: *
ACCOUNT: {{{user_0.username | "ACCOUNT"}}}
To set the active account, run:
$ gcloud config set account `ACCOUNT`
- (可选)您可以通过此命令列出项目 ID:
gcloud config list project
输出:
[core]
project = {{{project_0.project_id | "PROJECT_ID"}}}
注意:如需查看在 Google Cloud 中使用 gcloud
的完整文档,请参阅 gcloud CLI 概览指南。
任务 1. 为所有资源设置默认区域和可用区
-
设置默认区域:
gcloud config set compute/region {{{project_0.default_region | Region}}}
-
在 Cloud Shell 中设置默认可用区:
gcloud config set compute/zone {{{project_0.default_zone | Zone}}}
如需详细了解如何选择可用区和区域,请参阅 Compute Engine 的区域和可用区文档。
任务 2. 创建多个网络服务器实例
对于此实验中的负载均衡场景,您需要创建三个 Compute Engine 虚拟机实例,并在这些实例上安装 Apache,然后添加一条允许 HTTP 流量访问这些实例的防火墙规则。
下方所示代码将可用区设置为 。通过设置 tags
字段,您可以一次性同时引用所有这些实例,例如在设置防火墙规则时。这些命令也会在每个实例上安装 Apache,还会为每个实例提供唯一的首页。
-
运用以下代码,在默认可用区中创建一个虚拟机 www1
:
gcloud compute instances create www1 \
--zone={{{project_0.default_zone | Zone}}} \
--tags=network-lb-tag \
--machine-type=e2-small \
--image-family=debian-11 \
--image-project=debian-cloud \
--metadata=startup-script='#!/bin/bash
apt-get update
apt-get install apache2 -y
service apache2 restart
echo "
Web 服务器:www1
" | tee /var/www/html/index.html'
-
运用以下代码,在默认可用区中创建一个虚拟机 www2
:
gcloud compute instances create www2 \
--zone={{{project_0.default_zone | Zone}}} \
--tags=network-lb-tag \
--machine-type=e2-small \
--image-family=debian-11 \
--image-project=debian-cloud \
--metadata=startup-script='#!/bin/bash
apt-get update
apt-get install apache2 -y
service apache2 restart
echo "
Web 服务器:www2
" | tee /var/www/html/index.html'
-
在默认可用区中创建一个虚拟机 www3
。
gcloud compute instances create www3 \
--zone={{{project_0.default_zone | Zone}}} \
--tags=network-lb-tag \
--machine-type=e2-small \
--image-family=debian-11 \
--image-project=debian-cloud \
--metadata=startup-script='#!/bin/bash
apt-get update
apt-get install apache2 -y
service apache2 restart
echo "
Web 服务器:www3
" | tee /var/www/html/index.html'
-
创建允许外部流量访问虚拟机实例的防火墙规则:
gcloud compute firewall-rules create www-firewall-network-lb \
--target-tags network-lb-tag --allow tcp:80
现在,您需要获取这些实例的外部 IP 地址,并验证它们正在运行。
-
运行以下命令,列出您的实例。您可以在 EXTERNAL_IP
列查看这些实例的 IP 地址:
gcloud compute instances list
-
运行 curl
命令,将 [IP_ADDRESS] 替换为您每个虚拟机的外部 IP 地址,从而验证这些虚拟机正在运行:
curl http://[IP_ADDRESS]
点击检查我的进度,验证您创建了一组网络服务器。
创建多个网络服务器实例
任务 3. 创建应用负载均衡器
应用负载均衡是以 Google Front End (GFE) 为基础实现的。这些 GFE 分布于全球各地,可通过 Google 的全球网络和控制平面协同运作。
您可以将网址规则配置为将一些网址路由到一组实例,然后将其他网址路由到其他实例。
请求始终会被路由到距离用户最近的那组实例,当然,该组实例必须有足够的处理能力且适合处理该请求才行。如果最近的那组实例没有足够的处理能力,则系统会将该请求发送到有足够处理能力的最近一组实例。
如需使用 Compute Engine 后端设置负载均衡器,您的虚拟机必须属于某个实例组。托管式实例组提供了一组虚拟机,用于运行外部应用负载均衡器的后端服务器。对于此实验,后端会传送其各自的主机名。
-
首先,创建负载均衡器模板:
gcloud compute instance-templates create lb-backend-template \
--region={{{project_0.default_region | Region}}} \
--network=default \
--subnet=default \
--tags=allow-health-check \
--machine-type=e2-medium \
--image-family=debian-11 \
--image-project=debian-cloud \
--metadata=startup-script='#!/bin/bash
apt-get update
apt-get install apache2 -y
a2ensite default-ssl
a2enmod ssl
vm_hostname="$(curl -H "Metadata-Flavor:Google" \
http://169.254.169.254/computeMetadata/v1/instance/name)"
echo "Page served from: $vm_hostname" | \
tee /var/www/html/index.html
systemctl restart apache2'
代管式实例组 (MIG) 可让您在多个相同的虚拟机上运行应用。您可以利用自动化 MIG 服务让您的工作负载具有可扩缩性和高可用性,这些服务包括自动扩缩、自动修复、区域(多可用区)部署和自动更新。
-
基于该模板创建一个托管式实例组:
gcloud compute instance-groups managed create lb-backend-group \
--template=lb-backend-template --size=2 --zone={{{project_0.default_zone | Zone}}}
-
创建 fw-allow-health-check
防火墙规则。
gcloud compute firewall-rules create fw-allow-health-check \
--network=default \
--action=allow \
--direction=ingress \
--source-ranges=130.211.0.0/22,35.191.0.0/16 \
--target-tags=allow-health-check \
--rules=tcp:80
注意:入站流量规则允许来自 Google Cloud 健康检查系统(130.211.0.0/22
和 35.191.0.0/16
)的流量。
本实验使用目标标记 allow-health-check
来标识虚拟机
-
现在您的实例已启动并正在运行,接下来设置一个全局静态外部 IP 地址,供客户用来访问您的负载均衡器:
gcloud compute addresses create lb-ipv4-1 \
--ip-version=IPV4 \
--global
请注意预留的 IPv4 地址:
gcloud compute addresses describe lb-ipv4-1 \
--format="get(address)" \
--global
注意:请保存此 IP 地址,因为在本实验的后续环节需要用到它。
-
为负载均衡器创建健康检查(以确保仅向运行状况良好的后端发送流量):
gcloud compute health-checks create http http-basic-check \
--port 80
-
创建后端服务:
gcloud compute backend-services create web-backend-service \
--protocol=HTTP \
--port-name=http \
--health-checks=http-basic-check \
--global
-
将您的实例组作为后端添加到后端服务:
gcloud compute backend-services add-backend web-backend-service \
--instance-group=lb-backend-group \
--instance-group-zone={{{project_0.default_zone | Zone}}} \
--global
-
创建网址映射关系,以将传入的请求路由到默认的后端服务:
gcloud compute url-maps create web-map-http \
--default-service web-backend-service
注意:网址映射是一个 Google Cloud 配置资源,用于向后端服务或后端存储桶路由请求。
例如,对于外部应用负载均衡器,您可以使用单个网址映射,根据网址映射中配置的规则将请求路由到不同的目的地:
- 针对 https://example.com/video 的请求会路由到一个后端服务。
- 针对 https://example.com/audio 的请求会路由到另一个后端服务。
- 针对 https://example.com/images 的请求会路由到一个 Cloud Storage 后端存储桶。
- 针对任何其他主机和路径组合的请求会路由到默认后端服务。
-
创建一个目标 HTTP 代理,以将请求路由到您的网址映射:
gcloud compute target-http-proxies create http-lb-proxy \
--url-map web-map-http
-
创建一条全局转发规则,将传入的请求路由到相应代理:
gcloud compute forwarding-rules create http-content-rule \
--address=lb-ipv4-1\
--global \
--target-http-proxy=http-lb-proxy \
--ports=80
注意:
转发规则及其对应的 IP 地址构成 Google Cloud 负载均衡器的前端配置。
如需详细了解转发规则的基本知识,请参阅转发规则概览指南。
点击检查我的进度,验证您已创建 L7 应用负载均衡器。
创建应用负载均衡器
任务 4. 测试发送到实例的流量
-
在 Google Cloud 控制台的搜索字段中输入负载均衡,然后从搜索结果中选择负载均衡。
-
点击您刚刚创建的负载均衡器 web-map-http。
-
在后端部分,点击后端的名称,并确认虚拟机健康状况良好。如果虚拟机健康状况不佳,请稍等片刻,然后尝试重新加载页面。
-
当虚拟机健康状况良好时,请打开网络浏览器并前往 http://IP_ADDRESS/
(将 IP_ADDRESS
替换为之前复制的负载均衡器的 IP 地址),以此测试负载均衡器。
注意:测试过程可能需要三到五分钟时间。如果无法连接,请等待一分钟,然后重新加载浏览器。您的浏览器应该会呈现一个页面,其中的内容显示提供该页面的实例的名称及其可用区(例如,Page served from: lb-backend-group-xxxx
)。
点击检查我的进度,测试发送到实例的流量。使用网络浏览器测试负载均衡器
恭喜!
在本实验中,您创建了应用负载均衡器,并练习了如何使用实例模板和托管式实例组将流量发送到 Web 服务器实例。
后续步骤/了解详情
其他负载均衡器文档:
Google Cloud 提供的健康检查机制可确定后端实例是否能够正确响应流量。
Google Cloud 培训和认证
…可帮助您充分利用 Google Cloud 技术。我们的课程会讲解各项技能与最佳实践,可帮助您迅速上手使用并继续学习更深入的知识。我们提供从基础到高级的全方位培训,并有点播、直播和虚拟三种方式选择,让您可以按照自己的日程安排学习时间。各项认证可以帮助您核实并证明您在 Google Cloud 技术方面的技能与专业知识。
本手册的最后更新时间:2025 年 7 月 18 日
本实验的最后测试时间:2025 年 7 月 18 日
版权所有 2025 Google LLC 保留所有权利。Google 和 Google 徽标是 Google LLC 的商标。其他所有公司名和产品名可能是其各自相关公司的商标。