使用第三方设备建立连接

借助 Network Connectivity Center,您可以使用第三方网络虚拟设备在外部站点与虚拟私有云 (VPC) 网络资源之间建立连接。如需以这种方式建立连接,请使用路由器设备功能。

路由器设备是 Network Connectivity Center 支持的多种 spoke 类型之一。如需了解 Network Connectivity Center,请参阅 Network Connectivity Center 概览。如需详细了解路由器设备,请参阅路由器设备概览

配置示例

在以下拓扑中,外部站点使用路由器设备 spoke 连接到两个 VPC 网络。

托管路由器设备实例的虚拟机在每个 VPC 网络中都有一个接口。路由器设备实例负责维护这两个网络中的 Cloud Router 路由器的边界网关协议 (BGP) 会话。

每个 Cloud Router 路由器有两个接口。每个网络中的路由器设备接口与相应 Cloud Router 路由器的两个接口对等互连,因此总共四个对等互连会话。

为路由器设备创建 BGP 会话
站点到云的示例拓扑(点击可放大)

必需的任务

如需设置示例配置,请确保您满足执行此步骤的前提条件,然后完成必需的任务:

  1. 创建用作路由器设备实例的 Compute Engine 虚拟机 (VM)。您可以使用受支持的合作伙伴解决方案或您自己的自定义映像来创建虚拟机。

  2. 确保路由器设备实例可通过 TCP 端口 179 访问 BGP 流量。为便于访问,您可能需要创建防火墙规则

  3. 创建两个 spoke,每个 VPC 网络中一个。每个 spoke 使用与其支持性资源相同的路由器设备实例。

  4. 设置两个 Cloud Router 路由器,每个 VPC 网络一个。对于每个 Cloud Router 路由器,此任务包括以下子任务:

    1. 在路由器设备实例所在的区域中创建 Cloud Router 路由器

    2. 在每个 Cloud Router 路由器上创建两个接口

    3. 在每个 Cloud Router 路由器上配置 BGP 对等互连

  5. 在路由器设备实例上配置 BGP 对等互连

完成这些任务的方式可能明显不同。例如,如果您使用合作伙伴解决方案创建路由器设备实例,那么系统可能会自动为您执行某些后续任务。

准备工作

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

创建或选择项目

为了更轻松地配置 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)'

启用 Network Connectivity API

您必须先启用 Network Connectivity API,然后才能使用 Network Connectivity Center 执行任何任务。

控制台

如要启用 Network Connectivity API,请执行以下操作:

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

    转到 Network Connectivity Center

  2. 点击启用

或者,您可以使用 Google Cloud 控制台 API 库来启用 API,如启用 API 中所述。

获取访问权限

如要使用 Network Connectivity Center,您需要具备角色和权限中所述的权限。

配置 Network Connectivity Center 时,您还可以使用 Google Cloud 资源,例如 VPC 网络、子网和防火墙规则。如需详细了解使用这些资源所需的权限,请参阅 Compute Engine 访问权限控制文档

IP 地址和路由器设备实例

要设置路由器设备实例,您必须在该实例和 Cloud Router 路由器之间建立对等互连。如需设置对等互连,虚拟机必须使用 RFC 1918 内部 IP 地址。如果虚拟机使用不同类型的地址,则无法对等互连这两个资源。 此外,两个 IP 地址必须位于同一区域。

如需了解如何查看虚拟机的 IP 地址,请参阅以下文档:

有关 IP 地址类型的定义和详细信息,请参阅 IP 地址

预留静态内部 IP 地址(推荐)

我们建议您为路由器设备实例提供一个静态内部 IP 地址,这样该地址在重新启动期间就不会发生变化。如果地址更改,则 BGP 对等互连失败。

您可以通过多种方式分配预留的 IP 地址。您可以提前预留 IP 地址。或者,您可以在创建虚拟机时预留该 IP 地址。如果您错误地为虚拟机提供了临时地址,稍后可以将该地址转换为静态地址。如需详细了解静态 IP 地址,请参阅预留静态 IP 地址

BGP 对等互连的 IP 地址

路由器设备实例使用其内部 IP 地址与 Cloud Router 建立对等互连。实例使用链路本地地址(例如 169.254.x.x)进行 BGP 对等互连。

同样,Cloud Router 使用两个 RFC 1918 内部 IP 地址与路由器设备实例对等互连,每个接口对应一个地址。这些 IP 地址可以手动分配,也可以从包含路由器设备实例和 Cloud Router 路由器的子网自动分配。

创建 VPC 资源

以下部分介绍了如何创建 VPC 网络和子网。

创建两个 VPC 网络

创建两个 VPC 网络(如果尚未创建)。将每个网络的动态路由模式设置为 global

如需详细了解如何创建 VPC 网络,请参阅创建网络

控制台

如需使用 Google Cloud Console 创建自定义 VPC 网络,请参阅创建自定义模式网络。确保将动态路由模式设置为全局性。如果您要遵循示例配置中使用的命名惯例,请调用网络 network-anetwork-b

gcloud

如需创建自定义 VPC 网络,请使用 gcloud compute networks create 命令

  gcloud compute networks create NAME \
      --subnet-mode custom \
      --bgp-routing-mode global

