实验设置说明和要求
保护您的账号和进度。请务必在无痕浏览器窗口中,使用实验凭证运行此实验。

使用 NCC 建立 VPC 到 VPC 连接

实验 35 分钟 universal_currency_alt 5 个点数 show_chart 中级
info 此实验可能会提供 AI 工具来支持您学习。
此内容尚未针对移动设备进行优化。
为获得最佳体验,请在桌面设备上访问通过电子邮件发送的链接。

GSP1317

Google Cloud 自学实验

概览

Network Connectivity Center (NCC) 可用于通过 VPC spoke 在 VPC 之间大规模建立连接。如果 VPC 是指 VPC spoke,则多个 VPC 网络可通过 NCC Hub 进行连接。

NCC 是 Google Cloud 中网络连接管理的中心辐射型控制平面模型。hub 资源提供一个集中式连接管理模型,可实现 spoke 互连。

在本实验中,您将学习如何使用 gcloud 命令来配置 NCC hub,以及如何在控制台中查看更改。NCC hub 将充当控制平面,负责在每个 VPC Spoke 之间构建路由配置。您还需要设置 Private Service Connect 以连接到 Cloud SQL。

使用 NCC 的云到云网络图

学习内容

在本实验中,您将学习如何执行以下任务:

  • 使用 NCC 实现全网状 VPC 连接。
  • 设置 Private Service Connect。
  • 通过 spoke 发送流量,以验证与 Cloud SQL 的连接。

设置和要求

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

请阅读以下说明。实验是计时的,并且您无法暂停实验。计时器在您点击开始实验后即开始计时,显示 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 概览指南

准备工作

在本实验中,您需要在这两个项目之间多次切换。确保您位于正确的项目中。使用 2 个 cloudshell 窗口(每个项目一个)会很有帮助。

启用 Network Connectivity API

在使用 Network Connectivity Center 执行任何任务之前,您需要先通过运行以下命令启用 Network Connectivity API:

gcloud services enable networkconnectivity.googleapis.com

验证现有 Google Cloud 资源

在本实验中,系统已为您构建了网络资源。现在花一分钟时间查看可用的 VPC 网络和虚拟机。您可以使用 Google Cloud 控制台或命令行来查看这些资源。

您会看到自己拥有:

  • 2 个 VPC
  • 已启用 Private Service Connect 的 Cloud SQL Postgres 实例

配置数据传输连接

如需设置数据传输连接,您可以使用 NCC 构建 hub 和 spoke,以允许通过 Google Cloud 将数据从一个站点传输到另一个站点。

任务 1. 创建 hub

  1. 运行以下命令以创建 NCC hub:
gcloud network-connectivity hubs create ncc-hub
  1. 描述新创建的 NCC hub。
gcloud network-connectivity hubs describe ncc-hub

点击检查我的进度,验证已完成以下目标: 创建 NCC hub。

任务 2. 将 VPC 配置为 NCC spoke

管理员可以排除子网路由,防止其从 VPC spoke 导出到 NCC hub 的路由表。您将创建一个基于汇总前缀的排除导出规则,以防 VPC1 的子网导出到 NCC hub 路由表中。

  1. 使用以下 gcloud 命令列出属于 VPC1 的所有子网。
gcloud config set accessibility/screen_reader false gcloud compute networks subnets list --network=vpc1-ncc
  1. 将 VPC1 配置为 NCC spoke,然后使用 export-exclude-ranges 关键字来过滤该特定范围内的 /24 汇总路由,从而防止将这对 /25 子网导入到 hub 路由表中:
gcloud network-connectivity spokes linked-vpc-network create vpc1-spoke1 \ --hub=ncc-hub \ --vpc-network=vpc1-ncc \ --exclude-export-ranges=10.1.2.0/24 \ --global
  1. 列出 NCC hub 默认路由表的内容。
gcloud network-connectivity hubs route-tables routes list --hub=ncc-hub --route_table=default --filter="NEXT_HOP:vpc1-ncc"
  1. 将 VPC2 配置为 NCC spoke:
gcloud network-connectivity spokes linked-vpc-network create vpc2-spoke2 \ --hub=ncc-hub \ --vpc-network=vpc2-ncc \ --exclude-export-ranges=10.3.3.0/24 \ --global
  1. 列出 NCC hub 默认路由表的内容并检查输出结果。
