使用 VPN spoke 连接两个站点

本教程介绍如何使用 Network Connectivity Center Hub 和 Cloud VPN Spoke 设置两个分支办公室之间的数据传输

如需详细了解如何创建 Hub 和 Spoke,请参阅使用 Hub 和 Spoke

准备工作

在开始之前,请查看以下部分。

创建或选择项目

为了更轻松地配置 Network Connectivity Center,请先确定有效项目。

  1. 登录您的 Google Cloud 账号。如果您是 Google Cloud 新手,请创建一个账号来评估我们的产品在实际场景中的表现。新客户还可获享 $300 赠金,用于运行、测试和部署工作负载。
  2. 在 Google Cloud Console 中的项目选择器页面上,选择或创建一个 Google Cloud 项目

    转到“项目选择器”

  3. 确保您的 Google Cloud 项目已启用结算功能

  4. 安装 Google Cloud CLI。
  5. 如需初始化 gcloud CLI,请运行以下命令:

    gcloud init
  6. 在 Google Cloud Console 中的项目选择器页面上,选择或创建一个 Google Cloud 项目

    转到“项目选择器”

  7. 确保您的 Google Cloud 项目已启用结算功能

  8. 安装 Google Cloud CLI。
  9. 如需初始化 gcloud CLI,请运行以下命令:

    gcloud init
  1. 如果您使用的是 Google Cloud CLI,请使用 gcloud config set 命令设置项目 ID。

    gcloud config set project PROJECT_ID

    PROJECT_ID 替换为您的唯一项目 ID。

    此页面上的 gcloud CLI 说明假定您已设置项目 ID。

  1. 如需确认您正确设置了项目 ID,请使用 gcloud config list 命令

    gcloud config list --format='text(core.project)'

标识资源的惯例

使用 gcloud CLI 或 API 引用资源时,请使用下表中所述的惯例。

会展 支持 备注 示例
完整 URI 所有资源 您必须使用这些方法之一来引用路由器设备实例。

"https://www.googleapis.com/compute/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME"

      
相对资源名称 所有资源

"projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME"

    
名称 区域和全球资源 此方法可用于 Hub、Spoke 和 VPN 隧道以及 VLAN 连接。

 "HUB_NAME"

    

示例拓扑

下图介绍了本教程中使用的示例资源。

Network Connectivity Center 教程的拓扑。
Network Connectivity Center 教程的拓扑(点击可放大)


配置数据传输连接

如要设置数据传输连接,请按以下步骤操作:

  1. 创建 Google Cloud 资源,例如 Virtual Private Cloud (VPC) 网络、高可用性 VPN 网关和隧道以及 Cloud Router 路由器。
  2. 创建 Hub
  3. 第一个第二个分支办公室定义 Spoke。每个 Spoke 都应使用 VPN 隧道作为其底层资源。
  4. 验证配置

创建 Google Cloud 资源

本教程假定您已经创建了以下 Google Cloud 资源:

  • 动态路由模式设置为 global 的 VPC 网络。
  • 在离 Office1 最近的区域中的子网、高可用性 VPN 网关、Cloud Router 路由器,以及将网关接口连接到 Office1 的隧道
  • 在离 Office2 最近的区域中的子网、高可用性 VPN 网关、Cloud Router 路由器,以及将网关接口连接到 Office2 的隧道

如果您需要创建这些资源,请参阅以下文档:

确定现有 Google Cloud 资源或创建新资源后,请继续下一部分。

创建 hub

首先,您需要创建一个 Hub。稍后,您将 Spoke 连接到此 Hub。

控制台

  1. 在 Google Cloud 控制台中,转到 Network Connectivity Center 页面。

    转到 Network Connectivity Center

  2. 在项目下拉菜单中,选择一个项目(在示例图中,项目为 my-project)。

  3. 输入 Hub 名称(本例中为 my-hub)。

  4. 输入可选说明

  5. 验证项目 ID。如果项目 ID 不正确,请使用屏幕顶部的下拉菜单选择其他项目。

  6. 点击继续

  7. 如需将 Office1 添加到 Hub,请继续为 Office 1 创建 Spoke

gcloud