NAME 替换为该 VPC 网络的名称,例如 network-anetwork-b

API

如要使用 Compute Engine API 创建自定义 VPC 网络,请参阅使用 VPC

创建子网

network-a 中创建一个子网,并在 network-b 中创建另一个子网。

控制台

如需使用 Google Cloud 控制台添加子网,请参阅添加子网

如果您要遵循示例配置中使用的命名惯例,请对 network-a 中的子网使用以下值:

  • 名称subnet-a
  • 区域us-central1
  • 范围10.1.3.0/24

network-b 中的子网使用以下值:

  • 名称subnet-b
  • 区域us-central1
  • 范围192.168.10.0/24

gcloud

如需创建 VPC 子网,请使用 gcloud compute networks subnets create 命令

  gcloud compute networks subnets create NAME \
      --network=NETWORK \
      --region=REGION \
      --range=RANGE

请替换以下内容:

  • NAME:包含路由器设备虚拟机的子网的名称,例如 subnet-asubnet-b
  • NETWORK:包含该子网的网络,例如 network-anetwork-b
  • REGION:包含该子网的区域,例如 us-central1
  • RANGE:采用 CIDR 表示法的子网的 IP 范围,例如 10.1.3.0/24192.168.10.0/24

API

如要使用 Compute Engine API 创建 VPC 子网,请参阅使用 VPC

创建路由器设备虚拟机

创建用作路由器设备实例的 Compute Engine 虚拟机。在示例拓扑中,虚拟机以 router-app-a 表示。它有两个接口,一个位于 network-a,另一个位于 network-b

创建该虚拟机时,您必须选择网络虚拟设备映像。此映像可以是以下任何一种:

如需详细了解如何指定映像,请参阅以下资源:

如需详细了解如何创建虚拟机,请参阅创建和启动虚拟机实例

本部分中的示例假设您已经为路由器设备实例预留 IP 地址。如需了解详情,请参阅路由器设备的 IP 地址

控制台

如需创建示例配置中使用的虚拟机,请参阅创建和启动虚拟机实例。创建虚拟机时,请选择以下选项:

  • 如果要遵循示例配置中使用的命名惯例,请使用以下值:

    • 名称router-app-a
    • 区域us-central1
    • 区域us-central1-a
  • 如需选择映像,请转到页面的启动磁盘区域,点击更改,然后导航到虚拟机的相应映像。

  • 展开高级选项,然后展开网络。 请使用以下值:

    • IP 转发下,选择启用
    • 网络接口下,创建两个接口,一个位于 network-a,一个位于 network-b。如需创建每个接口,请选择适当的网络,然后点击添加网络接口。填写以下字段:
      • 选择您希望路由器设备实例所在的子网,例如 subnet-asubnet-b
      • 主要内部 IP 下,选择您要使用的预留 RFC 1918 内部 IP 地址,例如 10.1.3.8192.168.10.3
      • Network Service Tiers 下方,选择优质;此选择可最大限度地提高流量使用 Google 网络的范围。

gcloud

如需创建示例配置中使用的两个路由器设备虚拟机,请使用 gcloud compute instances create 命令

运行该命令两次,针对每个路由器设备实例各一次。将 INSTANCE_NAME 替换为充当路由器设备实例的虚拟机的名称。

在以下示例中,您可将预留的静态内部 IP 地址和静态外部 IP 地址分配给该虚拟机。您还可以指定包含供应商为虚拟机提供的映像以及映像名称的项目。

  gcloud compute instances create INSTANCE_NAME \
      --project=PROJECT \
      --zone=ZONE \
      --machine-type=MACHINE_TYPE \
      --network-tier=NETWORK_TIER \
      --network-interface=[subnet=SUBNET,private-network-ip=INTERNAL_IP_ADDRESS] \
      --can-ip-forward \
      --image-project=IMAGE_PROJECT \
      --image=IMAGE

请替换以下内容:

  • INSTANCE_NAME:用作路由器设备实例的虚拟机的名称,例如 router-app-arouter-app-b
  • PROJECT:包含路由器设备虚拟机的项目名称,例如 my-project
  • ZONE:虚拟机所在的 Google Cloud 地区,例如 us-west1-a
  • MACHINE_TYPE:用于虚拟机的机器类型资源,例如 n1-standard-2
  • NETWORK_TIER:创建路由器设备虚拟机时,将网络层级设置为 premium;此选择可最大限度地提高流量使用 Google 网络的流量范围
  • SUBNET:分配给虚拟机主要网络接口的子网,例如 subnet-a-1
  • INTERNAL_IP_ADDRESS:分配给连接到 Cloud Router 的虚拟机接口的 RFC 1918 内部 IP 地址,例如 10.0.1.10
  • IMAGE_PROJECT:包含 image 字段中指定映像的项目名称,例如 debian-cloud
  • IMAGE:要安装的映像的名称,例如 debian-10-buster-v20210217

API

如需创建示例配置中使用的两个路由器设备虚拟机,请使用 compute.instances.insert 方法

如需了解其他创建方法,请参阅创建和启动虚拟机实例