gcloud network-connectivity hubs route-tables routes list --hub=ncc-hub --route_table=default

点击检查我的进度,验证已完成以下目标: 将 VPC 配置为 NCC spoke。

任务 3. 验证 IPv4 数据路径连接

  1. 依次点击 Compute Engine > 虚拟机实例,然后通过 SSH 连接到 vm1-vpc1-ncc。运行以下命令以启动 TCP 转储,从而跟踪来自 vm2-vpc2-ncc 的 ICMP 数据包。请注意,此虚拟机位于 VPC2 上。

vm1-vpc1-ncc

sudo tcpdump -i any icmp -v -e -n
  1. 建立 SSH 会话以连接到 vm2-vpc2-ncc,并与 vm1-vpc1-ncc 的 IP 地址建立 ping 连接。

vm2-vpc2-ncc

ping 10.1.1.2

任务 4. 设置 Private Service Connect

借助 Private Service Connect (PSC) 功能,您可以使用自己的内部 IP 地址在虚拟私有云 (VPC) 网络之间实现私密且安全的通信。

预留内部 IP 地址

  1. 在环境变量 REGION 所指定的 Google Cloud 区域中查找 VPC 子网的 CIDR 范围,并为 Private Service Connect 端点选择一个此 CIDR 范围内的可用 IP 地址。
gcloud compute networks subnets describe vpc2-ncc-subnet1 \ --region={{{project_0.default_region | REGION}}} \ --project={{{project_0.project_id|PROJECT_ID}}} \ --format="value(ipCidrRange)"
  1. 在上述派生的 VPC 子网 CIDR 范围内,为 Private Service Connect 端点预留一个内部 IP 地址。

[ADDRESS] 替换为之前的命令输出中 CIDR 范围内的 IP 地址。

gcloud compute addresses create cloudsql-psc \ --project={{{project_0.project_id|PROJECT_ID}}} \ --region={{{project_0.default_region | REGION}}} \ --subnet=vpc2-ncc-subnet1 \ --addresses=[ADDRESS] 注意:如果您看到以下错误消息:“Could not fetch resource: IP 'X.X.X.X' is already being used by another resource”(无法获取资源:IP 'X.X.X.X' 已被其他资源占用),请尝试使用同一 CIDR 范围内的其他 IP 地址。此外,请依次点击 Compute Engine > 虚拟机实例,并使用与 vm2-vpc2-ncccloudsql-client 虚拟机实例的内部 IP 不同的 IP 地址。
  1. 验证是否已预留内部 IP 地址,以及该 IP 地址是否显示为“已预留”状态。请留意 [ADDRESS/RANGE],后续步骤中需要用到它。
gcloud compute addresses list \ --project={{{project_0.project_id|PROJECT_ID}}} \ --filter="name=cloudsql-psc"

获取服务连接 URI

创建 Cloud SQL 实例并为该实例启用 Private Service Connect 后,获取服务连接 URI 并使用它来创建具有上述预留内部 IP 地址的 Private Service Connect 端点。

gcloud sql instances describe {{{project_0.startup_script.postgres-instance}}} \ --project={{{project_0.project_id|PROJECT_ID}}} \ --format="value(pscServiceAttachmentLink)"

创建 Private Service Connect

  1. 创建 Private Service Connect 端点并将其指向 Cloud SQL 服务连接 URI。

[Service_Attachment_URI] 替换为之前的命令输出中的服务连接 URI。

gcloud compute forwarding-rules create cloudsql-psc-ep \ --address=cloudsql-psc \ --project={{{project_0.project_id|PROJECT_ID}}} \ --region={{{project_0.default_region | REGION}}} \ --network=vpc2-ncc \ --target-service-attachment=[Service_Attachment_URI] \ --allow-psc-global-access
  1. 验证端点是否可以连接到服务连接。
gcloud compute forwarding-rules describe cloudsql-psc-ep \ --project={{{project_0.project_id|PROJECT_ID}}} \ --region={{{project_0.default_region | REGION}}} \ --format="value(pscConnectionStatus)"

配置 DNS 托管式区域

如需为 Cloud SQL 实例添加建议的 DNS 名称,最好在相应 VPC 网络中创建专用 DNS 区域。

gcloud dns managed-zones create cloudsql-dns \ --project={{{project_0.project_id|PROJECT_ID}}} \ --description="DNS zone for the Cloud SQL instances" \ --dns-name={{{project_0.default_region | REGION}}}.sql.goog. \ --networks=vpc2-ncc \ --visibility=private

