路由器设备是 Network Connectivity Center 支持的多种 spoke 类型之一。本页面介绍如何创建和设置路由器设备实例。根据您选择的方法,此流程的某些部分可能是自动执行的。但是,您必须先完成所有必需的任务,然后才能使用路由器设备 spoke 建立连接。
必要的任务包括:
创建您要用作路由器设备实例的虚拟机。您可以使用受支持的合作伙伴解决方案或您自己的自定义映像来创建虚拟机。
确保路由器设备实例可通过 TCP 端口 179 访问 BGP 流量。为确保此可访问性,您可能需要创建防火墙规则。
创建一个使用路由器设备实例的 spoke。
设置 Cloud Router。此任务包含以下子任务:
在路由器设备实例所在的区域中创建 Cloud Router 路由器。
在 Cloud Router 路由器上创建两个接口。
在 Cloud Router 路由器上配置 BGP 对等互连。
在路由器设备实例上配置 BGP 对等互连。
完成这些任务的方式可能明显不同。例如,如果您使用合作伙伴解决方案创建路由器设备实例,那么系统可能会自动为您执行某些后续任务。
借助 Network Connectivity Center,您可以实现用于在 Google Cloud 中进行网络连接管理的中心辐射型架构。如需了解详情,请参阅 Network Connectivity Center 概览。
配置示例
本页面介绍了如何设置示例站点到云配置。在此设置中,两个路由器设备实例在 Virtual Private Cloud (VPC) 网络和本地网络之间提供连接。Network Connectivity Center 使用等价多路径 (ECMP) 路由来跨路由器设备实例进行流量负载均衡。它使用边界网关协议 (BGP) 在网络之间分配路由。
示例配置将路由器设备实例放置在同一子网中。但是,每个路由器设备实例位于不同的可用区中。
每个路由器设备实例都维持与同一 Cloud Router 路由器的 BGP 会话。此 Cloud Router 路由器有两个接口。每个路由器设备实例与每个接口建立对等互连,总共四个对等互连会话。
此拓扑并不是站点到站点的数据传输示例。但是,设置此拓扑的说明与用于站点到站点数据传输拓扑的一半的说明几乎相同;说明中注明了例外情况。如需详细了解站点到站点数据传输,请参阅路由器设备概览。
准备工作
开始之前,请查看以下部分。
创建或选择项目
为了更轻松地配置 Network Connectivity Center,请先确定有效项目。
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
如果您使用的是 Google Cloud CLI,请使用
gcloud config set
命令设置项目 ID。gcloud config set project PROJECT_ID
将
PROJECT_ID
替换为您的唯一项目 ID。此页面上的 gcloud CLI 说明假定您已设置项目 ID。
如需确认您正确设置了项目 ID,请使用
gcloud config list
命令。gcloud config list --format='text(core.project)'
启用 Network Connectivity API
您必须先启用 Network Connectivity API,然后才能使用 Network Connectivity Center 执行任何任务。
控制台
如要启用 Network Connectivity API,请执行以下操作:
在 Google Cloud 控制台中,转到 Network Connectivity Center 页面。
点击启用。
或者,您可以使用 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 地址,这样该地址在重新启动期间就不会发生变化。如果地址更改,则 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 控制台创建自定义 VPC 网络,请参阅创建自定义模式网络。确保将动态路由模式设置为全局性。如果要遵循示例配置中使用的命名惯例,请调用网络 network-a
。
gcloud
如需创建自定义 VPC 网络,请使用 gcloud compute networks create
命令。
gcloud compute networks create NETWORK \ --subnet-mode custom \ --bgp-routing-mode global
将 NETWORK
替换为 VPC 网络的名称,例如 network-a
。
API
如需使用 Compute Engine API 创建自定义 VPC 网络,请参阅创建和管理 VPC 网络。
创建子网
在 network-a
中创建一个子网,以包含用作路由器设备实例的虚拟机实例。
控制台
如需使用 Google Cloud 控制台添加子网,请参阅添加子网。
如果要遵循示例配置中使用的命名惯例,请使用以下值:
- 名称:
subnet-a-1
- 区域:
us-west1
- 范围:
10.0.1.0/24
gcloud
如需创建 VPC 子网,请使用 gcloud compute networks subnets create
命令。
gcloud compute networks subnets create SUBNET \ --network=NETWORK \ --region=REGION \ --range=RANGE
请替换以下内容:
SUBNET
:包含路由器设备虚拟机的子网的名称,例如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-a
和 router-app-b
。
概括来讲,您可以通过创建使用网络虚拟设备映像的虚拟机来创建路由器设备映像。此映像可以是以下任何一种:
自定义映像(例如您创建的映像)
如需详细了解如何指定映像,请参阅以下资源:
如需详细了解如何创建虚拟机,请参阅创建和启动虚拟机实例。
本部分中的示例假设您已经为路由器设备实例预留 IP 地址。如需了解详情,请参阅IP 地址和路由器设备实例。
控制台
如需创建示例配置中显示的两个虚拟机,请参阅创建和启动虚拟机实例。创建虚拟机时,请选择以下选项:
如果要遵循示例配置中使用的命名惯例,请使用以下值:
- 名称:
router-app-a
或router-app-b
- 区域:
us-west1
- 可用区:
us-west1-a
或us-west1-b
- 名称:
如需选择映像,请转到页面的启动磁盘区域,点击更改,然后导航到虚拟机的相应映像。
展开高级选项,然后展开网络。 请使用以下值:
- 在 IP 转发下,选择启用。
- 在网络接口下,选择添加网络接口,并填写以下字段:
- 选择您希望路由器设备实例所在的子网,例如
subnet-a-1
。 - 在主要内部 IP 地址下,选择您要使用的预留 RFC 1918 内部 IP 地址,例如
10.0.1.10
。 - 在 Network Service Tiers 下方,选择优质;此选择可最大限度地提高流量使用 Google 网络的范围。
- 选择您希望路由器设备实例所在的子网,例如
gcloud
如需创建示例配置中显示的两个路由器设备虚拟机,请使用 gcloud compute instances create
命令。使用该命令两次,一次用于创建 router-app-a
,另一次用于创建 router-app-b
。
以下示例代码段会为虚拟机分配一个静态内部 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-a
或router-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
方法。使用该方法两次,一次用于创建 router-app-a
,另一次用于创建 router-app-b
。
以下示例代码段会为虚拟机分配一个静态内部 IP 地址和一个静态外部 IP 地址。它还会指定供应商提供的用于虚拟机的映像。
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-a
或router-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
的防火墙规则。
请务必还要创建特定的防火墙规则,以允许流量流向网络虚拟设备 (NVA)。
如需详细了解防火墙命令,请参阅使用 VPC 防火墙规则。
控制台
如需使用 Google Cloud 控制台创建 VPC 防火墙规则,请参阅使用 VPC 防火墙规则。
gcloud
如需使用 Google Cloud CLI 创建 VPC 防火墙规则,请参阅使用 VPC 防火墙规则。
API
如需使用 Compute Engine API 创建 VPC 防火墙规则,请参阅使用 VPC 防火墙规则。
创建 Network Connectivity Center 资源
您必须先创建所需的 Network Connectivity Center 资源(包括路由器设备 spoke),然后才能使用路由器设备虚拟机。
创建 hub
您必须先创建一个 Hub,然后才能创建 Network Connectivity Center spoke。
控制台
在 Google Cloud 控制台中,转到 Network Connectivity Center 页面。
在项目菜单中,选择一个项目。
输入 Hub 名称。
输入可选说明。
验证项目 ID。如果项目 ID 不正确,请使用屏幕顶部的菜单选择其他项目。
点击继续。
控制台会显示一个可让您创建 spoke 的表单,。如需立即填写,请使用创建路由器设备 spoke 中所述的步骤。
点击完成。
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 所属项目的项目IDHUB_NAME
:新 Hub 的名称DESCRIPTION
:用于描述该 Hub 的可选文本KEY
:可选标签文本的键值对中的键VALUE
:可选标签文本的键值对中的值
创建路由器设备 Spoke
创建一个路由器设备 Spoke,以使用您刚刚创建的两个路由器设备实例。您需要创建 spoke,才能在路由器设备实例和 Cloud Router 路由器(将在下一步中创建)之间启用 BGP 对等互连。
如需详细了解如何创建 spoke,请参阅使用 hub 和 spoke。
控制台
输入基本 Spoke 详情
- 在 Google Cloud 控制台中,转到 Network Connectivity Center 页面。 转到 Network Connectivity Center
- 在项目菜单中,选择一个 Google Cloud 项目。
- 点击 Spoke 标签页。
- 点击添加 Spoke。
- 在新 spoke 表单中,设置 Spoke 类型。
- 输入 Spoke 名称和(可选)说明。
- 选择新 spoke 的区域字段。
- 在站点到站点数据传输下,选择开启或关闭。如果您选择的区域不支持数据传输,则该字段处于停用状态。如需详细了解此使用场景,请参阅站点到站点数据传输概览。
- 在 VPC 网络列表中,选择一个网络。如果您有多个使用数据传输功能的 Spoke,则所有这些 Spoke 都必须位于同一 VPC 网络中。因此,如果您已创建某个使用数据传输功能的 Spoke,则 VPC 网络值会被预填充且无法更改。
输入路由器设备详细信息
- 将 Spoke 类型设置为路由器设备。
- 选择 Spoke 的区域。
- 选择一个路由器设备实例:
- 点击添加实例。
- 从实例菜单中,选择一个现有的路由器设备实例。
- 如需向此 Spoke 添加更多路由器设备实例,请重复上述步骤。完成后,点击完成,然后继续保存您的 Spoke。
保存您的 Spoke
- 如果要添加更多 Spoke,请点击添加 Spoke,然后重新开始该过程,从输入 Spoke 名称开始。
- 添加完 Spoke 后,点击创建。 Network Connectivity Center 页面会更新,以显示您创建的 Spoke 的详细信息。
gcloud
如需创建路由器设备 spoke,请使用 gcloud network-connectivity spokes linked-router-appliances create
命令。
以下示例代码段会创建一个包含两个路由器设备实例的 spoke。在此示例中,spoke 不使用站点到站点数据传输功能。(如需启用数据传输,请再添加一个标志 --site-to-site-data-transfer
。)
gcloud network-connectivity spokes linked-router-appliances create NAME \ --hub="HUB_NAME" \ --description="DESCRIPTION" \ --router-appliance=instance="ROUTER_APPLIANCE_URI",ip=IP_ADDRESS \ --router-appliance=instance="ROUTER_APPLIANCE_URI_2",ip=IP_ADDRESS_2 \ --region=REGION \ --labels="KEY"="VALUE"
替换以下值:
NAME
:Spoke 的名称HUB_NAME
:您要将 spoke 连接到的 hub 的名称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 地址ROUTER_APPLIANCE_URI_2
:第二个路由器设备实例的 URIIP_ADDRESS_2
:第二个路由器设备实例的内部 IP 地址REGION
:您希望 spoke 所在的 Google Cloud 区域,例如us-west1
KEY
:可选标签文本的键值对中的键VALUE
:可选标签文本的键值对中的值例如,以下命令会创建一个使用
router-app-a
和router-app-b
作为其底层资源的路由器设备 spoke:gcloud network-connectivity spokes linked-router-appliances create my-spoke \ --hub=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"
如需创建相同的 spoke 但启用数据传输,请使用以下命令:
gcloud network-connectivity spokes linked-router-appliances create my-spoke \ --hub=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" --site-to-site-data-transfer
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, }, { "virtualMachine": "ROUTER_APPLIANCE_URI_2, "ipAddress": INTERNAL_IP_ADDRESS_2, } ], "siteToSiteDataTransfer": BOOLEAN } }
替换以下值:
PROJECT_ID
:您的项目的项目 IDREGION
:您希望 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
:第一个路由器设备实例的内部 IP 地址ROUTER_APPLIANCE_URI_2
:第二个路由器设备实例的 URIIP_ADDRESS_2
:第二个路由器设备实例的内部 IP 地址BOOLEAN
:用于确定是否为 spoke 启用站点到站点数据传输的值例如,如需创建使用
router-app-a
和router-app-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-west1-a/instances/router-app-a", "ipAddress": "10.0.1.10", }, { "virtualMachine": "https://www.googleapis.com/compute/v1/projects/my-project/zones/us-west1-b/instances/router-app-b", "ipAddress": "10.0.1.11", } ], "siteToSiteDataTransfer": true } }
设置 Cloud Router
路由器设备使用 Cloud Router 与您的 VPC 网络交换路由。因此,您必须创建一个 Cloud Router 路由器并完成一些其他设置任务。
创建 Cloud Router 路由器
在路由器虚拟机所在的网络和区域中创建资源。在示例配置中,这些资源是 network-a
和 us-west1
。
如需了解详情,请参阅创建 Cloud Router 路由器。
控制台
如需在 Google Cloud 控制台中创建 Cloud Router 路由器,请使用以下方法之一:
使用 Cloud Router 页面,如创建 Cloud Router 路由器中所述。
使用 Network Connectivity Center 页面。这种方法的优点是,它可让您同时创建路由器、接口和 BGP 会话。如需详细了解如何一起完成所有这些步骤,请参阅在 Cloud Router 路由器上配置 BGP 对等互连。
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-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/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-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 地址。
在此步骤中未提供 Google Cloud 控制台说明,因为当您使用 Google Cloud 控制台创建 BGP 对等端时,系统会自动为您创建接口。
gcloud
如需创建示例配置中显示的两个冗余 Cloud Router 路由器接口,请使用 gcloud compute routers add-interface
命令。使用该命令两次,一次用于创建 router-appliance-interface-0
,另一次用于创建 router-appliance-interface-1
。
如果您未指定 --ip-address
选项,Google 会尝试从子网的主要 IP 范围中查找一个免费的 IP 地址,以便分配给接口。
创建第一个 Cloud Router 接口:
gcloud compute routers add-interface NAME \ --interface-name=INTERFACE_NAME \ --ip-address=IP_ADDRESS \ --subnetwork=SUBNET \ --region=REGION \ --project=PROJECT_ID
创建冗余 Cloud Router 接口:
gcloud compute routers add-interface NAME \ --interface-name=INTERFACE_2_NAME \ --ip-address=IP_ADDRESS \ --subnetwork=SUBNET \ --redundant-interface=INTERFACE_NAME \ --region=REGION \ --project=PROJECT_ID
请替换以下内容:
NAME
:要更新的 Cloud Router 的名称,例如cloud-router-a
INTERFACE_NAME
:接口的名称,例如router-appliance-interface-0
IP_ADDRESS
:用于接口的 RFC 1918 内部 IP 地址,例如10.0.1.5
或10.0.1.6
SUBNET
:包含内部 IP 地址的子网,例如subnet-a-1
INTERFACE_2_NAME
:与主要接口具有相同路由器设备实例的对等 Cloud Router 接口,例如router-appliance-interface-1
REGION
:Cloud Router 路由器所在的 Google Cloud 区域,例如us-west1
PROJECT_ID
:Cloud Router 的项目 ID,例如my-project
以下命令如示例配置中所述,在 Cloud Router 上创建了第一个接口:
gcloud 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 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
方法。使用该方法两次,一次用于创建 router-appliance-interface-0
,另一次用于创建 router-appliance-interface-1
。
如果您未指定 privateIpAddress
选项,Google 会尝试从子网的主要 IP 范围中查找一个免费的 IP 地址,以便分配给接口。
创建第一个 Cloud Router 接口:
"PATCH https"://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/routers/NAME { "region":"REGION", "interfaces":[ { "name":"INTERFACE_NAME", "privateIpAddress:"IP_ADDRESS", "subnetwork": "https":"//www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/subnetworks/SUBNET" } ] }
创建冗余 Cloud Router 接口:
"PATCH https"://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/routers/NAME { "region":"REGION", "interfaces":[ { "name":"INTERFACE_NAME_1", "privateIpAddress:"IP_ADDRESS", "subnetwork": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/subnetworks/SUBNET" }, { "name":"INTERFACE_NAME_2", "privateIpAddress:"IP_ADDRESS", "subnetwork": "https://www.googleapis.com/compute/v1/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_1
:主要接口的名称,例如router-appliance-interface-0
SUBNET
:包含 RFC 1918 内部 IP 地址的子网网址IP_ADDRESS
:接口使用的内部 IP 地址,例如10.0.1.5
或10.0.1.6
INTERFACE_NAME_2
:冗余 Cloud Router 路由器接口的名称,例如router-appliance-interface-1
以下命令如示例配置中所述,在
cloud-router-a
上创建第一个接口:"PATCH https"://www.googleapis.com/compute/v1/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/v1/projects/my-project/regions/us-west1/subnetworks/>" } ] }
以下命令如示例配置中所述,在
cloud-router-a
上创建了冗余接口:"PATCH https"://www.googleapis.com/compute/v1/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/v1/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/v1/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 对等方。
控制台
- 转到 Network Connectivity Center 页面。 转到 Network Connectivity Center
- 在项目下拉菜单中,选择一个项目。
- 点击 Spoke 标签页。
- 在 Spoke 名称列中,选择一个 Spoke 以查看 Spoke 详细信息页面。
在名称列中,找到
router-app-a
。 点击展开图标以显示配置 BGP 会话链接。点击其中一个链接。作为响应,系统会显示配置 Cloud Router 路由器和 BGP 会话面板。
-
在 Cloud Router 路由器部分中,执行以下操作之一:
- 如需选择现有的 Cloud Router 路由器,请点击使用现有路由器。使用 Cloud Router 字段标识适当的资源,然后点击选择并继续。
- 如需在 Network Connectivity Center 页面上创建 Cloud Router,请点击新建,然后按照提示创建 Cloud Router。然后点击创建并继续。
- 在 BGP 会话下,设置这两个 BGP 会话。完成以下步骤两次(每个会话一次):
- 点击修改 BGP 会话。
- 在表单中输入名称、对等 ASN 和通告路由的优先级 (MED)。点击保存并继续。
- 点击创建。
gcloud
如需在 Cloud Router 路由器上为 router-app-a
创建 BGP 对等方,请使用 gcloud compute routers add-bgp-peer
命令。使用该命令两次,一次用于创建第一个 BGP 对等方,另一次用于创建第二个 BGP 对等方。
创建第一个 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
创建第二个 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 的名称PEER_NAME
:要与路由器设备实例建立的 BGP 对等互连会话的名称INTERFACE
:此 BGP 对等方的接口名称PEER_IP_ADDRESS
:对等路由器(路由器设备实例)的内部 IP 地址 - 此地址必须与虚拟机主要网络接口的主要内部 IP 地址匹配 (nic0
)PEER_ASN
:此 BGP 对等方的 BGP 自治系统编号 (ASN) - 此 ASN 必须是 RFC 6996 中定义的 16 位或 32 位专用 ASNROUTER_APPLIANCE
:用作路由器设备实例的虚拟机名称ROUTER_APPLIANCE_ZONE
:用作路由器设备实例的虚拟机所在的可用区REGION
:用作路由器设备实例的虚拟机所在的区域
以下示例代码段展示了如何为 router-app-a
创建两个对等方:
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.0.1.10 \ --peer-asn=65001 \ --instance=router-app-a \ --instance-zone=us-west1-a \ --region=us-west1
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.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
方法。使用该方法两次,一次用于创建第一个 BGP 对等方,另一次用于创建第二个 BGP 对等方。
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 的项目 IDREGION
:用作路由器设备实例的虚拟机所在的区域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/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.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 对等体。
控制台
- 转到 Network Connectivity Center 页面。 转到 Network Connectivity Center
- 在项目下拉菜单中,选择一个项目。
- 点击 Spoke 标签页。
- 在 Spoke 名称列中,选择一个 Spoke 以查看 Spoke 详细信息页面。
- 在名称列中,找到
router-app-b
。点击展开图标以显示配置 BGP 会话链接。点击其中一个链接。作为响应,系统会显示配置 Cloud Router 路由器和 BGP 会话面板。
-
在 Cloud Router 路由器部分中,执行以下操作之一:
- 如需选择现有的 Cloud Router 路由器,请点击使用现有路由器。使用 Cloud Router 字段标识适当的资源,然后点击选择并继续。
- 如需在 Network Connectivity Center 页面上创建 Cloud Router,请点击新建,然后按照提示创建 Cloud Router。然后点击创建并继续。
- 在 BGP 会话下,设置这两个 BGP 会话。完成以下步骤两次(每个会话一次):
- 点击修改 BGP 会话。
- 在表单中输入名称、对等 ASN 和通告路由的优先级 (MED)。点击保存并继续。
- 点击创建。
gcloud
如需在 Cloud Router 路由器上为 router-app-b
创建两个 BGP 对等方,请使用 gcloud compute routers add-bgp-peer
命令。使用该命令两次,一次用于创建第一个 BGP 对等方,另一次用于创建第二个 BGP 对等方。
第一个 BGP 对等方的示例配置:
gcloud 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-b \ --region=us-west1
第二个 BGP 对等方的示例配置:
gcloud 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-b \ --region=us-west1
API
如需在 Cloud Router 路由器上为 router-app-b
创建两个 BGP 对等方,请使用 compute.routers.patch
方法。使用该方法两次,一次用于创建第一个 BGP 对等方,另一次用于创建第二个 BGP 对等方。
PATCH https://compute.googleaps.com/compute/v1/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-b/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-b/instances/router-app-b", "peerAsn": 65002 } ] }
在路由器设备实例上配置 BGP
如需配置路由器设备实例以与 Cloud Router 路由器建立 BGP 连接,请参阅路由器设备映像的供应商文档。
使用自定义已知路由
您可以选择将路由器设备实例配置为使用自定义已知路由。配置自定义已知路由时,Cloud Router 路由器的行为就像它从 BGP 对等方(路由器设备实例)获知路由一样。
如需使用自定义路由,请完成以下步骤:
登录设备。对于要指定的每个自定义路由,请为该 IP 前缀配置静态路由,并将下一个跃点设置为外部网络。此步骤是必须完成的,因为路由器设备实例需要知道如何转发使用自定义已知路由的流量。
更新 Cloud Router 路由器上的 BGP 会话以使用自定义已知路由。按照更新现有会话以使用自定义已知路由中的步骤操作。
使用 MD5 身份验证
如果您使用的路由器设备映像支持 MD5 身份验证,则可以选择向 BGP 对等互连会话添加身份验证。如需了解如何将 MD5 身份验证用于 Cloud Router 路由器,请参阅使用 MD5 身份验证。
后续步骤
- 如需删除路由器设备实例,请参阅删除路由器设备实例。
- 如需查看其解决方案已与 Network Connectivity Center 集成的合作伙伴列表,请参阅 Network Connectivity Center 合作伙伴。
- 如需查看路由器设备监控和日志记录信息,请参阅查看日志和指标。
- 如需查找路由器设备问题的解决方案,请参阅问题排查。
- 如需详细了解 API 和 gcloud CLI,请参阅 API 和参考文档。