POST https://compute.googleapis.com/compute/v1/projects/PROJECT/zones/ZONE/instances
 {
   "machineType": "zones/ZONE/machineTypes/MACHINE_TYPE",
   "name": "INSTANCE_NAME",
   "canIpForward": "true",
   "networkInterfaces": [{
     "subnetwork": "regions/REGION/subnetworks/SUBNET",
     "networkIP": "INTERNAL_IP_ADDRESS",
     "accessConfigs": [{
         "networkTier": "NETWORK_TIER,
       }]
     }],
    "disks": [{
      "initializeParams": {
          "sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE"
      },
      "boot": true
   }]
 }

请替换以下内容:

  • PROJECT:包含路由器设备虚拟机的项目名称,例如 my-project
  • ZONE:虚拟机所在的 Google Cloud 地区,例如 us-west1-a
  • MACHINE_TYPE:用于虚拟机的机器类型资源,例如 zones/us-west1-a/machineTypes/n1-standard-2
  • INSTANCE_NAME:虚拟机的名称,例如 router-app-arouter-app-b
  • REGION:包含虚拟机的区域,例如 us-west1
  • SUBNET:分配给虚拟机主要网络接口的子网,例如 regions/us-west1/subnetworks/subnet-a-1
  • INTERNAL_IP_ADDRESS:分配给虚拟机的 RFC 1918 内部 IP 地址;为连接到 Cloud Router 的虚拟机接口配置地址,例如 10.0.1.10
  • NETWORK_TIER:创建路由器设备虚拟机时,将网络层级设置为 premium;此选择可最大限度地提高流量使用 Google 网络的流量范围
  • IMAGE_PROJECT:包含您在创建虚拟机时指定的映像的项目的名称,例如 debian-cloud
  • IMAGE:创建虚拟机时使用的映像的名称,例如 debian-10-buster-v20210217

创建防火墙规则以允许 BGP

创建两个防火墙规则,使其分别位于 network-anetwork-b 中。每个规则都应允许 TCP 端口 179 上的 BGP 流量。

如要详细了解防火墙命令,请参阅使用防火墙规则

控制台

如需使用 Google Cloud 控制台创建 VPC 防火墙规则,请参阅创建防火墙规则

gcloud

如需使用 Google Cloud CLI 创建 VPC 防火墙规则,请参阅创建防火墙规则

API

如需使用 Compute Engine API 创建 VPC 防火墙规则,请参阅创建防火墙规则

创建 Network Connectivity Center 资源

您必须先创建所需的 Network Connectivity Center 资源,然后才能使用路由器设备虚拟机。

创建中心

您必须先创建一个 Hub,然后才能创建 Network Connectivity Center spoke。

控制台

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

    转到 Network Connectivity Center

  2. 在项目菜单中,选择一个项目。

  3. 输入 Hub 名称

  4. 输入可选说明

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

  6. 点击继续

  7. 控制台会显示一个可让您创建 spoke 的表单,。如需立即填写,请使用创建路由器设备 spoke 中所述的步骤。

  8. 点击完成

gcloud

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

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

替换以下值:

  • HUB_NAME:新 Hub 的名称
  • DESCRIPTION:用于描述该 Hub 的可选文本
  • KEY:可选标签文本的键值对中的键
  • VALUE:可选标签文本的键值对中的值

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
  • HUB_NAME:新 Hub 的名称
  • DESCRIPTION:用于描述该 Hub 的可选文本
  • KEY:可选标签文本的键值对中的键
  • VALUE:可选标签文本的键值对中的值

创建两个路由器设备 spoke

创建两个路由器设备 spoke。两个 spoke 使用相同的支持性资源:您刚刚创建的路由器设备实例。一个 spoke 使用 network-a 中的接口,另一个 spoke 使用 network- b 中的接口。

您需要创建 spoke,才能在路由器设备实例和 Cloud Router 路由器(将在下一步中创建)之间启用 BGP 对等互连。

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

控制台

输入基本 Spoke 详情

  1. 在 Google Cloud Console 中,转到 Network Connectivity Center 页面。

    转到 Network Connectivity Center

  2. 在项目菜单中,选择一个项目。

  3. 点击 Spoke 标签页。

  4. 点击添加 Spoke

  5. 新 spoke 表单中,将 Spoke 类型设置为路由器设备

  6. 输入 Spoke 名称,例如 spoke-aspoke-b

  7. (可选)输入说明

  8. 选择新 spoke 的区域字段。

  9. 站点到站点数据传输下,选择关闭

  10. VPC 网络下拉列表中,选择一个网络。

输入路由器设备详细信息

  1. 将实例挂接到 spoke 下,使用下拉列表选择路由器设备,例如 router-app-a
  2. 如需向此 spoke 添加更多路由器设备实例,请点击添加实例并重复以上步骤。
  3. 完成后,点击完成,然后继续保存您的 spoke

保存您的 spoke

  1. 如需添加第二个 spoke,请点击添加 spoke,然后重新开始该过程,从输入 Spoke 名称开始。
  2. 添加完 Spoke 后,点击创建Network Connectivity Center 页面会更新,以显示您创建的 spoke 的详细信息。

gcloud

