正在加载…
未找到任何结果。

在 Google Cloud 控制台中运用您的技能

访问 700 多个实验和课程

创建跨区域负载均衡

实验 45 分钟 universal_currency_alt 5 个积分 show_chart 中级
info 此实验可能会提供 AI 工具来支持您学习。
访问 700 多个实验和课程

GSP157

Google Cloud 自学实验的徽标

概览

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

下图显示了创建资源的连接方式:

负载均衡架构图

设置

点击“开始实验”按钮前的注意事项

请阅读以下说明。实验是计时的,并且您无法暂停实验。计时器在您点击开始实验后即开始计时,显示 Google Cloud 资源可供您使用多长时间。

此实操实验可让您在真实的云环境中开展实验活动,免受模拟或演示环境的局限。为此,我们会向您提供新的临时凭据,您可以在该实验的规定时间内通过此凭据登录和访问 Google Cloud。

为完成此实验,您需要:

  • 能够使用标准的互联网浏览器(建议使用 Chrome 浏览器)。
注意:请使用无痕模式(推荐)或无痕浏览器窗口运行此实验。这可以避免您的个人账号与学生账号之间发生冲突,这种冲突可能导致您的个人账号产生额外费用。
  • 完成实验的时间 - 请注意,实验开始后无法暂停。
注意:请仅使用学生账号完成本实验。如果您使用其他 Google Cloud 账号,则可能会向该账号收取费用。

如何开始实验并登录 Google Cloud 控制台

  1. 点击开始实验按钮。如果该实验需要付费,系统会打开一个对话框供您选择支付方式。左侧是“实验详细信息”窗格,其中包含以下各项:

    • “打开 Google Cloud 控制台”按钮
    • 剩余时间
    • 进行该实验时必须使用的临时凭据
    • 帮助您逐步完成本实验所需的其他信息(如果需要)
  2. 点击打开 Google Cloud 控制台(如果您使用的是 Chrome 浏览器,请右键点击并选择在无痕式窗口中打开链接)。

    该实验会启动资源并打开另一个标签页,显示“登录”页面。

    提示:将这些标签页安排在不同的窗口中,并排显示。

    注意:如果您看见选择账号对话框,请点击使用其他账号
  3. 如有必要,请复制下方的用户名,然后将其粘贴到登录对话框中。

    {{{user_0.username | "<用户名>"}}}

    您也可以在“实验详细信息”窗格中找到“用户名”。

  4. 点击下一步

  5. 复制下面的密码,然后将其粘贴到欢迎对话框中。

    {{{user_0.password | "<密码>"}}}

    您也可以在“实验详细信息”窗格中找到“密码”。

  6. 点击下一步

    重要提示:您必须使用实验提供的凭据。请勿使用您的 Google Cloud 账号凭据。 注意:在本实验中使用您自己的 Google Cloud 账号可能会产生额外费用。
  7. 继续在后续页面中点击以完成相应操作:

    • 接受条款及条件。
    • 由于这是临时账号,请勿添加账号恢复选项或双重验证。
    • 请勿注册免费试用。

片刻之后,系统会在此标签页中打开 Google Cloud 控制台。

注意:如需访问 Google Cloud 产品和服务,请点击导航菜单,或在搜索字段中输入服务或产品的名称。 “导航菜单”图标和“搜索”字段

激活 Cloud Shell

Cloud Shell 是一种装有开发者工具的虚拟机。它提供了一个永久性的 5GB 主目录,并且在 Google Cloud 上运行。Cloud Shell 提供可用于访问您的 Google Cloud 资源的命令行工具。

  1. 点击 Google Cloud 控制台顶部的激活 Cloud Shell “激活 Cloud Shell”图标

  2. 在弹出的窗口中执行以下操作:

    • 继续完成 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 自动补全功能。

  1. (可选)您可以通过此命令列出活跃账号名称:
gcloud auth list
  1. 点击授权

输出:

ACTIVE: * ACCOUNT: {{{user_0.username | "ACCOUNT"}}} To set the active account, run: $ gcloud config set account `ACCOUNT`
  1. (可选)您可以通过此命令列出项目 ID:
gcloud config list project

输出:

[core] project = {{{project_0.project_id | "PROJECT_ID"}}} 注意:如需查看在 Google Cloud 中使用 gcloud 的完整文档,请参阅 gcloud CLI 概览指南

下列说明假定您使用的是自动模式 VPC 网络或旧版网络。如果您使用的是自定义模式 VPC 网络,则需要在创建实例等步骤中指定子网范围。

任务 1. 配置实例

在两个不同的区域中创建虚拟机实例,以接收从负载均衡器转发的流量。配置虚拟机实例以进行测试,并为所有实例提供相同的标记。防火墙规则将使用该标记来允许传入流量。

