使用高可用性 VPN Spoke 连接两个分支办公室

本教程介绍如何使用 Network Connectivity Center Hub 和 Cloud VPN spoke 设置两个分支办公室之间的数据传输。如需创建此配置,请将每个分支办公室的 Cloud VPN 网关中的高可用性 VPN 隧道连接到每个办公室的 Spoke。

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

准备工作

为了更轻松地配置 Network Connectivity Center,请在 Google Cloud 中设置以下各项:

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

    转到“项目选择器”

  3. 确保您的 Cloud 项目已启用结算功能。 了解如何确认您的项目是否已启用结算功能

  4. 安装并初始化 Cloud SDK
  1. 如果您使用的是 gcloud 命令行工具,请使用以下命令设置项目 ID。本页面上的 gcloud 工具说明假定您已设置项目 ID。
          gcloud config set project PROJECT_ID
        
  1. 您还可以查看已设置的项目 ID:
          gcloud config list --format='text(core.project)'
        

API 注意事项

在公开预览版期间,本指南中列出的命令使用 Alpha 版 Network Connectivity API 和 Beta 版 Compute Egine API。

在 API 命令中使用 locationsregion

Network Connectivity API 使用 locations 字段来指示 Google Cloud 区域或地区。Compute Engine API 使用 regionszones 来表示这些资源。

指定具有名称或 URI 的 Hub 和 Spoke 资源

输入命令时,您可以通过名称或完整的 URI 指定以下 Network Connectivity Center 资源:

  • Hub
  • 挂接到 Spoke 的资源

此做法适用于 gcloud 命令行工具以及 Network Connectivity API。

例如,您可以将挂接到 Spoke 的高可用性 VPN 隧道作为 TUNNEL_NAMEprojects/PROJECT_NAME/regions/REGION/vpnTunnels/TUNNEL_NAME

以下示例说明如何通过使用两个高可用性 VPN 隧道的 URI 指定将他们添加到 Spoke 的方式。

--vpn-tunnel="https://www.googleapis.com/compute/projects/PROJECT_ID/regions/REGION/vpnTunnels/TUNNEL_NAME","https://www.googleapis.com/compute/projects/PROJECT_ID/regions/REGION/vpnTunnels/TUNNEL_NAME"

本教程中使用的资源

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

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


配置数据传输连接

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

  1. 创建 Google Cloud 资源,例如 Virtual Private Cloud (VPC) 网络、高可用性 VPN 网关和隧道以及 Cloud Router。
  2. 创建 Network Connectivity Center Hub 资源。
  3. 为每个分支办公室定义 spoke 资源。
  4. 将每个分支办公室的 Cloud VPN 网关中的两个高可用性 VPN 隧道连接到每个 spoke。
  5. 验证配置:

使用 Network Connectivity API 配置 hub 及其 spoke 时,您可以在创建 hub 的同时创建 spoke。除非您希望今后继续提供更多的 spoke,否则无需进行额外的 API 调用来添加 spoke。

创建 Google Cloud 资源

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

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

如果您需要创建这些资源,请参阅以下文档了解具体步骤:

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

创建 hub

创建包含两处办公点 spoke 的 hub。

控制台

  1. 在 Cloud Console 中,转到 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 alpha network-connectivity hubs create HUB_NAME \
     --description=DESCRIPTION \
     --project=PROJECT_ID