如需创建路由器设备 spoke,请使用 gcloud network-connectivity spokes linked-router-appliances create 命令。运行该命令两次,针对每个 spoke 各一次。

  gcloud network-connectivity spokes linked-router-appliances create NAME \
    --hub="HUB_URI" \
    --description="DESCRIPTION" \
    --router-appliance=instance="ROUTER_APPLIANCE_URI",ip=IP_ADDRESS \
    --region=REGION \
    --labels="KEY"="VALUE" \
 

替换以下值:

  • NAME:spoke 的名称,例如 spoke-a
  • HUB_URI:您要将 spoke 连接到的 hub 的 URI
  • DESCRIPTION:描述该 Spoke 的可选文本
  • ROUTER_APPLIANCE_URI:路由器设备实例的 URI,例如
    https://www.googleapis.com/compute/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME 
  • IP_ADDRESS:相应 VPC 网络中的路由器设备实例的内部 IP 地址,例如 10.1.3.8192.168.10.3
  • REGION:您希望 spoke 所在的 Google Cloud 区域,例如 us-central1
  • KEY:可选标签文本的键值对中的键
  • VALUE:可选标签文本的键值对中的值

    例如,以下命令会创建一个使用 router-app-a 作为其底层资源的路由器设备 spoke。此命令通过使用 network-a 接口引用路由器设备实例:

    gcloud network-connectivity spokes linked-router-appliances create spoke-a \
        --hub=my-hub \
        --description="Test spoke 1" \
        --router-appliance=instance="https://www.googleapis.com/compute/v1/projects/my-project/zones/us-central1-a/instances/router-app-a",ip=10.1.3.8 \
        --region=us-central1 \
    

    例如,以下命令会创建一个使用 router-app-a 作为其底层资源的路由器设备 spoke。此命令通过使用 network-b 接口引用路由器设备实例:

    gcloud network-connectivity spokes linked-router-appliances create spoke-b \
        --hub=my-hub \
        --description="Test spoke 1" \
        --router-appliance=instance="https://www.googleapis.com/compute/v1/projects/my-project/zones/us-central1-a/instances/router-app-a",ip=192.168.10.3\
        --region=us-central1 \
    

API

如需创建路由器设备 Spoke,请使用 networkconnectivity.spokes.create 方法。对于要与 Spoke 关联的每个路由器设备实例,请使用 linkedRouterApplianceInstances.instances 数组添加实例

  POST https://networkconnectivity.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/spokes/SPOKE_NAME
  {
    "hub": "HUB_URI",
    "labels": {"KEY": "VALUE"},
    "linkedRouterApplianceInstances": {
      "instances": [
        {
          "virtualMachine": "ROUTER_APPLIANCE_URI",
          "ipAddress": INTERNAL_IP_ADDRESS,
        },
      ],
      "siteToSiteDataTransfer": BOOLEAN
    }
  }
 

替换以下值:

  • PROJECT_ID:您的项目的 ID
  • REGION:您希望 spoke 所在的 Google Cloud 区域,例如 us-west1
  • SPOKE_NAME:您要为 spoke 指定的名称
  • HUB_URI:您要将 spoke 连接到的 hub 的 URI,例如
    http://networkconnectivity.googleapis.com/v1/projects/PROJECT_NAME/locations/global/hubs/HUB_NAME 
  • KEY:可选标签文本的键值对中的键
  • VALUE:可选标签文本的键值对中的值
  • ROUTER_APPLIANCE_URI:路由器设备实例的 URI,例如
    https://www.googleapis.com/compute/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME 
  • IP_ADDRESS:相应 VPC 网络的路由器设备实例的内部 IP 地址,例如 10.1.3.8192.168.10.3
  • BOOLEAN:用于确定是否为 spoke 启用站点到站点数据传输的值;对于此使用场景,请将选项设置为 false

    例如,如需创建将 router-app-a 用于 network-a 中的接口的 spoke,请求正文的结构应如下所示:

    {
      "hub": "http://networkconnectivity.googleapis.com/v1/projects/my-project/locations/global/hubs/my-hub",
    
      "labels": {
        "environment" : "test"
      },
    
      "linkedRouterApplianceInstances": {
        "instances": [
          {
            "virtualMachine": "https://www.googleapis.com/compute/v1/projects/my-project/zones/us-central1-a/instances/router-app-a",
            "ipAddress": "10.1.3.8",
          },
        ],
        "siteToSiteDataTransfer": false
      }
    }
    
    

    如需创建将 router-app-a 用于 network-b 中的接口的 spoke,请求正文的结构应如下所示:

    {
      "hub": "http://networkconnectivity.googleapis.com/v1/projects/my-project/locations/global/hubs/my-hub",
    
      "labels": {
        "environment" : "test"
      },
    
      "linkedRouterApplianceInstances": {
        "instances": [
          {
            "virtualMachine": "https://www.googleapis.com/compute/v1/projects/my-project/zones/us-central1-a/instances/router-app-a",
            "ipAddress": "192.168.10.3",
          },
        ],
        "siteToSiteDataTransfer": false
      }
    }
    
    

设置 Cloud Router 路由器