启动脚本会安装 Apache 并为每个实例创建唯一首页。

  1. 区域中创建两个实例:
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}}}"

点击检查我的进度以验证是否完成了以下目标:

为主要区域配置实例
  1. 区域中创建两个实例:
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}}}"

点击检查我的进度以验证是否完成了以下目标:

为次要区域配置实例
  1. 创建一条防火墙规则,允许外部流量进入虚拟机实例。此规则允许来自所有来源的流量,便于调整和测试配置。

防火墙规则使用您先前创建的 http-tag 标记。该防火墙规则允许流量通过指定端到达带有该标记的实例:

gcloud compute firewall-rules create www-firewall \ --target-tags http-tag --allow tcp:80
  1. 验证实例是否正在运行。列出您的实例,并从 EXTERNAL_IP 列中获取实例的 IP 地址。
gcloud compute instances list
  1. 复制每个实例的外部 IP,并将其粘贴到新的浏览器标签页中,测试实例是否正在运行,检查 Web 服务器是否已正确配置,并确认能否通过打开的防火墙端口响应默认主页。

任务 2. 配置服务以实现负载均衡

您的实例已启动并正在运行,需要设置负载均衡所需的服务。创建:

  • 全局静态外部 IP 地址,客户用来连接负载均衡器的外部 IP 地址。
  • 实例组,用于保存您的实例。
  • 健康检查 - 用于轮询您的实例,以查看其健康状况是否良好。负载均衡器仅向运行状况良好的实例发送流量。

要配置这些服务,请执行以下步骤:

  1. 为负载均衡器创建 IPv4 全局静态外部 IP 地址:
gcloud compute addresses create lb-ip-cr \ --ip-version=IPV4 \ --global
  1. 为每个可用区创建一个实例组。
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}}}
  1. 将您先前创建的实例添加到实例组中。
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}}}
  1. 创建健康检查
gcloud compute health-checks create http http-basic-check

任务 3. 配置负载均衡服务

负载均衡涉及多项关联的服务。在本部分,您将设置并连接这些服务。

  • 已命名端口 - 负载均衡器使用这些端口将流量导向您的实例组。
  • 后端服务 - 用于监视实例的使用情况和运行状况。后端服务可检测实例组中的实例能否接收流量。如果实例无法接收流量,并且其他地方有未充分利用的实例,负载均衡器会将流量重定向到这些实例。
  • 网址映射 - 用于解析请求的网址,且可根据请求网址的主机和路径将某些请求转发到特定的后端服务。在本例中,由于我们未使用基于内容的转发,因此网址映射将仅包含默认映射。
  • 一个或多个 SSL 证书资源(如果您使用 HTTPS),其中包含负载均衡器的 SSL 证书信息。您可以使用多个 SSL 证书,但必须为每个证书创建一个 SSL 证书资源。
  • 可选的 SSL 政策(如果您使用 HTTPS)。
  • 目标代理 - 用于接收来自用户的请求并将其转发给网址映射。目标代理指的是利用 SSL 证书资源解密 SSL 流量的服务。目标代理可以通过 HTTP 或 HTTPS 将流量转发到您的实例。
  • 两条全局转发规则(IPv4 和 IPv6 各一条)- 用于保留全局外部 IP 地址资源。全局转发规则将传入的请求转发到目标代理。
  1. 对于每个实例组,定义一个 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 地址,创建实例组和健康检查
  1. 创建后端服务并指定参数。将 --protocol 字段设置为 HTTP,因为我们使用 HTTP 来访问实例。对于健康检查,使用我们前面创建的 http-basic-check 健康检查。
