GSP157

概览
本指南演示如何创建 HTTP(S) 负载均衡器,将流量转发到两个不同区域中的实例。在本实验中,您将创建四个 Compute Engine 实例,在两个不同的区域中各创建两个实例。然后,您将配置系统的其余部分,使传入的连接分发至相应实例。
下图显示了创建资源的连接方式:

设置
点击“开始实验”按钮前的注意事项
请阅读以下说明。实验是计时的,并且您无法暂停实验。计时器在您点击开始实验后即开始计时,显示 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 概览指南。
下列说明假定您使用的是自动模式 VPC 网络或旧版网络。如果您使用的是自定义模式 VPC 网络,则需要在创建实例等步骤中指定子网范围。
任务 1. 配置实例
在两个不同的区域中创建虚拟机实例,以接收从负载均衡器转发的流量。配置虚拟机实例以进行测试,并为所有实例提供相同的标记。防火墙规则将使用该标记来允许传入流量。
启动脚本会安装 Apache 并为每个实例创建唯一首页。
- 在 区域中创建两个实例:
gcloud compute instances create www-1 \
--image-family debian-11 \
--image-project debian-cloud \
--machine-type e2-micro \
--zone {{{project_0.default_zone |ZONE}}} \
--tags http-tag \
--metadata startup-script="#! /bin/bash
apt-get update
apt-get install apache2 -y
service apache2 restart
{{{project_0.startup_script.index_html1_code|Code}}}"
gcloud compute instances create www-2 \
--image-family debian-11 \
--image-project debian-cloud \
--machine-type e2-micro \
--zone {{{project_0.default_zone |ZONE}}} \
--tags http-tag \
--metadata startup-script="#! /bin/bash
apt-get update
apt-get install apache2 -y
service apache2 restart
{{{project_0.startup_script.index_html_code|Code}}}"
点击检查我的进度以验证是否完成了以下目标:
为主要区域配置实例
- 在 区域中创建两个实例:
gcloud compute instances create www-3 \
--image-family debian-11 \
--image-project debian-cloud \
--machine-type e2-micro \
--zone {{{project_0.default_zone_2 |ZONE 2}}} \
--tags http-tag \
--metadata startup-script="#! /bin/bash
apt-get update
apt-get install apache2 -y
service apache2 restart
{{{project_0.startup_script.index_html2_code|Code}}}"
gcloud compute instances create www-4 \
--image-family debian-11 \
--image-project debian-cloud \
--machine-type e2-micro \
--zone {{{project_0.default_zone_2 |ZONE 2}}} \
--tags http-tag \
--metadata startup-script="#! /bin/bash
apt-get update
apt-get install apache2 -y
service apache2 restart
{{{project_0.startup_script.index_html3_code|Code}}}"
点击检查我的进度以验证是否完成了以下目标:
为次要区域配置实例
- 创建一条防火墙规则,允许外部流量进入虚拟机实例。此规则允许来自所有来源的流量,便于调整和测试配置。
防火墙规则使用您先前创建的 http-tag
标记。该防火墙规则允许流量通过指定端到达带有该标记的实例:
gcloud compute firewall-rules create www-firewall \
--target-tags http-tag --allow tcp:80
- 验证实例是否正在运行。列出您的实例,并从 EXTERNAL_IP 列中获取实例的 IP 地址。
gcloud compute instances list
- 复制每个实例的
外部 IP
,并将其粘贴到新的浏览器标签页中,测试实例是否正在运行,检查 Web 服务器是否已正确配置,并确认能否通过打开的防火墙端口响应默认主页。
任务 2. 配置服务以实现负载均衡
您的实例已启动并正在运行,需要设置负载均衡所需的服务。创建:
- 全局静态外部 IP 地址,客户用来连接负载均衡器的外部 IP 地址。
- 实例组,用于保存您的实例。
- 健康检查 - 用于轮询您的实例,以查看其健康状况是否良好。负载均衡器仅向运行状况良好的实例发送流量。
要配置这些服务,请执行以下步骤:
- 为负载均衡器创建
IPv4
全局静态外部 IP 地址:
gcloud compute addresses create lb-ip-cr \
--ip-version=IPV4 \
--global
- 为每个可用区创建一个实例组。
gcloud compute instance-groups unmanaged create {{{project_0.default_region |REGION}}}-resources-w --zone {{{project_0.default_zone |ZONE}}}
gcloud compute instance-groups unmanaged create {{{project_0.default_region_2 |REGION 2}}}-resources-w --zone {{{project_0.default_zone_2 |ZONE 2}}}
- 将您先前创建的实例添加到实例组中。
gcloud compute instance-groups unmanaged add-instances {{{project_0.default_region |REGION}}}-resources-w \
--instances www-1,www-2 \
--zone {{{project_0.default_zone |ZONE}}}
gcloud compute instance-groups unmanaged add-instances {{{project_0.default_region_2 |REGION 2}}}-resources-w \
--instances www-3,www-4 \
--zone {{{project_0.default_zone_2 |ZONE 2}}}
- 创建健康检查
gcloud compute health-checks create http http-basic-check
任务 3. 配置负载均衡服务
负载均衡涉及多项关联的服务。在本部分,您将设置并连接这些服务。
- 已命名端口 - 负载均衡器使用这些端口将流量导向您的实例组。
- 后端服务 - 用于监视实例的使用情况和运行状况。后端服务可检测实例组中的实例能否接收流量。如果实例无法接收流量,并且其他地方有未充分利用的实例,负载均衡器会将流量重定向到这些实例。
- 网址映射 - 用于解析请求的网址,且可根据请求网址的主机和路径将某些请求转发到特定的后端服务。在本例中,由于我们未使用基于内容的转发,因此网址映射将仅包含默认映射。
- 一个或多个 SSL 证书资源(如果您使用 HTTPS),其中包含负载均衡器的 SSL 证书信息。您可以使用多个 SSL 证书,但必须为每个证书创建一个 SSL 证书资源。
- 可选的 SSL 政策(如果您使用 HTTPS)。
- 目标代理 - 用于接收来自用户的请求并将其转发给网址映射。目标代理指的是利用 SSL 证书资源解密 SSL 流量的服务。目标代理可以通过 HTTP 或 HTTPS 将流量转发到您的实例。
- 两条全局转发规则(IPv4 和 IPv6 各一条)- 用于保留全局外部 IP 地址资源。全局转发规则将传入的请求转发到目标代理。
- 对于每个实例组,定义一个 HTTP 服务并将端口名称映射到相关端口上。
gcloud compute instance-groups unmanaged set-named-ports {{{project_0.default_region |REGION}}}-resources-w \
--named-ports http:80 \
--zone {{{project_0.default_zone |ZONE}}}
gcloud compute instance-groups unmanaged set-named-ports {{{project_0.default_region_2 |REGION 2}}}-resources-w \
--named-ports http:80 \
--zone {{{project_0.default_zone_2 |ZONE 2}}}
点击检查我的进度以验证是否完成了以下目标:
预留 IPV4 地址,创建实例组和健康检查
- 创建后端服务并指定参数。将
--protocol
字段设置为 HTTP
,因为我们使用 HTTP 来访问实例。对于健康检查,使用我们前面创建的 http-basic-check
健康检查。
gcloud compute backend-services create web-map-backend-service \
--protocol HTTP \
--health-checks http-basic-check \
--global
- 将您的实例组作为后端添加到后端服务。后端定义其包含的实例组的容量(最大 CPU 利用率或每秒最多查询次数)。在本例中,将均衡模式设置为 CPU 利用率,最大利用率为 80%,容量调节为 1。如果您希望排空后端服务,请将容量调节设置为 0:
gcloud compute backend-services add-backend web-map-backend-service \
--balancing-mode UTILIZATION \
--max-utilization 0.8 \
--capacity-scaler 1 \
--instance-group {{{project_0.default_region |REGION}}}-resources-w \
--instance-group-zone {{{project_0.default_zone |ZONE}}} \
--global
gcloud compute backend-services add-backend web-map-backend-service \
--balancing-mode UTILIZATION \
--max-utilization 0.8 \
--capacity-scaler 1 \
--instance-group {{{project_0.default_region_2 |REGION 2}}}-resources-w \
--instance-group-zone {{{project_0.default_zone_2 |ZONE 2}}} \
--global
点击检查我的进度以验证是否完成了以下目标:
创建后端服务并添加实例组
- 创建一个默认网址映射,用于将所有传入请求引导至您的所有实例。
gcloud compute url-maps create web-map \
--default-service web-map-backend-service
- 创建一个目标 HTTP 代理,以将请求路由到您的网址映射:
gcloud compute target-http-proxies create http-lb-proxy \
--url-map web-map
- 查找您为负载均衡器创建的静态 IP 地址。在下一步中会用到这些信息。
gcloud compute addresses list
- 创建一个 IPv4 全局转发规则,将传入请求路由到代理。将命令中的
[LB_IP_ADDRESS]
替换为您创建的静态 IPv4 地址:
gcloud compute forwarding-rules create http-cr-rule \
--address [LB_IP_ADDRESS] \
--global \
--target-http-proxy http-lb-proxy \
--ports 80
注意:创建全局转发规则后,配置传播可能需要几分钟时间。
点击检查我的进度以验证是否完成了以下目标:
创建网址映射和指向网址映射的目标 HTTP 代理
任务 4. 将流量发送到您的实例
您已经配置了负载均衡服务,接下来可以开始将流量发送到转发规则,并观察流量分发到不同的实例的情况。
- 查找全局转发规则的 IP 地址。
gcloud compute forwarding-rules list
- 在控制台中,搜索负载均衡并选择第一个结果。在“负载均衡”页面上,您会看到
web-map
行上有一个带对勾的绿色圆圈。

