检查点
Create multiple web server instances
/ 30
Configure the load balancing service
/ 20
Create an HTTP load balancer
/ 50
设置网络负载均衡器和 HTTP 负载均衡器
GSP007
概览
在本实操实验中,您将了解网络负载均衡器和 HTTP 负载均衡器之间的区别,并学习如何为 Compute Engine 虚拟机 (VM) 中运行的应用设置这两种负载均衡器。
您可以通过多种方式在 Google Cloud 上实现负载均衡。 本实验将引导您完成下列负载均衡器的设置过程:
建议您自己手动输入命令,这有助于您学习核心概念。 很多实验中都有一个代码块,其中会包含所需的命令。 在实验过程中,您可以轻松复制代码块中的命令并粘贴至合适位置。
学习内容
- 设置网络负载均衡器。
- 设置 HTTP 负载均衡器。
- 通过实操实验,学习网络负载均衡器和 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 控制台。
激活 Cloud Shell
Cloud Shell 是一种装有开发者工具的虚拟机。它提供了一个永久性的 5GB 主目录,并且在 Google Cloud 上运行。Cloud Shell 提供可用于访问您的 Google Cloud 资源的命令行工具。
- 点击 Google Cloud 控制台顶部的激活 Cloud Shell 。
如果您连接成功,即表示您已通过身份验证,且当前项目会被设为您的 PROJECT_ID 环境变量所指的项目。输出内容中有一行说明了此会话的 PROJECT_ID:
gcloud
是 Google Cloud 的命令行工具。它已预先安装在 Cloud Shell 上,且支持 Tab 自动补全功能。
- (可选)您可以通过此命令列出活跃账号名称:
-
点击授权。
-
现在,输出的内容应如下所示:
输出:
- (可选)您可以通过此命令列出项目 ID:
输出:
输出示例:
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 流量访问这些实例的防火墙规则。
下方所示代码可将该可用区设置为
-
运用以下代码,在默认可用区中创建一个虚拟机 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 地址。
-
为负载均衡器创建静态外部 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
点击下方的检查我的进度,验证您是否已创建 L7 HTTP(S) 负载均衡器。
任务 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 日
版权所有 2024 Google LLC 保留所有权利。Google 和 Google 徽标是 Google LLC 的商标。其他所有公司名和产品名可能是其各自相关公司的商标。