gcloud compute backend-services create web-map-backend-service \ --protocol HTTP \ --health-checks http-basic-check \ --global
  1. 将您的实例组作为后端添加到后端服务。后端定义其包含的实例组的容量(最大 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

点击检查我的进度以验证是否完成了以下目标:

创建后端服务并添加实例组
  1. 创建一个默认网址映射,用于将所有传入请求引导至您的所有实例。
gcloud compute url-maps create web-map \ --default-service web-map-backend-service
  1. 创建一个目标 HTTP 代理,以将请求路由到您的网址映射:
gcloud compute target-http-proxies create http-lb-proxy \ --url-map web-map
  1. 查找您为负载均衡器创建的静态 IP 地址。在下一步中会用到这些信息。
gcloud compute addresses list
  1. 创建一个 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. 将流量发送到您的实例

您已经配置了负载均衡服务,接下来可以开始将流量发送到转发规则,并观察流量分发到不同的实例的情况。

  1. 查找全局转发规则的 IP 地址。
gcloud compute forwarding-rules list
  1. 在控制台中,搜索负载均衡并选择第一个结果。在“负载均衡”页面上,您会看到 web-map 行上有一个带对勾的绿色圆圈。

显示 web-map 行的“负载均衡”页面。

  1. 点击负载均衡器 (web-map),查看详细信息。在页面的后端部分中,查看运行状况良好列,确认实例运行良好。界面显示实例运行状况良好可能需要一些时间。

  2. 当界面显示实例运行状况良好时,点击高级菜单,访问负载均衡器的详细信息。

  3. 前端部分中,复制 IP 地址并将其粘贴到浏览器中,以显示实例组中离您最近的实例的默认内容。

“负载均衡详情”页面,其中突出显示了 IP 端口

负载均衡器会将您的请求转发到最近的可用实例。

在本实验中,您在 区域创建了实验实例,实例的响应取决于实验执行位置与这些区域的距离。

例如,如果您当前的地理位置离 us-central1 区域较近,您将收到来自 us-central1 区域实例的响应。

如需详细了解 Google Cloud 中的可用区和区域,请访问区域和可用区

  1. 多次重新加载页面,由于负载均衡器在实例组的两个实例间交替转发请求,页面内容将动态变化。例如(您看到的实例顺序可能不同):

第 1 次重新加载:

页面显示 www-1

第 2 次重新加载:

页面显示 www-2

第 3 次重新加载:

页面显示 www-2

第 4 次重新加载:

页面显示 www-1

如果您用自签名证书进行测试,您的浏览器将显示警告。您需要在浏览器中手动信任证书。

注意:您应会看到离您最近的区域的响应。如果初始响应失败,可能需要等待几分钟使配置完全加载、实例标记为运行状况良好后重试。每次重新加载页面时都可能显示另一实例。如需模拟其他地理位置的用户,尝试使用网页代理发出请求。

任务 5. 关闭除负载均衡服务外所有来源的 HTTP 访问权限

  1. 一切正常运行后,修改防火墙规则,仅允许实例接收来自负载均衡服务的 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
  1. 移除允许其他来源 HTTP(S) 流量的规则。
gcloud compute firewall-rules delete www-firewall

测试负载均衡器是否可以访问实例,而其他来源无法访问。

  1. 查找全局转发规则的 IP 地址。
gcloud compute addresses list
  1. 将 IP 地址复制并粘贴到浏览器中,确保转发正常运行。

  2. 找到各个实例的 IP 地址,并记下 EXTERNAL_IP 列中的地址。

gcloud compute instances list
  1. 将实例的地址复制并粘贴到浏览器中。

由于您移除了允许其他来源 HTTP(S) 流量的防火墙规则,访问会失败。实例仅接受来自 allow-lb-and-healthcheck 防火墙规则中定义的来源范围流量。

任务 6. (可选)移除堡垒主机外的外部 IP

HTTP 负载均衡使用目标的内部 IP,而不是外部 IP。负载均衡运行后,您可以从自己的负载均衡目标中移除外部 IP 来提高安全性,然后通过中间实例连接,在负载均衡实例上执行任务。这样,除了通过负载均衡器之外,VPC 网络外部的任何人都无法访问实例。

您的 VPC 网络中至少需要有一个包含外部 IP 地址的实例,通常是为此目的指定的实例。

如果您不小心删除了所有外部 IP 地址,可以使用 Google Cloud Platform 控制台创建新的 IP 地址。

从实例中移除外部 IP 地址。

  1. 运行以下命令,从实例中移除外部 IP 地址。记下 NAME 字段中显示的实例名称:
gcloud compute instances list
  1. 删除对实例的访问配置。对于 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 的商标。其他所有公司名和产品名可能是其各自相关公司的商标。

准备工作

  1. 实验会创建一个 Google Cloud 项目和一些资源,供您使用限定的一段时间
  2. 实验有时间限制,并且没有暂停功能。如果您中途结束实验,则必须重新开始。
  3. 在屏幕左上角,点击开始实验即可开始

使用无痕浏览模式

  1. 复制系统为实验提供的用户名密码
  2. 在无痕浏览模式下,点击打开控制台

登录控制台

  1. 使用您的实验凭证登录。使用其他凭证可能会导致错误或产生费用。
  2. 接受条款,并跳过恢复资源页面
  3. 除非您已完成此实验或想要重新开始,否则请勿点击结束实验,因为点击后系统会清除您的工作并移除该项目

此内容目前不可用

一旦可用,我们会通过电子邮件告知您

太好了!

一旦可用,我们会通过电子邮件告知您

一次一个实验

确认结束所有现有实验并开始此实验

使用无痕浏览模式运行实验

请使用无痕模式或无痕式浏览器窗口运行此实验。这可以避免您的个人账号与学生账号之间发生冲突,这种冲突可能导致您的个人账号产生额外费用。