-
点击负载均衡器 (web-map
),查看详细信息。在页面的后端部分中,查看运行状况良好列,确认实例运行良好。界面显示实例运行状况良好可能需要一些时间。
-
当界面显示实例运行状况良好时,点击高级菜单,访问负载均衡器的详细信息。
-
在前端部分中,复制 IP 地址并将其粘贴到浏览器中,以显示实例组中离您最近的实例的默认内容。

负载均衡器会将您的请求转发到最近的可用实例。
在本实验中,您在 和 区域创建了实验实例,实例的响应取决于实验执行位置与这些区域的距离。
例如,如果您当前的地理位置离 us-central1 区域较近,您将收到来自 us-central1 区域实例的响应。
如需详细了解 Google Cloud 中的可用区和区域,请访问区域和可用区。
- 多次重新加载页面,由于负载均衡器在实例组的两个实例间交替转发请求,页面内容将动态变化。例如(您看到的实例顺序可能不同):
第 1 次重新加载:

第 2 次重新加载:

第 3 次重新加载:

第 4 次重新加载:

如果您用自签名证书进行测试,您的浏览器将显示警告。您需要在浏览器中手动信任证书。
注意:您应会看到离您最近的区域的响应。如果初始响应失败,可能需要等待几分钟使配置完全加载、实例标记为运行状况良好后重试。每次重新加载页面时都可能显示另一实例。如需模拟其他地理位置的用户,尝试使用网页代理发出请求。
任务 5. 关闭除负载均衡服务外所有来源的 HTTP 访问权限
- 一切正常运行后,修改防火墙规则,仅允许实例接收来自负载均衡服务的 HTTP(S) 流量。
gcloud compute firewall-rules create allow-lb-and-healthcheck \
--source-ranges 130.211.0.0/22,35.191.0.0/16 \
--target-tags http-tag \
--allow tcp:80
- 移除允许其他来源 HTTP(S) 流量的规则。
gcloud compute firewall-rules delete www-firewall
测试负载均衡器是否可以访问实例,而其他来源无法访问。
- 查找全局转发规则的 IP 地址。
gcloud compute addresses list
-
将 IP 地址复制并粘贴到浏览器中,确保转发正常运行。
-
找到各个实例的 IP 地址,并记下 EXTERNAL_IP
列中的地址。
gcloud compute instances list
- 将实例的地址复制并粘贴到浏览器中。
由于您移除了允许其他来源 HTTP(S) 流量的防火墙规则,访问会失败。实例仅接受来自 allow-lb-and-healthcheck
防火墙规则中定义的来源范围流量。
任务 6. (可选)移除堡垒主机外的外部 IP
HTTP 负载均衡使用目标的内部 IP,而不是外部 IP。负载均衡运行后,您可以从自己的负载均衡目标中移除外部 IP 来提高安全性,然后通过中间实例连接,在负载均衡实例上执行任务。这样,除了通过负载均衡器之外,VPC 网络外部的任何人都无法访问实例。
您的 VPC 网络中至少需要有一个包含外部 IP 地址的实例,通常是为此目的指定的实例。
如果您不小心删除了所有外部 IP 地址,可以使用 Google Cloud Platform 控制台创建新的 IP 地址。
从实例中移除外部 IP 地址。
- 运行以下命令,从实例中移除外部 IP 地址。记下
NAME
字段中显示的实例名称:
gcloud compute instances list
- 删除对实例的访问配置。对于
NAME
,输入实例的名称:
gcloud compute instances delete-access-config NAME
恭喜!
恭喜!在本实验中,您设置并测试了跨区域负载均衡功能。您还获得了使用 HTTP(S) 负载均衡配置跨区域负载均衡的实操经验。通过跨两个区域部署实例并配置负载均衡器来分配流量,您已经获得了使用 Google Cloud 确保应用具有高可用性和容错能力的实践知识。
Google Cloud 培训和认证
…可帮助您充分利用 Google Cloud 技术。我们的课程会讲解各项技能与最佳实践,可帮助您迅速上手使用并继续学习更深入的知识。我们提供从基础到高级的全方位培训,并有点播、直播和虚拟三种方式选择,让您可以按照自己的日程安排学习时间。各项认证可以帮助您核实并证明您在 Google Cloud 技术方面的技能与专业知识。
本手册的最后更新时间:2024 年 11 月 7 日
本实验的最后测试时间:2024 年 11 月 7 日
版权所有 2025 Google LLC 保留所有权利。Google 和 Google 徽标是 Google LLC 的商标。其他所有公司名和产品名可能是其各自相关公司的商标。