创建路由器设备实例

路由器设备是 Network Connectivity Cente 支持的多种 spoke 型之一,它是 Google Cloud 中 Network Connectivity 管理的 hub-and-spoke 模型。本页面介绍如何创建路由器设备实例并完成相关设置任务。根据您选择的方法,其中一些任务可能是自动执行的。但是,必须先完成所有任务,然后才能与路由器设备 spoke 建立连接

这些任务包括:

  1. 创建路由器设备实例。您可以使用合作伙伴解决方案或您自己的自定义映像来实现此目的。

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

  3. 创建使用您的路由器设备实例的 spoke

  4. 设置 Cloud Router。此步骤包括以下子步骤:

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

    2. 在 Cloud Router 上创建两个冗余接口

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

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

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

配置示例

本页介绍如何设置示例配置。在此设置中,两个路由器设备实例在 Virtual Private Cloud (VPC) 网络和本地网络之间提供连接。Network Connectivity Center 使用等价多路径 (ECMP) 路由来跨路由器设备实例进行流量负载平衡。它使用边界网关协议 (BGP) 在网络之间分配路由。

示例配置将路由器设备实例放置在同一子网中。但是,每个路由器设备实例位于不同的可用区中。

每个路由器设备实例都维持与同一 Cloud Router 路由器的 BGP 会话。此 Cloud Router 路由器有两个接口。每个路由器设备实例与每个接口建立对等互连,总共四个对等互连会话。

为路由器设备创建 BGP 会话
为路由器设备实例创建 BGP 会话(点击可放大)

准备工作

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

创建或选择项目

如需更轻松地完成此页面上的过程,请完成以下步骤:

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

    转到“项目选择器”

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

  4. 安装并初始化 Cloud SDK
  5. 在 Google Cloud Console 的项目选择器页面上,选择或创建一个 Google Cloud 项目。

    转到“项目选择器”

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

  7. 安装并初始化 Cloud SDK
  1. 如果您使用的是 gcloud 命令行工具,请使用以下命令设置项目 ID。此页面上的 gcloud 说明假设您在发出命令前已设置了项目 ID。因此,命令不包含 --project 选项。
        gcloud config set project PROJECT_ID
        
  2. 您还可以使用已经设置的项目 ID:
        gcloud config list --format='text(core.project)'
        

获取访问权限

如需使用 Network Connectivity Center,您需要具有访问权限控制中所述的权限。

本页面还介绍如何使用其他 Google Cloud 资源,包括 VPC 网络、子网和防火墙规则。如需详细了解使用这些资源所需的权限,请参阅 Compute Engine 访问权限控制文档

API 注意事项

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

虚拟机接口和路由

如需简要了解 Compute Engine 虚拟机 (VM) 接口如何用于路由,请参阅路由器设备概览中的站点之间的数据传输用例

IP 地址和路由器设备实例

要设置路由器设备实例,您必须在该实例和 Cloud Router 路由器之间建立对等互连。如需设置对等互连,虚拟机必须使用 RFC 1918 内部 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

以下步骤介绍了如何创建名为 network-a 的自定义模式 VPC 网络。

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

控制台

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

gcloud

如需创建自定义 VPC 网络,请输入此命令:

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

NAME 替换为 VPC 网络的名称,例如 network-a

API

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

创建子网

network-a 中创建一个子网,以包含用作路由器设备实例的虚拟机实例。

控制台

如需使用 Cloud Console 添加子网,请参阅添加子网

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

  • 名称subnet-a-1
  • 区域us-west1
  • 范围10.0.1.0/24

gcloud

如需创建 VPC 子网,请输入此命令:

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

请替换以下内容:

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

API

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

创建路由器设备虚拟机

创建用作路由器设备实例的 Compute Engine 虚拟机。示例配置使用两个虚拟机:router-app-arouter-app-b

概括来讲,您可以通过创建使用网络虚拟设备映像的虚拟机来创建路由器设备映像。此映像可以是以下任何一种:

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

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

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

控制台

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

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

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

  • 展开网络、磁盘、安全、管理、单租户,然后展开网络。请使用以下值:

    • IP 转发下,选择启用
    • 网络接口下,选择添加网络接口并填写以下字段:
      • 选择您希望路由器设备实例所在的子网,例如 subnet-a-1
      • 主要内部 IP 地址下,选择您要使用的预留 RFC 1918 内部 IP 地址,例如 10.0.1.10
      • Network Service Tiers 下方,选择优质;此选择可最大限度地提高流量使用 Google 网络的范围。

gcloud