路由器设备使用 Cloud Router 路由器与 VPC 网络交换路由。因此,您必须在每个 VPC 网络中创建一个 Cloud Router 路由器,并完成一些额外的设置任务。

创建 Cloud Router 路由器

如果您使用的是与示例拓扑相同的值,请创建两个 Cloud Router 路由器,一个位于 network-a,一个位于 network-b。两个 Cloud Router 路由器都应位于 us-central1

如需了解详情,请参阅创建 Cloud Router

控制台

如需在 Google Cloud 控制台中创建 Cloud Router 路由器,请使用以下方法之一:

gcloud

如需创建 Cloud Router,请使用 gcloud compute routers create 命令

  gcloud compute routers create NAME \
      --region=REGION \
      --network=NETWORK \
      --asn=ASN \
      --project=PROJECT_ID

请替换以下内容:

  • NAME:Cloud Router 路由器的名称,例如 cloud-router-acloud-router-b
  • REGION:包含 Cloud Router 的区域,例如 us-central1
  • NETWORK:包含 Cloud Router 路由器的 VPC 网络,例如 network-anetwork-b
  • ASN:Cloud Router 的自治系统编号 (ASN) - 此 ASN 必须是 RFC 6996 中定义的 16 位或 32 位专用 ASN,例如 65000
  • PROJECT_ID:Cloud Router 的项目 ID,例如 my-project

API

如需创建 Cloud Router,请使用 compute.routers.insert 方法

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/routers
{
 "name": "NAME",
 "network": "NETWORK",
 "bgp": {
   "asn": ASN
  }
}

请替换以下内容:

  • PROJECT_ID:Cloud Router 的项目 ID,例如 my-project
  • REGION:包含 Cloud Router 的区域,例如 us-central1
  • NAME:Cloud Router 路由器的名称,例如 cloud-router-acloud-router-b
  • NETWORK:包含 Cloud Router 路由器的 VPC 网络的 URI,例如 /global/networks/network-a/global/networks/network-b
  • ASN:Cloud Router 的自治系统编号 (ASN) - 此 ASN 必须是 RFC 6996 中定义的 16 位或 32 位专用 ASN,例如 65000

在每个 Cloud Router 路由器上创建两个接口

如需建立冗余,请在每个 Cloud Router 路由器上创建两个接口。在每个 Cloud Router 路由器上,这两个接口必须与相应的路由器设备接口所属的子网相关联。如果您使用的是示例拓扑中的值,请执行以下操作:

  • 对于 cloud-router-a,请在 subnet-a 中创建两个接口。
  • 对于 cloud-router-b,请在 subnet-b 中创建两个接口。

每个 Cloud Router 路由器接口都需要使用一个区域内部 IP 地址。如果您明确指定接口的内部 IP 地址,则该 IP 地址必须属于子网的主要 IP 地址范围。它不能已被其他资源(例如虚拟机或其他 Cloud Router 路由器接口)使用。

暂时没有使用 Google Cloud 控制台执行此步骤的相关说明。如果您使用的是 Google Cloud 控制台,则当您完成下一个任务(在每个 Cloud Router 路由器上创建 BGP 对等互连)时,系统会自动创建接口。

gcloud

如需在 Cloud Router 路由器上创建冗余接口,请使用 gcloud compute routers add-interface 命令

完成以下步骤两次,一次针对 cloud-router-a,另一次针对 cloud-router-b

  1. 为每个 Cloud Router 路由器创建第一个接口:

    gcloud compute routers add-interface ROUTER_NAME \
        --interface-name=FIRST_INTERFACE_NAME \
        --ip-address=FIRST_INTERFACE_IP_ADDRESS \
        --subnetwork=SUBNET \
        --region=REGION \
        --project=PROJECT_ID
    

    请替换以下内容:

    • ROUTER_NAME:要更新的 Cloud Router 路由器的名称,例如 cloud-router-acloud-router-b
    • FIRST_INTERFACE_NAME:接口的名称,例如 interface-1
    • FIRST_INTERFACE_IP_ADDRESS:用于第一个接口的 RFC 1918 内部 IP 地址;如果您未指定值,则 Google 会尝试在子网的主要 IP 地址范围中查找可用地址
    • SUBNET:包含 Cloud Router 路由器接口和相应的路由器设备实例接口的子网
    • REGION:Cloud Router 路由器所在的 Google Cloud 区域,例如 us-central1
    • PROJECT_ID:Cloud Router 的项目 ID,例如 my-project
  2. 为每个 Cloud Router 路由器创建第二个接口:

    gcloud compute routers add-interface ROUTER_NAME \
        --interface-name=SECOND_INTERFACE_NAME \
        --ip-address=SECOND_INTERFACE_IP_ADDRESS \
        --subnetwork=SUBNET \
        --redundant-interface=FIRST_INTERFACE_NAME \
        --region=REGION \
        --project=PROJECT_ID
    

    请替换以下内容:

    • ROUTER_NAME:要更新的 Cloud Router 路由器的名称,例如 cloud-router-acloud-router-b
    • SECOND_INTERFACE_NAME:接口的名称,例如 interface-2
    • SECOND_INTERFACE_IP_ADDRESS:用于第二个接口的 RFC 1918 内部 IP 地址;如果您未指定值,则 Google 会尝试在子网的主要 IP 地址范围中查找可用地址
    • SUBNET:包含两个 Cloud Router 路由器接口和相应的路由器设备实例接口的子网
    • FIRST_INTERFACE_NAME:您在第 1 步中创建的接口的名称
    • REGION:Cloud Router 路由器所在的 Google Cloud 区域,例如 us-central1
    • PROJECT_ID:Cloud Router 的项目 ID,例如 my-project

    用于 cloud-router-a 的示例命令

    以下命令会在 cloud-router-a 上创建第一个接口:

    gcloud compute routers add-interface cloud-router-a \
        --interface-name=interface-1 \
        --ip-address=10.1.3.14 \
        --subnetwork=subnet-a \
        --region=us-central1 \
        --project=my-project
    

    以下命令会在 cloud-router-a 上创建第二个接口:

    gcloud compute routers add-interface cloud-router-a \
        --interface-name=interface-2 \
        --ip-address=10.1.3.15 \
        --subnetwork=subnet-a \
        --redundant-interface=interface-1 \
        --region=us-central1 \
        --project=my-project
    

    用于 cloud-router-b 的示例命令

    以下命令会在 cloud-router-b 上创建第一个接口:

    gcloud compute routers add-interface cloud-router-b \
        --interface-name=interface-1 \
        --ip-address=192.168.10.14 \
        --subnetwork=subnet-b \
        --region=us-central1 \
        --project=my-project
    

    以下命令会在 cloud-router-b 上创建第二个接口:

    gcloud compute routers add-interface cloud-router-b \
       --interface-name=interface-2 \
       --ip-address=192.168.10.15 \
       --subnetwork=subnet-b \
       --redundant-interface=interface-1 \
       --region=us-central1 \
       --project=my-project
    

