GSP007
![Google Cloud 自学实验的徽标](https://cdn.qwiklabs.com/GMOHykaqmlTHiqEeQXTySaMXYPHeIvaqa2qHEzw6Occ%3D)
概览
在本实操实验中,您将了解网络负载均衡器和 HTTP 负载均衡器之间的区别,并学习如何为 Compute Engine 虚拟机 (VM) 中运行的应用设置这两种负载均衡器。
您可以通过多种方式在 Google Cloud 上实现负载均衡。
本实验将引导您完成下列负载均衡器的设置过程:
建议您自己手动输入命令,这有助于您学习核心概念。
很多实验中都有一个代码块,其中会包含所需的命令。
在实验过程中,您可以轻松复制代码块中的命令并粘贴至合适位置。
学习内容
- 设置网络负载均衡器。
- 设置 HTTP 负载均衡器。
- 通过实操实验,学习网络负载均衡器和 HTTP 负载均衡器之间的区别。
设置和要求
点击“开始实验”按钮前的注意事项
请阅读以下说明。实验是计时的,并且您无法暂停实验。计时器在您点击开始实验后即开始计时,显示 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
。
如果您连接成功,即表示您已通过身份验证,且当前项目会被设为您的 PROJECT_ID 环境变量所指的项目。输出内容中有一行说明了此会话的 PROJECT_ID:
Your Cloud Platform project in this session is set to YOUR_PROJECT_ID
gcloud
是 Google Cloud 的命令行工具。它已预先安装在 Cloud Shell 上,且支持 Tab 自动补全功能。
- (可选)您可以通过此命令列出活跃账号名称:
gcloud auth list
-
点击授权。
-
现在,输出的内容应如下所示:
输出:
ACTIVE: *
ACCOUNT: student-01-xxxxxxxxxxxx@qwiklabs.net
To set the active account, run:
$ gcloud config set account `ACCOUNT`
- (可选)您可以通过此命令列出项目 ID:
gcloud config list project
输出:
[core]
project = <project_ID>
输出示例:
[core]
project = qwiklabs-gcp-44776a13dea667a6
Note: For full documentation of gcloud
, in Google Cloud, refer to the gcloud CLI overview guide.
任务 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 流量访问这些实例的防火墙规则。
下方所示代码可将该可用区设置为 。通过设置标记字段,您可以一次性同时引用所有这些实例,例如使用防火墙规则。
这些命令也会在每个实例上安装 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. 配置负载均衡服务
配置负载均衡服务时,您的虚拟机实例将接收发往您配置的静态外部 IP 地址的数据包。
如果虚拟机实例是使用 Compute Engine 映像创建的,则系统会自动配置实例,处理此 IP 地址。
注意:
如需详细了解如何设置网络负载均衡,请参阅外部 TCP/UDP 网络负载均衡概览指南。
-
为负载均衡器创建静态外部 IP 地址:
gcloud compute addresses create network-lb-ip-1 \
--region {{{project_0.default_region | Region}}}
输出:
Created [https://www.googleapis.com/compute/v1/projects/qwiklabs-gcp-03-xxxxxxxxxxx/regions/{{{project_0.startup_script.project_region}}}/addresses/network-lb-ip-1].
-
添加旧版 HTTP 健康检查资源:
gcloud compute http-health-checks create basic-check
-
向您的实例所在的区域添加目标池。运行以下命令,创建目标池并执行必要的健康检查,确保服务正常运行:
gcloud compute target-pools create www-pool \
--region {{{project_0.default_region | Region}}} --http-health-check basic-check
-
将实例添加到目标池:
gcloud compute target-pools add-instances www-pool \
--instances www1,www2,www3
-
添加转发规则:
gcloud compute forwarding-rules create www-rule \
--region {{{project_0.default_region | Region}}} \
--ports 80 \
--address network-lb-ip-1 \
--target-pool www-pool
点击下方的检查我的进度,验证您是否已创建指向 Web 服务器的 L4 网络负载均衡器。
配置负载均衡服务
任务 4. 将流量发送到您的实例
在配置了负载均衡服务后,您可以开始将流量发送到转发规则并观察流量被分散到不同的实例。
-
输入以下命令,查看负载均衡器使用的 www-rule 转发规则的外部 IP 地址:
gcloud compute forwarding-rules describe www-rule --region {{{project_0.default_region | Region}}}
-
访问外部 IP 地址
IPADDRESS=$(gcloud compute forwarding-rules describe www-rule --region {{{project_0.default_region | Region}}} --format="json" | jq -r .IPAddress)
-
显示外部 IP 地址
echo $IPADDRESS
-
使用 curl
命令来访问外部 IP 地址(将 IP_ADDRESS
替换为之前的命令所输出的外部 IP 地址):
while true; do curl -m1 $IPADDRESS; done
三个实例会随机轮流接收来自 curl
命令的响应。如果响应最初不成功,请等待大约 30 秒时间,以便配置加载完成并将实例的状态标记为“健康状况良好”,然后再次尝试。
-
使用 Ctrl + C 停止运行该命令。
任务 5.
创建 HTTP 负载均衡器
HTTP(S) 负载均衡是以 Google Front End (GFE) 为基础实现的。
这些 GFE 分布于全球各地,可通过 Google 的全球网络和控制层面协同运作。
您可以将网址规则配置为将一些网址路由到一组实例,然后将其他网址路由到其他实例。
请求始终会被路由到距离用户最近的那组实例,当然,该组实例必须有足够的处理能力且适合处理该请求才行。
如果最近的那组实例没有足够的处理能力,则系统会将该请求发送到有足够处理能力的最近一组实例。
如需使用 Compute Engine 后端设置负载均衡器,您的虚拟机必须属于某个实例组。
这个代管式实例组提供了一组虚拟机,用于运行外部 HTTP 负载均衡器的后端服务器。
对于此实验,后端会传送其各自的主机名。
-
首先,创建负载均衡器模板:
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
-
为负载均衡器创建健康检查:
gcloud compute health-checks create http http-basic-check \
--port 80
注意:Google Cloud 提供的健康检查机制可确定后端实例是否能够正确响应流量。
如需了解详情,请参阅“创建健康检查”文档。
-
创建后端服务:
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 配置资源,用于向后端服务或后端存储桶路由请求。
例如,对于外部 HTTP(S) 负载均衡器,您可以使用单个网址映射,根据网址映射中配置的规则将请求路由到不同的目的地:
- 针对 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 HTTP(S) 负载均衡器。
创建 HTTP 负载均衡器
任务 6. 测试发送到您的实例的流量
-
在 Google Cloud 控制台的导航菜单中,点击网络服务 > 负载均衡。
-
点击您刚刚创建的负载均衡器 (web-map-http
)。
-
在后端部分,点击后端的名称,并确认虚拟机健康状况良好。如果虚拟机健康状况不佳,请稍等片刻,然后尝试重新加载页面。
-
当虚拟机健康状况良好时,请打开网络浏览器并转到 http://IP_ADDRESS/
(将 IP_ADDRESS
替换为负载均衡器的 IP 地址),以此测试负载均衡器。
测试过程可能需要三到五分钟时间。
如果无法连接,请等待一分钟,然后重新加载浏览器。
您的浏览器应该会呈现一个页面,其中的内容显示提供该页面的实例的名称及其可用区(例如,Page served from: lb-backend-group-xxxx
)。
恭喜!
您已成功创建网络负载均衡器和 HTTP(s) 负载均衡器,练习了如何使用实例模板和代管式实例组。
完成挑战任务
本自学实验已纳入 Google Cloud 基础知识挑战任务中。
一项挑战任务就是一系列相关的实验,学习时按部就班地完成这些实验即可。
完成挑战任务即可赢得一枚徽章,以表彰您取得的成就。您可以公开展示徽章,还可以在您的在线简历或社交媒体账号中加入指向徽章的链接。欢迎注册参加此挑战任务,完成后就能立即获得相应的积分。
前往目录查看所有可供参与的挑战任务。
参与下一项实验
欢迎您继续参与挑战任务,下一项实验是 Hello Node Kubernetes;或者,您也可以查看下面这些推荐实验:
后续步骤/了解详情
Google Cloud 培训和认证
…可帮助您充分利用 Google Cloud 技术。我们的课程会讲解各项技能与最佳实践,可帮助您迅速上手使用并继续学习更深入的知识。我们提供从基础到高级的全方位培训,并有点播、直播和虚拟三种方式选择,让您可以按照自己的日程安排学习时间。各项认证可以帮助您核实并证明您在 Google Cloud 技术方面的技能与专业知识。
上次更新手册的时间:2023 年 9 月 19 日
上次测试实验的时间:2023 年 9 月 19 日
版权所有 2025 Google LLC 保留所有权利。Google 和 Google 徽标是 Google LLC 的商标。其他所有公司名和产品名可能是其各自相关公司的商标。