如需创建在示例配置中使用的两个路由器设备虚拟机,请运行以下命令两次。将 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

创建一条允许 BGP 流量到达 TCP 端口 179 上的 network-a 的防火墙规则。

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

控制台

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

gcloud

如需使用 gcloud 命令行工具创建 VPC 防火墙规则,请参阅使用 VPC 防火墙规则

API

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

创建路由器设备 Spoke

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

如需详细了解如何创建辐射,请参阅创建路由器辐射

控制台

输入基本 Spoke 详情

  1. 在 Google Cloud Console 中,转到 Network Connectivity Center 页面。
  2. 转到 Network Connectivity Center
  3. 在项目下拉菜单中,选择一个项目。
  4. 点击 Spoke 标签页。
  5. 点击添加 Spoke
  6. 网络下拉列表中,选择一个网络。Hub 的所有 Spoke 都必须位于同一 VPC 网络中。
  7. 新建 Spoke 表单中,输入 Spoke 名称,您也可以视需要输入相关说明

输入路由器设备详细信息

  1. Spoke 类型设置为路由器设备
  2. 选择 Spoke 的区域
  3. 选择一个路由器设备实例:
    1. 点击添加实例
    2. 实例菜单中,选择一个现有的路由器设备实例。
  4. 如需向此 Spoke 添加更多路由器设备实例,请重复上述步骤。完成后,点击完成,然后继续保存您的 Spoke

保存您的 Spoke

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

gcloud

如需创建路由器设备 spoke,请使用 gcloud alpha network-connectivity spokes create 命令。构建命令时,请为要与 spoke 相关联的每个路由器设备实例使用 --router-appliance 标志的实例。例如,如需使用两个路由器设备实例,请输入以下命令:

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

替换以下值:

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

    例如,以下命令会创建一个使用 router-app-arouter-app-b 作为其底层资源的路由器设备 spoke:

    gcloud alpha network-connectivity spokes create my-spoke \
        --hub="http://networkconnectivity.googleapis.com/v1/projects/my-project/locations/global/hubs/my-hub" \
        --description="Test spoke 1" \
        --router-appliance=instance="https://www.googleapis.com/compute/v1/projects/my-project/zones/us-west1-a/instances/router-app-a",ip=10.0.1.10 \
        --router-appliance=instance="https://www.googleapis.com/compute/v1/projects/my-project/zones/us-west1-b/instances/router-app-b",ip=10.0.1.11 \
        --region=us-west1 \
        --labels="environment"="test"
    

API

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

  POST https://networkconnectivity.googleapis.com/v1alpha1/projects/PROJECT_ID/locations/REGION/spokes/SPOKE_NAME
  {
    "hub": "HUB_URI",
    "labels: {"KEY": "VALUE"},
    "linkedRouterApplianceInstances": [
     {
      "virtual_machine": "ROUTER_APPLIANCE_URI",
      "ip_address": "INTERNAL_IP_ADDRESS",
     },
     {
      "virtual_machine": "ROUTER_APPLIANCE_URI",
      "ip_address": "INTERNAL_IP_ADDRESS",
     }],
   }
 

替换以下值:

  • PROJECT_ID:您的项目的 ID
  • REGION:您希望 spoke 所在的 Google Cloud 区域,例如 us-west1
  • SPOKE_NAME:您要为 spoke 指定的名称
  • HUB_URI:您要将 spoke 连接到的 hub 的 URI,例如
    https://www.googleapis.com/compute/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME 
  • KEY:可选标签文本的键值对中的键
  • VALUE:可选标签文本的键值对中的值
  • ROUTER_APPLIANCE_URI:路由器设备实例的 URI
  • INTERNAL_IP_ADDRESS:路由器设备实例的内部 IP 地址

    例如,如需创建使用 router-app-arouter-app-b 作为其底层资源的 spoke,请求正文的结构应如下所示:

    {
    "hub": "http://networkconnectivity.googleapis.com/v1/projects/my-project/locations/global/hubs/my-hub",
    
        "labels": {
           "environment" : "test"
         },
    
         "linked_router_appliance_instances": [
         {
            "virtual_machine": "https://www.googleapis.com/compute/v1/projects/my-project/zones/us-west1-a/instances/router-app-a",
            "ip_address": "10.0.1.10",
         },
         {
            "virtual_machine": "https://www.googleapis.com/compute/v1/projects/my-project/zones/us-west1-b/instances/router-app-b",
            "ip_address":  "10.0.1.11",
         },
        ]
    }
    
    

设置 Cloud Router 路由器

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