替换以下值:

  • HUB_NAME:新 Hub 的名称(在本例中为 my-hub
  • DESCRIPTION:用于描述该 Hub 的可选文本
  • PROJECT_ID:包含新 Hub 的项目的 ID(在示例图中,项目为 my-project

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

API

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

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

替换以下值:

  • PROJECT_ID:包含新 Hub 的项目的 ID(在示例图中,项目为 my-project
  • HUB_NAME:新 Hub 的名称(在本例中为 my-hub
  • DESCRIPTION:用于描述该 Hub 的可选文本

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

为 Office 1 创建 Spoke

Office1 创建 spoke。spoke 包含两个高可用性 VPN 隧道,一个来自您使用的高可用性 VPN 网关的每个接口。在示例图中,此网关表示为 vpn-office1。我们建议您选择位于距离办公室最近的 Google Cloud 地区的网关。

控制台

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

  1. 添加 Spoke 表单中,选择包含要连接到 Spoke 的资源的网络(在示例图中,此网络表示为 network-a)。
  2. 新建 Spoke 表单中,输入 Spoke 名称(在本例中为 office-1-spoke)。
  3. (可选)输入 Spoke 的说明
  4. Spoke 类型下拉列表中,选择 VPN 隧道
  5. 选择 Spoke 的区域(在示例图中,Spoke 位于 us-west1)。
  6. 选择一个隧道:
    1. 点击添加隧道
    2. VPN 隧道下拉菜单中,选择一个现有隧道。
  7. 要为 Spoke 添加更多隧道,请重复上述步骤。示例图中使用了两个隧道:vpn-tunnel1-office1vpn-tunnel2-office1。添加完隧道后,点击完成
  8. 点击创建

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

gcloud

如需创建 Spoke,请输入以下命令:

  gcloud alpha network-connectivity spokes create SPOKE_NAME \
    --hub=HUB_NAME \
    --description=DESCRIPTION \
    --vpn-tunnel=TUNNEL1_NAME,TUNNEL2_NAME \
    --region=REGION \
    --project=PROJECT_ID
 

替换以下值:

  • SPOKE_NAME:Spoke 的名称(在本例中为 office-1-spoke
  • HUB_NAME:您要向其挂接 Spoke 的 Hub 的名称(在本例中为 my-hub
  • DESCRIPTION:描述该 spoke 的可选文本
  • TUNNEL_NAME:要添加到 Spoke 的一个或多个高可用性 VPN 隧道的名称(在示例图中,这些隧道为 vpn-tunnel1-office1vpn-tunnel2-office1
  • REGION:Spoke 所在的 Google Cloud 区域(在示例图中,Spoke 位于 us-west1
  • PROJECT_ID:包含 Hub 的项目的 ID(在示例图中,项目为 my-project

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

API

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

  POST https://networkconnectivity.googleapis.com/v1alpha1/projects/PROJECT_ID/locations/REGION/spokes
  {
    "name": "SPOKE_NAME",
    "hub": "HUB_NAME",
    "linkedVpnTunnels": ["TUNNEL1_NAME","TUNNEL2_NAME"]
  }

替换以下值:

  • PROJECT_ID:包含 Hub 的项目的 ID(在示例图中,项目为 my-project
  • REGION:Spoke 所在的 Google Cloud 区域(在示例图中,Spoke 位于 us-west1
  • SPOKE_NAME:Spoke 的名称(在本例中为 office-1-spoke
  • HUB_NAME:您要向其挂接 Spoke 的 Hub(在本例中为 my-hub
  • TUNNEL_NAME:要添加到 Spoke 的一个或多个高可用性 VPN 隧道(采用 URI 格式)的名称(在示例图中,这些隧道为 vpn-tunnel1-office1vpn-tunnel2-office1

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

为 Office 2 创建 Spoke

Office2 创建 spoke。spoke 包含两个高可用性 VPN 隧道,一个来自您使用的高可用性 VPN 网关的每个接口。在示例图中,此网关表示为 vpn-office2。我们建议您选择位于距离办公室最近的 Google Cloud 地区的网关。

控制台

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

  1. 转到 Network Connectivity Center 页面。

    转到 Network Connectivity Center

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

  3. 点击 Spoke 标签页。

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

  5. 网络字段中,选择一个网络(在示例图中,网络为 network-a)。

  6. 新建 Spoke 表单中,输入 Spoke 名称(在本例中为 office-2-spoke)。

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

  8. Spoke 类型下拉列表中,选择 VPN 隧道

  9. 选择 Spoke 的区域(在示例图中,Spoke 位于 us-east1)。

  10. 选择一个隧道:

    1. 点击添加隧道
    2. VPN 隧道下拉菜单中,选择一个现有隧道。
  11. 要为 Spoke 添加更多隧道,请重复上述步骤。示例图中使用了两个隧道:vpn-tunnel1-office2vpn-tunnel2-office2。添加完隧道后,点击完成

  12. 点击创建

gcloud

如需创建第二个 Spoke,请输入以下命令:

  gcloud alpha network-connectivity spokes create SPOKE_NAME \
    --hub=HUB_NAME \
    --description=DESCRIPTION \
    --vpn-tunnel=TUNNEL1_NAME,TUNNEL2_NAME \
    --region=REGION \
    --project=PROJECT_ID

替换以下值:

  • SPOKE_NAME:Spoke 的名称(在本例中为 office-2-spoke
  • HUB_NAME:您要向其挂接 Spoke 的 Hub 的名称(在本例中为 my-hub
  • DESCRIPTION:描述该 spoke 的可选文本
  • TUNNEL_NAME:要添加到 Spoke 的一个或多个高可用性 VPN 隧道的名称(在示例图中,使用的两个隧道为 vpn-tunnel1-office2vpn-tunnel2-office2
  • REGION:Spoke 所在的 Google Cloud 区域(在示例图中,Spoke 位于 us-east1
  • PROJECT_ID:包含 Hub 的项目的 ID(在示例图中,项目为 my-project

API

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

  POST https://networkconnectivity.googleapis.com/v1alpha1/projects/PROJECT_ID/locations/REGION/spokes
  {
    "name": "SPOKE_NAME",
    "hub": "HUB_NAME",
    "linkedVpnTunnels": ["TUNNEL1_NAME","TUNNEL2_NAME"]
  }

替换以下值:

  • PROJECT_ID:包含新 Spoke 的项目的 ID(在示例图中,项目为 my-project
  • REGION:Spoke 所在的 Google Cloud 区域(在示例图中,区域为 us-east1
  • SPOKE_NAME:Spoke 的名称(在本例中为 office-2-spoke
  • HUB_NAME:您要向其挂接 Spoke 的 Hub(在本例中为 my-hub
  • TUNNEL_NAME:要添加到 Spoke 的一个或多个高可用性 VPN 隧道的名称(在示例图中,使用的两个隧道为 vpn-tunnel1-office2vpn-tunnel2-office2

验证配置

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

清理配置

按照以下各部分中的步骤操作来清理示例配置。您可以通过删除自己创建的资源来避免继续计费。

删除项目

如果要删除自己创建的项目,请按以下步骤操作。

或者,如果您想保留项目,则可以转到以下各部分并删除各个资源。

  1. 在 Cloud Console 中,转到管理资源页面。

    转到“管理资源”

  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

使用以下命令两次,一次删除 office-1-spoke,一次删除 office-2-spoke

  gcloud alpha network-connectivity spokes delete SPOKE_NAME \
    --region=REGION \
    --project=PROJECT_ID

替换以下值:

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

API

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

  DELETE https://networkconnectivity.googleapis.com/v1alpha1/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. 在 Cloud Console 中,转到 Network Connectivity Center 页面。

    转到 Network Connectivity Center

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

  3. 点击删除 Hub

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

gcloud

使用以下命令删除 Hub:

  gcloud alpha 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/v1alpha1/projects/PROJECT_ID/locations/global/hubs/HUB_NAME

替换以下值:

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

删除 VPC 网络和子网

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

后续步骤