API

如需在 Cloud Router 路由器上创建冗余接口,请使用 compute.routers.patch 方法

使用以下请求两次,一次针对 cloud-router-a,另一次针对 cloud-router-b

    "PATCH
    https"://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/routers/NAME
    {
      "region":"REGION",
      "interfaces":[
        {
          "name":"FIRST_INTERFACE_NAME",
          "privateIpAddress:"FIRST_INTERFACE_IP_ADDRESS",
          "subnetwork": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/subnetworks/SUBNET"
        },
        {
          "name":"SECOND_INTERFACE_NAME",
          "privateIpAddress:"SECOND_INTERFACE_IP_ADDRESS",
          "subnetwork": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/subnetworks/SUBNET",
          "redundantInterface": "FIRST_INTERFACE_NAME"
        }
      ]
    }
  

请替换以下内容:

  • PROJECT_ID:Cloud Router 的项目 ID,例如 my-project
  • REGION:Cloud Router 路由器所在的 Google Cloud 区域,例如 us-central1
  • NAME:要更新的 Cloud Router 路由器的名称,例如 cloud-router-acloud-router-b
  • NETWORK:包含 Cloud Router 的 VPC 网络,例如 network-a
  • FIRST_INTERFACE_NAME:第一个接口的名称,例如 interface-1
  • FIRST_INTERFACE_IP_ADDRESS:用于第一个接口的 RFC 1918 内部 IP 地址;如果您未指定值,则 Google 会尝试在子网的主要 IP 地址范围中查找可用地址
  • SUBNET:包含两个 Cloud Router 路由器接口和相应的路由器设备实例接口的子网
  • SECOND_INTERFACE_NAME:第二个接口的名称,例如 interface-2
  • SECOND_INTERFACE_IP_ADDRESS:用于第二个接口的 RFC 1918 内部 IP 地址;如果您未指定值,则 Google 会尝试在子网的主要 IP 地址范围中查找可用地址

    用于 cloud-router-a 的示例命令

    以下命令会在 cloud-router-a 上创建两个接口:

     "PATCH https"://www.googleapis.com/compute/v1/projects/my-project/regions/us-central1/routers/cloud-router-a
      {
       "region":"us-central1",
       "interfaces":[
         {
          "name":"router-appliance-interface-0",
          "privateIpAddress:"10.1.3.14",
          "subnetwork": "https://www.googleapis.com/compute/v1/projects/my-project/regions/us-west1/subnetworks/subnet-a"
         },
         {
          "name":"router-appliance-interface-1",
          "privateIpAddress:"10.1.3.15",
          "subnetwork": "https://www.googleapis.com/compute/v1/projects/my-project/regions/us-west1/subnetworks/subnet-a",
          "redundantInterface": "router-appliance-interface-0"
         }
       ]
      }
     

    cloud-router-b 的示例命令

    以下命令会在 cloud-router-b 上创建两个接口:

    "PATCH https"://www.googleapis.com/compute/v1/projects/my-project/regions/us-central1/routers/cloud-router-b
     {
       "region":"us-central1",
       "interfaces":[
         {
          "name":"router-appliance-interface-0",
          "privateIpAddress:"192.168.10.14",
          "subnetwork": "https://www.googleapis.com/compute/v1/projects/my-project/regions/us-central1/subnetworks/subnet-b"
       },
       {
          "name":"router-appliance-interface-1",
          "privateIpAddress:"192.168.10.15",
          "subnetwork": "https://www.googleapis.com/compute/v1/projects/my-project/regions/us-central1/subnetworks/subnet-b",
          "redundantInterface": "router-appliance-interface-0"
       }
     ]
    }
    