创建 Cloud Router 路由器

在路由器虚拟机所在的网络和区域中创建资源。在示例配置中,这些资源是 network-aus-west1

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

控制台

如需在 Cloud Console 中创建 Cloud Router 路由器,请使用以下其中一种方法:

gcloud

如要创建 Cloud Router,请输入以下命令:

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

请替换以下内容:

  • NAME:Cloud Router 的名称,例如 cloud-router-a
  • REGION:包含 Cloud Router 的区域,例如 us-west1
  • NETWORK:包含 Cloud Router 的 VPC 网络,例如 network-a
  • 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/beta/projects/PROJECT_ID/regions/REGION/routers
{
 "name": "NAME",
 "network": "NETWORK",
 "bgp": {
   "asn": ASN
  }
}

请替换以下内容:

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

在 Cloud Router 上创建两个冗余接口

在示例配置中创建两个冗余的 Cloud Router 路由器接口,该接口与 subnet-a-1 相关联。

Cloud Router 接口使用区域内部 IP 地址。

如果您明确指定接口的内部 IP 地址,则 IP 地址必须在子网的主要 IP 地址范围内。它必须尚未被其他资源(例如虚拟机或其他 Cloud Router 接口)使用。如提前预留子网中的 IP 地址,创建一个地址资源,然后使用 Cloud Router 接口的预留 IP 地址。

在此步骤中未提供 Cloud Console 说明,因为当您使用 Cloud Console 创建 BGP 对等端时,系统会自动为您创建接口。

gcloud

如需在 Cloud Router 上创建两个冗余接口,请输入以下命令。

如果您未指定 --ip-address 选项,Google 会尝试从子网的主要 IP 范围中查找一个免费的 IP 地址,以便分配给接口。

  1. 创建第一个 Cloud Router 接口:

    gcloud beta compute routers add-interface NAME \
        --interface-name=INTERFACE_NAME \
        --ip-address=IP_ADDRESS \
        --subnetwork=SUBNET \
        --region=REGION \
        --project=PROJECT_ID
    
  2. 创建冗余 Cloud Router 接口:

    gcloud beta compute routers add-interface NAME \
        --interface-name=INTERFACE_NAME \
        --ip-address=IP_ADDRESS \
        --subnetwork=SUBNET \
        --redundant-interface=REDUNDANT_INTERFACE \
        --region=REGION \
        --project=PROJECT_ID
    

    请替换以下内容:

    • NAME:要更新的 Cloud Router 的名称,例如 cloud-router-a
    • INTERFACE_NAME:接口的名称,例如 router-appliance-interface-0router-appliance-interface-1
    • IP_ADDRESS:用于接口的 RFC 1918 内部 IP 地址,例如 10.0.1.510.0.1.6
    • SUBNET:内部 IP 地址所在的子网,例如 subnet-a-1
    • REDUNDANT_INTERFACE:与主要接口具有相同路由器设备实例的对等 Cloud Router 接口,例如 router-appliance-interface-0
    • REGION:Cloud Router 所在的 Google Cloud 区域,例如 us-west1
    • PROJECT_ID:Cloud Router 的项目 ID,例如 my-project
  • 以下命令如示例配置中所述,在 Cloud Router 上创建了第一个接口:

    gcloud beta compute routers add-interface cloud-router-a \
        --interface-name=router-appliance-interface-0 \
        --ip-address=10.0.1.5 \
        --subnetwork=subnet-a-1 \
        --region=us-west1 \
        --project=my-project
    
  • 以下命令如示例配置中所述,在 Cloud Router 上创建了冗余接口:

    gcloud beta compute routers add-interface cloud-router-a \
        --interface-name=router-appliance-interface-1 \
        --ip-address=10.0.1.6 \
        --subnetwork=subnet-a-1 \
        --redundant-interface=router-appliance-interface-0 \
        --region=us-west1 \
        --project=my-project
    

API

如需在 Cloud Router 上创建两个冗余接口,请使用 compute.routers.patch 方法。