为 Private Service Connect 添加 DNS 记录

  1. 获取 Cloud SQL 实例的建议 DNS 记录。
gcloud sql instances describe {{{project_0.startup_script.postgres-instance}}} \ --project={{{project_0.project_id|PROJECT_ID}}} \ --format="value(dnsName)"

在输出中,找到下一步中所需的 DNS 记录。

  1. 将建议的 DNS 记录添加到 DNS 托管式区域

[DNS_RECORD] 替换为建议的 DNS 记录,并将 [ADDRESS/RANGE] 替换为如上所述之前命令的输出。

gcloud dns record-sets create [DNS_RECORD] \ --project={{{project_0.project_id|PROJECT_ID}}} \ --type=A \ --rrdatas=[ADDRESS/RANGE] \ --zone=cloudsql-dns

点击检查我的进度,验证已完成以下目标: 设置 Private Service Connect。

任务 5. 通过 Private Service Connect 连接到 Cloud SQL

  1. 连接到 cloudsql-client 虚拟机实例。
gcloud compute ssh --zone {{{project_0.default_zone | ZONE}}} "cloudsql-client" \ --tunnel-through-iap --project {{{project_0.project_id|PROJECT_ID}}}
  1. 连接到该实例,替换 [DNS_RECORD],并使用 changeme 作为密码。
psql "sslmode=disable dbname=postgres user=postgres host=[DNS_RECORD]"
  1. 创建一个数据库:
CREATE DATABASE company;
  1. 现在,列出所有数据库:
\l
  1. 连接到员工数据库:
\c company
  1. 在公司数据库中创建表:
CREATE TABLE employees ( id SERIAL PRIMARY KEY, first VARCHAR(255) NOT NULL, last VARCHAR(255) NOT NULL, salary DECIMAL (10, 2) );
  1. 将数据插入公司数据库的员工表中:
INSERT INTO employees (first, last, salary) VALUES ('Max', 'Mustermann', 5000.00), ('Anna', 'Schmidt', 7000.00), ('Peter', 'Mayer', 6000.00);
  1. 查询员工表:
SELECT * FROM employees;
  1. 退出 Postgres 数据库和虚拟机并返回到 Cloud Shell:
\q exit

点击检查我的进度,验证已完成以下目标: 通过 Private Service Connect 连接到 Cloud SQL。

任务 6. 删除资源

在生产环境中,您需要删除不使用的资源,以免产生费用。在本实验中,您将学习移除 spoke 和 hub 的简单步骤:

删除 spoke 和 hub

  1. 删除 NCC spoke:
gcloud network-connectivity spokes delete vpc1-spoke1 --global --quiet gcloud network-connectivity spokes delete vpc2-spoke2 --global --quiet
  1. 删除 NCC hub:
gcloud network-connectivity hubs delete ncc-hub --quiet
  1. 删除 DNS 记录
gcloud dns record-sets delete [DNS_RECORD] \ --project={{{project_0.project_id|PROJECT_ID}}} \ --type=A \ --zone=cloudsql-dns
  1. 删除 DNS 托管式区域:
gcloud dns managed-zones delete cloudsql-dns \ --project={{{project_0.project_id|PROJECT_ID}}} \ --quiet

恭喜!

您已了解如何使用 Network Connectivity Center 为现有 Google Cloud 资源构建 hub 和 spoke,并验证了数据是否可以通过 NCC 使用 NIC 进行传输。

Google Cloud 培训和认证

…可帮助您充分利用 Google Cloud 技术。我们的课程会讲解各项技能与最佳实践,可帮助您迅速上手使用并继续学习更深入的知识。我们提供从基础到高级的全方位培训,并有点播、直播和虚拟三种方式选择,让您可以按照自己的日程安排学习时间。各项认证可以帮助您核实并证明您在 Google Cloud 技术方面的技能与专业知识。

本手册的最后更新时间:2025 年 6 月 12 日

本实验的最后测试时间:2025 年 6 月 12 日

版权所有 2026 Google LLC 保留所有权利。Google 和 Google 徽标是 Google LLC 的商标。其他所有公司名和产品名可能是其各自相关公司的商标。

准备工作

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

使用无痕浏览模式

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

登录控制台

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

此内容目前不可用

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

太好了!

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

一次一个实验

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

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

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