在每个 Cloud Router 路由器上配置 BGP 对等互连

对于路由器设备实例上的每个接口,您必须创建两个 BGP 对等互连会话,每个 Cloud Router 路由器接口一个。如果您使用的是示例拓扑中的值,请执行以下操作:

  • cloud-router-arouter-app-anetwork-a 接口之间创建两个对等互连会话。

  • cloud-router-brouter-app-anetwork-b 接口之间创建两个对等互连会话。

控制台

完成以下步骤两次,一次针对 spoke-a,另一次针对 spoke-b

  1. 转到 Network Connectivity Center 页面。
  2. 前往 Network Connectivity Center
  3. 在项目菜单中,选择一个项目。
  4. 点击 Spoke 标签页。
  5. Spoke 名称列中,选择一个 Spoke 以查看 Spoke 详细信息页面。例如,选择 spoke-aspoke-b
  1. 名称列中,找到 router-app-a。 点击展开图标以显示配置 BGP 会话链接。点击其中一个链接。作为响应,系统会显示配置 Cloud Router 路由器和 BGP 会话面板。

  1. Cloud Router 下,执行以下某项操作:

    • 如需选择现有的 Cloud Router 路由器,请点击使用现有路由器。使用 Cloud Router 字段标识适当的资源,然后点击选择并继续
    • 如需在 Network Connectivity Center 页面上创建 Cloud Router,请点击新建,然后按照提示创建 Cloud Router。然后点击创建并继续
  2. BGP 会话下,设置这两个 BGP 会话。完成以下步骤两次(每个会话一次):
    1. 点击修改 BGP 会话
    2. 在表单中输入名称对等 ASN通告路由的优先级 (MED)。点击保存并继续
  3. 点击创建

gcloud

如需在 Cloud Router 路由器上创建 BGP 对等方,请使用 gcloud compute routers add-bgp-peer 命令

完成以下步骤两次,一次针对 cloud-router-a,另一次针对 cloud-router-b

  1. 创建第一个 BGP 对等方:

    gcloud compute routers add-bgp-peer NAME \
        --peer-name=PEER_NAME \
        --interface=INTERFACE \
        --peer-ip-address=PEER_IP_ADDRESS \
        --peer-asn=PEER_ASN \
        --instance=ROUTER_APPLIANCE \
        --instance-zone=ROUTER_APPLIANCE_ZONE \
        --region=REGION
    
  2. 创建第二个 BGP 对等方:

    gcloud compute routers add-bgp-peer NAME \
        --peer-name=PEER_NAME \
        --interface=INTERFACE \
        --peer-ip-address=PEER_IP_ADDRESS \
        --peer-asn=PEER_ASN \
        --instance=ROUTER_APPLIANCE \
        --instance-zone=ROUTER_APPLIANCE_ZONE \
        --region=REGION
    

    替换以下内容:

    • NAME:要更新的 Cloud Router 路由器的名称,例如 cloud-router-acloud-router-b
    • PEER_NAME:要与路由器设备实例建立的 BGP 对等互连会话的名称
    • INTERFACE:此 BGP 对等方的接口名称
    • PEER_IP_ADDRESS:对等路由器(路由器设备实例)的内部 IP 地址,例如 10.1.3.8192.168.10.3
    • PEER_ASN:此 BGP 对等方的 BGP 自治系统编号 (ASN) - 此 ASN 必须是 RFC 6996 中定义的 16 位或 32 位专用 ASN
    • ROUTER_APPLIANCE:用作路由器设备实例的虚拟机的名称,例如 router-app-a
    • ROUTER_APPLIANCE_ZONE:用作路由器设备实例的虚拟机所在的可用区,例如 us-central1-a
    • REGION:用作路由器设备实例的虚拟机所在的区域,例如 us-central1

    用于 cloud-router-a 的示例命令

    使用以下命令为 cloud-router-a 创建 BGP 对等体:

    gcloud compute routers add-bgp-peer cloud-router-a \
      --peer-name=router-appliance-bgp-peer-router-app-a-0 \
      --interface=router-appliance-interface-0 \
      --peer-ip-address=10.1.3.8 \
      --peer-asn=65001 \
      --instance=router-app-a \
      --instance-zone=us-central1-a \
      --region=us-central1
    
    gcloud compute routers add-bgp-peer cloud-router-a \
      --peer-name=router-appliance-bgp-peer-router-app-a-1 \
      --interface=router-appliance-interface-1 \
      --peer-ip-address=10.1.3.8 \
      --peer-asn=65001 \
      --instance=router-app-a \
      --instance-zone=us-central1-a \
      --region=us-central1
    

    用于 cloud-router-b 的示例命令

    使用以下命令为 cloud-router-b 创建 BGP 对等体:

    gcloud compute routers add-bgp-peer cloud-router-b \
       --peer-name=router-appliance-bgp-peer-router-app-a-0 \
      --interface=router-appliance-interface-0 \
      --peer-ip-address=192.168.10.3 \
      --peer-asn=65001 \
      --instance=router-app-a \
      --instance-zone=us-central1-a \
      --region=us-central1
    
    gcloud compute routers add-bgp-peer cloud-router-b \
      --peer-name=router-appliance-bgp-peer-router-app-a-1 \
      --interface=router-appliance-interface-1 \
      --peer-ip-address=192.168.10.3 \
      --peer-asn=65001 \
      --instance=router-app-a \
      --instance-zone=us-central1-a \
      --region=us-central1
    