如果您未指定 privateIpAddress 选项,Google 会尝试从子网的主要 IP 范围中查找一个免费的 IP 地址,以便分配给接口。

  1. 创建第一个 Cloud Router 接口:

    "PATCH
    https"://www.googleapis.com/compute/beta/projects/PROJECT_ID/regions/REGION/routers/NAME
    {
      "region":"REGION",
      "interfaces":[
        {
          "name":"INTERFACE_NAME",
          "privateIpAddress:"IP_ADDRESS",
          "subnetwork": "https":"//www.googleapis.com/compute/beta/projects/PROJECT_ID/regions/REGION/subnetworks/SUBNET"
        }
      ]
    }
    
  2. 创建冗余 Cloud Router 接口:

    "PATCH
    https"://www.googleapis.com/compute/beta/projects/PROJECT_ID/regions/REGION/routers/NAME
    {
      "region":"REGION",
      "interfaces":[
        {
          "name":"INTERFACE_NAME_1",
          "privateIpAddress:"IP_ADDRESS",
          "subnetwork": "https://www.googleapis.com/compute/beta/projects/PROJECT_ID/regions/REGION/subnetworks/SUBNET"
        },
        {
          "name":"INTERFACE_NAME_2",
          "privateIpAddress:"IP_ADDRESS",
          "subnetwork": "https://www.googleapis.com/compute/beta/projects/PROJECT_ID/regions/REGION/subnetworks/SUBNET",
          "redundantInterface": "INTERFACE_NAME_1"
        }
      ]
    }
    

    请替换以下内容:

    • PROJECT_ID:Cloud Router 的项目 ID,例如 my-project
    • REGION:Cloud Router 所在的 Google Cloud 区域,例如 us-west1
    • NAME:要更新的 Cloud Router 的名称,例如 cloud-router-a
    • NETWORK:包含 Cloud Router 的 VPC 网络,例如 network-a
    • INTERFACE_NAME:接口的名称,例如 router-appliance-interface-0router-appliance-interface-1
    • SUBNET:包含 RFC 1918 内部 IP 地址的子网网址
    • IP_ADDRESS:接口使用的内部 IP 地址,例如 10.0.1.510.0.1.6
    • REDUNDANT_INTERFACE:与主要接口具有相同路由器设备实例的对等 Cloud Router 接口,例如 router-appliance-interface-0
  • 以下命令如示例配置中所述,在 cloud-router-a 上创建第一个接口:

    "PATCH https"://www.googleapis.com/compute/beta/projects/my-project/regions/us-west1/routers/cloud-router-a
    {
    "region":"us-west1",
    "interfaces":[
      {
        "name":"router-appliance-interface-0",
        "privateIpAddress:"10.0.1.5",
        "subnetwork": "https://www.googleapis.com/compute/beta/projects/my-project/regions/us-west1/subnetworks/>"
      }
    ]
    }
    
  • 以下命令如示例配置中所述,在 cloud-router-a 上创建了冗余接口:

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

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

对于每个路由器设备实例,您必须在 Cloud Router 路由器上创建两个 BGP 对等体,每个 Cloud Router 路由器接口一个。BGP 对等 IP 地址必须是配置为路由器设备实例的虚拟机的主要内部 IP 地址。

router-app-a 创建 BGP 对等端

本部分介绍如何在示例配置中为名为 router-app-a 的路由器设备实例创建两个 BGP 对等体。下一部分介绍如何在 router-app-b 上创建两个 BGP 对等体。

以下示例展示了如何将 router-app-a 配置为 Cloud Router cloud-router-a 两个接口上的 BGP 对等方。

控制台

  1. 转到 Network Connectivity Center 页面。
  2. 转到 Network Connectivity Center
  3. 在项目下拉菜单中,选择一个项目。
  4. 点击 Spoke 标签页。
  5. Spoke 名称列中,选择一个 Spoke 以查看 Spoke 详细信息页面。

  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 上为 router-app-a 创建两个 BGP 对等方,请输入以下命令。

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

    gcloud beta 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 beta 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 的名称
    • PEER_NAME:要与路由器设备实例建立的 BGP 对等互连会话的名称
    • INTERFACE:此 BGP 对等方的接口名称
    • PEER_IP_ADDRESS:对等路由器(路由器设备实例)的内部 IP 地址 - 此地址必须与虚拟机主要网络接口的主要内部 IP 地址匹配 (nic0)
    • PEER_ASN:此 BGP 对等方的 BGP 自治系统编号 (ASN) - 此 ASN 必须是 RFC 6996 中定义的 16 位或 32 位专用 ASN
    • ROUTER_APPLIANCE:用作路由器设备实例的虚拟机名称
    • ROUTER_APPLIANCE_ZONE:用作路由器设备实例的虚拟机所在的地区
    • REGION:用作路由器设备实例的虚拟机所在的区域

以下是 router-app-a 的示例配置:

  gcloud beta 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.0.1.10 \
      --peer-asn=65001 \
      --instance=router-app-a \
      --instance-zone=us-west1-a \
      --region=us-west1
  gcloud beta 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.0.1.10 \
      --peer-asn=65001 \
      --instance=router-app-a \
      --instance-zone=us-west1-a \
      --region=us-west1