如需创建 Hub,请使用 gcloud network-connectivity hubs create 命令

  gcloud network-connectivity hubs create HUB_NAME \
     --description="DESCRIPTION" \
     --labels="KEY"="VALUE"

替换以下值:

  • HUB_NAME:新 Hub 的名称(在本例中为 my-hub
  • DESCRIPTION:用于描述该 Hub 的可选文本
  • KEY:可选标签文本的键值对中的键
  • VALUE:可选标签文本的键值对中的值

如需将 Office1 添加到 Hub,请继续为 Office 1 创建 Spoke

API

如要创建 Hub,请使用 networkconnectivity.hubs.create 方法

  POST https://networkconnectivity.googleapis.com/v1/projects/PROJECT_ID/locations/global/hubs
  {
    "name":"HUB_NAME",
    "description":"DESCRIPTION",
    "labels": {
      "KEY": "VALUE"
    }
  }

替换以下值:

  • PROJECT_ID:包含新 Hub 的项目的 ID,例如 my-project
  • HUB_NAME:新 Hub 的名称,例如 my-hub
  • DESCRIPTION:用于描述该 Hub 的可选文本
  • KEY:可选标签文本的键值对中的键
  • VALUE:可选标签文本的键值对中的值

如需将 Office1 添加到 Hub,请继续为 Office 1 创建 Spoke

为 Office 1 创建 Spoke

Office1 创建 spoke。使用两个高可用性 VPN 隧道作为 Spoke 的底层资源。每个隧道都应源自距离办公室最近的区域中的高可用性 VPN 网关。在示例图中,这些隧道表示为 vpn-tunnel1-office1vpn-tunnel2-office1

控制台

创建 Hub 继续执行以下步骤。它们介绍了如何在指定 Hub 名称和说明后立即创建 Spoke。

  1. 新 spoke 表单中,将 Spoke 类型字段设置为 VPN 隧道
  2. 输入 Spoke 名称,在本例中为 office-1-spoke
  3. (可选)输入 Spoke 的说明
  4. 选择 spoke 的区域;在示例图中,spoke 位于 us-west1
  5. 站点到站点数据传输下,选择开启
  6. 选择相应的 VPC 网络;在示例图中,spoke 位于 network-a
  7. 选择 VPN 隧道。如果适用,点击添加隧道以添加其他 VPN 隧道字段。示例图中使用了两个隧道:vpn-tunnel1-office1vpn-tunnel2-office1。添加完隧道后,点击完成
  8. 点击创建

Network Connectivity Center 页面会更新,以显示您创建的 Spoke 的详细信息。如需将 Office2 添加到 Hub,请继续为 Office 2 创建 Spoke

gcloud

如需创建 Spoke,请使用 gcloud network-connectivity spokes linked-vpn-tunnels create 命令

  gcloud network-connectivity spokes linked-vpn-tunnels create SPOKE_NAME \
    --hub=HUB_NAME \
    --description="DESCRIPTION" \
    --vpn-tunnels=TUNNEL_NAME,TUNNEL_NAME_2 \
    --region=REGION \
    --labels="KEY"="VALUE" \
    --site-to-site-data-transfer

替换以下值:

  • SPOKE_NAME:Spoke 的名称(在本例中为 office-1-spoke
  • HUB_NAME:您要向其挂接 Spoke 的 Hub 的名称(在本例中为 my-hub
  • DESCRIPTION:描述该 spoke 的可选文本
  • TUNNEL_NAME:第一个高可用性 VPN 隧道的名称,在本例中为 vpn-tunnel1-office1
  • TUNNEL_NAME_2:冗余隧道的名称,在本例中为 vpn-tunnel2-office1;包含第二个隧道时,请勿在英文逗号与第二个隧道的名称之间使用空格
  • REGION:spoke 所在的 Google Cloud 区域,在本例中为 us-west1
  • KEY:可选标签文本的键值对中的键
  • VALUE:可选标签文本的键值对中的值

如需将 Office2 添加到 Hub,请继续为 Office 2 创建 Spoke

API

如需创建 Spoke,请使用 networkconnectivity.spokes.create 方法

  POST https://networkconnectivity.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/spokes/SPOKE_NAME
  {
    "hub": "HUB_NAME",
    "labels": {"KEY": "VALUE"},
    "linkedVpnTunnels": {
      "uris: [
        "TUNNEL_NAME",
        "TUNNEL_NAME_2"
      ],
      "siteToSiteDataTransfer": true
    }
  }

替换以下值:

  • PROJECT_ID:您的项目的 ID
  • REGION:您希望 Spoke 所在的 Google Cloud 区域,在本例中为 us-west1
  • SPOKE_NAME:Spoke 的名称
  • HUB_NAME:您要将 Spoke 连接到的 Hub 的名称
  • KEY:可选标签文本的键值对中的键
  • VALUE:可选标签文本的键值对中的值
  • TUNNEL_NAME:第一个高可用性 VPN 隧道的名称,在本例中为 vpn-tunnel1-office1
  • TUNNEL_NAME_2:冗余隧道的名称,在本例中为 vpn-tunnel2-office1;包含第二个隧道时,请勿在英文逗号与第二个隧道的名称之间使用空格

为 Office 2 创建 Spoke

Office2 创建 spoke。使用两个高可用性 VPN 隧道作为 Spoke 的底层资源。每个隧道都应源自距离办公室最近的区域中的高可用性 VPN 网关。在示例图中,这些隧道表示为 vpn-tunnel1-office2vpn-tunnel2-office2

控制台

如需创建第二个 Spoke,请执行以下操作:

  1. 转到 Network Connectivity Center 页面。

    转到 Network Connectivity Center

  2. 在项目下拉菜单中,选择一个项目(在示例图中,项目为 my-project)。

  3. 点击 Spoke 标签页。

  4. 点击添加 Spoke 以打开添加 Spoke 页面。

  5. 新 spoke 表单中,将 Spoke 类型字段设置为 VPN 隧道

  6. 输入 Spoke 名称,在本例中为 office-2-spoke

  7. (可选)输入 Spoke 的说明

  8. 选择 spoke 的区域;在示例图中,spoke 位于 us-east1

  9. 站点到站点数据传输下,选择开启

  10. 验证 VPC 网络字段是否设置为与上次创建的 spoke 相同的网络,在示例图中为 network-a

  11. 选择 VPN 隧道。如果适用,点击添加隧道以添加其他 VPN 隧道字段。示例图中使用了两个隧道:vpn-tunnel1-office2vpn-tunnel2-office2。添加完隧道后,点击完成

  12. 点击创建

gcloud

如需创建 Spoke,请使用 gcloud network-connectivity spokes linked-vpn-tunnels create 命令

  gcloud network-connectivity spokes linked-vpn-tunnels create SPOKE_NAME \
    --hub=HUB_NAME \
    --description="DESCRIPTION" \
    --vpn-tunnels=TUNNEL_NAME,TUNNEL_NAME_2 \
    --region=REGION \
    --labels="KEY"="VALUE" \
    --site-to-site-data-transfer

替换以下值:

  • SPOKE_NAME:Spoke 的名称(在本例中为 office-2-spoke
  • HUB_NAME:您要向其挂接 Spoke 的 Hub 的名称(在本例中为 my-hub
  • DESCRIPTION:描述该 spoke 的可选文本
  • TUNNEL_NAME:第一个高可用性 VPN 隧道的名称,在本例中为 vpn-tunnel1-office2
  • TUNNEL_NAME_2:冗余隧道的名称,在本例中为 vpn-tunnel2-office2;包含第二个隧道时,请勿在英文逗号与第二个隧道的名称之间使用空格
  • REGION:Spoke 所在的 Google Cloud 区域,在本例中为 us-east1
  • KEY:可选标签文本的键值对中的键
  • VALUE:可选标签文本的键值对中的值

    如需将 Office2 添加到 Hub,请继续为 Office 2 创建 Spoke

API

如需创建 Spoke,请使用 networkconnectivity.spokes.create 方法

  POST https://networkconnectivity.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/spokes/SPOKE_NAME
  {
    "hub": "HUB_NAME",
    "labels": {"KEY": "VALUE"},
    "linkedVpnTunnels": {
      "uris": [
        "TUNNEL_NAME",
        "TUNNEL_NAME_2"
      ],
      "siteToSiteDataTransfer": true
    }
  }

替换以下值:

  • PROJECT_ID:您的项目的 ID
  • REGION:您希望 Spoke 所在的 Google Cloud 区域,在本例中为 us-east1
  • SPOKE_NAME:Spoke 的名称
  • HUB_NAME:您要将 Spoke 连接到的 Hub 的名称
  • KEY:可选标签文本的键值对中的键
  • VALUE:可选标签文本的键值对中的值
  • TUNNEL_NAME:第一个高可用性 VPN 隧道的名称,在本例中为 vpn-tunnel1-office2
  • TUNNEL_NAME_2:冗余隧道的名称,在本例中为 vpn-tunnel2-office2;包含第二个隧道时,请勿在英文逗号与第二个隧道的名称之间使用空格

验证配置

配置 Hub 及其 spoke 后,您应该能将流量从某个办公室的虚拟机 (VM) 实例传递到另一个办公室的虚拟机实例。为此,每个虚拟机都必须有权访问其区域中的 VPN 隧道。

清理配置

按照以下各部分中的步骤操作来清理示例配置。为避免继续计费,请删除您先前创建的资源。

删除项目

如果要删除自己创建的项目,请按以下步骤操作。 或者,您可以保留项目并删除个别资源,如以下几个部分所述。

  1. 在 Google Cloud 控制台中,进入管理资源页面。

    转到“管理资源”

  2. 在项目列表中,选择要删除的项目,然后点击删除
  3. 在对话框中输入项目 ID,然后点击关闭以删除项目。

同时删除这两个 spoke

您必须先删除所有 Spoke,然后才能删除 Hub。

控制台

  1. 转到 Network Connectivity Center 页面。

    转到 Network Connectivity Center

  2. 在项目下拉菜单中,选择一个项目(在示例图中,项目为 my-project)。

  3. 点击 Spoke 标签页。

  4. 查看项目的 Spoke 名称列表。

  5. 选中要删除的 Spoke 旁边的复选框(在本例中为 office-1-spokeoffice-2-spoke)。

  6. 点击删除 Spoke

  7. 在确认对话框中点击删除

gcloud

如需删除 spoke,请使用 gcloud network-connectivity spokes delete 命令。使用该命令两次,一次删除 office-1-spoke,另一次删除 office-2-spoke

  gcloud network-connectivity spokes delete SPOKE_NAME \
    --region=REGION

替换以下值:

  • SPOKE_NAME:要删除的 Spoke 的名称(在本例中为 office-1-spokeoffice-2-spoke
  • REGION:Spoke 所在的 Google Cloud 区域

API

如需删除 spoke,请使用 networkconnectivity.spokes.delete 方法。使用此方法两次,一次删除 office-1-spoke,另一次删除 office-2-spoke

  DELETE https://networkconnectivity.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/spokes/SPOKE_NAME

替换以下值:

  • PROJECT_ID:包含 Spoke 的项目的 ID(在示例图中,项目为 my-project
  • REGION:Spoke 所在的 Google Cloud 区域
  • SPOKE_NAME:要删除的 Spoke 的名称(在本例中为 office-1-spokeoffice-2-spoke

删除 hub

删除 Spoke 后,您便可以删除 Hub。

控制台

  1. 在 Google Cloud 控制台中,转到 Network Connectivity Center 页面。

    转到 Network Connectivity Center

  2. 在项目下拉菜单中,选择一个项目(在示例图中,项目为 my-project)。

  3. 点击删除 Hub

  4. 在确认对话框中,点击删除以删除 Hub。

gcloud

如需删除 Hub,请使用 gcloud network-connectivity hubs delete 命令

  gcloud network-connectivity hubs delete HUB_NAME /
    --project=PROJECT_ID

替换以下值:

  • HUB_NAME:要删除的 Hub 的名称(在本示例中为 my-hub)。
  • PROJECT_ID:包含 Hub 的项目的 ID(在示例图中,项目为 my-project

API

如需删除 Hub,请使用 networkconnectivity.hubs.delete 方法

  DELETE https://networkconnectivity.googleapis.com/v1/projects/PROJECT_ID/locations/global/hubs/HUB_NAME

替换以下值:

  • PROJECT_ID:包含 Hub 的项目的 ID(在示例图中,项目为 my-project
  • HUB_NAME:要删除的 Hub 的名称

删除 VPC 网络和子网

删除为本教程配置的 VPC 网络子网

后续步骤