API

如需在 Cloud Router 路由器上创建 BGP 对等方,请使用 compute.routers.patch 方法。使用此方法两次,一次对 cloud-router-a 使用,另一次对 cloud-router-b 使用。

 PATCH
https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/routers/NAME
   {
    "bgpPeers": [
     {
       "name": "PEER_NAME",
       "interfaceName": "INTERFACE_NAME",
       "ipAddress": "IP_ADDRESS",
       "peerIpAddress": "PEER_IP_ADDRESS",
       "routerApplianceInstance": "https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zone/ROUTER_APPLIANCE_ZONE/instances/ROUTER_APPLIANCE_INSTANCE",
       "peerAsn": PEER_ASN,
     }
     {
       "name": "PEER_NAME",
       "interfaceName": "INTERFACE_NAME",
       "ipAddress": "IP_ADDRESS",
       "peerIpAddress": "PEER_IP_ADDRESS",
       "routerApplianceInstance": "https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zone/ROUTER_APPLIANCE_ZONE/instances/ROUTER_APPLIANCE_INSTANCE",
       "peerAsn": PEER_ASN
     }
    ]
   }
 

请替换以下内容:

  • PROJECT_ID:Cloud Router 的项目 ID
  • REGION:用作路由器设备实例的虚拟机所在的区域
  • NAME:要更新的 Cloud Router 的名称
  • PEER_NAME:要与路由器设备实例建立的 BGP 对等互连会话的名称
  • INTERFACE_NAME:要将对等方添加到的 Cloud Router 接口的名称
  • IP_ADDRESS:用于对等互连会话的 Cloud Router 路由器的 RFC 1918 内部 IP 地址
  • PEER_IP_ADDRESS:用作路由器设备实例的虚拟机的内部 IP 地址;例如 10.1.3.8192.168.10.3
  • ROUTER_APPLIANCE_INSTANCE:用作路由器设备实例的虚拟机的网址格式名称
  • ROUTER_APPLIANCE_ZONE:用作路由器设备实例的虚拟机所在的地区
  • PEER_ASN:此 BGP 对等方的 BGP 自治系统编号 (ASN) - 此 ASN 必须是 RFC 6996 中定义的 16 位或 32 位专用 ASN

    用于 cloud-router-a 的示例命令

    PATCH
    https://compute.googleapis.com/compute/v1/projects/my-project/regions/us-west1/routers/cloud-router-a
    {
     "bgpPeers": [
     {
       "name": "router-appliance-bgp-peer-router-app-a-0",
       "interfaceName": "router-appliance-interface-0",
       "ipAddress": "10.1.3.14",
       "peerIpAddress": "10.1.3.8",
       "routerApplianceInstance": "https://compute.googleapis.com/compute/v1/projects/my-project/zone/us-central1-a/instances/router-app-a",
       "peerAsn": 65001,
     }
     {
       "name": "router-appliance-bgp-peer-router-app-a-1",
       "interfaceName": "router-appliance-interface-1",
       "ipAddress": "10.1.3.15",
       "peerIpAddress": "10.1.3.8",
       "routerApplianceInstance": "https://compute.googleapis.com/compute/v1/projects/my-project/zone/us-central1-a/instances/router-app-a",
       "peerAsn": 65001
     }
     ]
    }
    

    用于 cloud-router-b 的示例命令

    PATCH
    https://compute.googleapis.com/compute/v1/projects/my-project/regions/us-west1/routers/cloud-router-b
    {
     "bgpPeers": [
     {
       "name": "router-appliance-bgp-peer-router-app-a-0",
       "interfaceName": "router-appliance-interface-0",
       "ipAddress": "192.168.10.14",
       "peerIpAddress": "192.168.10.3",
       "routerApplianceInstance": "https://compute.googleapis.com/compute/v1/projects/my-project/zone/us-central1-a/instances/router-app-a",
       "peerAsn": 65001,
     }
     {
       "name": "router-appliance-bgp-peer-router-app-a-1",
       "interfaceName": "router-appliance-interface-1",
       "ipAddress": "192.168.10.15,
       "peerIpAddress": "192.168.10.3",
       "routerApplianceInstance": "https://compute.googleapis.com/compute/v1/projects/my-project/zone/us-central1-a/instances/router-app-a",
       "peerAsn": 65001
     }
     ]
    }
    

在路由器设备实例上配置 BGP

配置路由器设备实例,以与两个 Cloud Router 路由器建立 BGP 连接。为此,请参阅路由器设备映像的供应商文档。

后续步骤