API

如需在 Cloud Router 上为 router-app-a 创建两个 BGP 对等方,请使用 compute.routers.patch 方法。

PATCH
https://compute.googleapis.com/compute/beta/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 地址
  • ROUTER_APPLIANCE_INSTANCE:用作路由器设备实例的虚拟机的网址格式名称
  • ROUTER_APPLIANCE_ZONE:用作路由器设备实例的虚拟机所在的地区
  • PEER_ASN:此 BGP 对等方的 BGP 自治系统编号 (ASN) - 此 ASN 必须是 RFC 6996 中定义的 16 位或 32 位专用 ASN

以下是 router-app-a 的示例配置:

PATCH
https://compute.googleapis.com/compute/beta/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.0.1.5",
    "peerIpAddress": "10.0.1.10",
    "routerApplianceInstance": "https://compute.googleapis.com/compute/v1/projects/my-project/zone/us-west1-a/instances/router-app-a",
    "peerAsn": 65001,
  }
  {
    "name": "router-appliance-bgp-peer-router-app-a-1",
    "interfaceName": "router-appliance-interface-1",
    "ipAddress": "10.0.1.6",
    "peerIpAddress": "10.0.1.10",
    "routerApplianceInstance": "https://compute.googleapis.com/compute/v1/projects/my-project/zone/us-west1-a/instances/router-app-a",
    "peerAsn": 65001
   }
 ]
}

router-app-b 创建 BGP 对等端

如前所述,Cloud Router 可以与配置为路由器设备实例的多个虚拟机建立 BGP 会话。这些虚拟机必须属于同一个子网。如要创建此配置,请在同一 Cloud Router 接口上创建其他 BGP 对等互连会话。

上一部分介绍了如何为 router-app-a 设置 BGP 对等互连。本部分介绍如何在 Cloud Router 路由器 cloud-router-a 的两个接口上额外将 router-app-b 配置为 BGP 对等体。

控制台

  1. 转到 Network Connectivity Center 页面。
  2. 转到 Network Connectivity Center
  3. 在项目下拉菜单中,选择一个项目。
  4. 点击 Spoke 标签页。
  5. Spoke 名称列中,选择一个 Spoke 以查看 Spoke 详细信息页面。

  1. 名称列中,找到 router-app-b。点击展开图标以显示配置 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 上为 router-app-b 创建两个 BGP 对等方,请使用以下命令。

  • 第一个 BGP 对等方的示例配置:

    gcloud beta compute routers add-bgp-peer cloud-router-a \
        --peer-name=router-appliance-bgp-peer-router-app-b-0 \
        --interface=router-appliance-interface-0 \
        --peer-ip-address=10.0.1.11 \
        --peer-asn=65002 \
        --instance=router-app-b \
        --instance-zone=us-west1-a \
        --region=us-west1
    
  • 第二个 BGP 对等方的示例配置:

    gcloud beta compute routers add-bgp-peer cloud-router-a \
        --peer-name=router-appliance-bgp-peer-router-app-b-1 \
        --interface=router-appliance-interface-1 \
        --peer-ip-address=10.0.1.11 \
        --peer-asn=65002 \
        --instance=router-app-b \
        --instance-zone=us-west1-a \
        --region=us-west1
    

API

如需在 Cloud Router 上为 router-app-b 创建两个 BGP 对等方,请使用 compute.routers.patch 方法。

请参阅以下示例配置示例:

PATCH
https://compute.googleaps.com/compute/beta/projects/my-project/regions/us-west1/routers/cloud-router-a
{
  "bgpPeers": [
  {
    "name": "router-appliance-bgp-peer-router-app-b-0",
    "interfaceName": "router-appliance-interface-0",
    "ipAddress": "10.0.1.5",
    "peerIpAddress": "10.0.1.11",
    "routerApplianceInstance": "https://compute.googleapis.com/compute/v1/projects/my-project/zone/us-west1-a/instances/router-app-b",
    "peerAsn": 65002,
  }
  {
    "name": "router-appliance-bgp-peer-router-app-b-1",
    "interfaceName": "router-appliance-interface-1",
    "ipAddress": "10.0.1.6",
    "peerIpAddress": "10.0.1.11",
    "routerApplianceInstance": "https://compute.googleapis.com/compute/v1/projects/my-project/zone/us-west1-a/instances/router-app-b",
    "peerAsn": 65002
   }
 ]
}

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

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

后续步骤