使用 Hybrid Subnets 将工作负载迁移到 Google Cloud
Hybrid Subnets 可帮助您将工作负载从本地网络迁移到虚拟私有云 (VPC) 网络,而无需更改任何 IP 地址。本文档介绍了配置混合子网路由、测试本地网络和 VPC 网络共享的 CIDR 地址块之间的连接,以及从本地网络迁移工作负载的步骤。
准备工作
请确保您已完成准备 Hybrid Subnets 连接中的步骤。
启用混合子网路由
如需支持共享 CIDR 地址块的本地网络和 VPC 网络之间的内部连接,您需要至少一个 已启用 混合子网路由的子网。
使用混合子网路由的子网必须满足以下要求:
- 它必须与 Cloud Router 和提供混合连接的 高可用性 VPN 隧道或 VLAN 连接位于同一区域。
- 子网的 IPv4 地址范围必须与托管您要迁移的工作负载的本地网络的 IP 地址范围匹配。
您可以在创建新子网时启用混合子网路由,也可以更新现有子网以启用此功能。
创建已启用混合子网路由的新子网
如需创建已启用混合子网路由的新子网,请执行以下操作。
控制台
在 Google Cloud 控制台中,前往 VPC 网络页面。
点击要在其中配置混合子网路由的 VPC 网络的名称。
点击子网 标签页。
点击添加子网。在显示的面板中:
- 提供名称。
- 选择区域。
- 在用途部分中,选择无。
- 在堆栈类型 部分中,选择 IPv4(单栈) 。
- 在 IPv4 范围 字段中,输入此子网与您要迁移的工作负载之间共享的 CIDR 地址块。
- 在混合子网 部分中,选择开启 。
- 点击 Add (添加)。
gcloud
使用 gcloud compute networks subnets create 命令。
gcloud compute networks subnets create SUBNET \
--network=NETWORK \
--region=REGION \
--range=RANGE \
--allow-cidr-routes-overlap
替换以下内容:
SUBNET:子网的名称NETWORK:子网的 VPC 网络的名称RANGE:此子网与您要迁移的工作负载之间共享的 CIDR 地址块。REGION:子网的区域
API
创建启用了混合子网路由的新子网。
在使用任何请求数据之前, 请先进行以下替换:
- PROJECT_ID:您的项目的 ID
- REGION:您的子网的地区
- SUBNET:您的子网的名称
- NETWORK_NAME:子网的 VPC 网络的名称
- RANGE:此子网与您要迁移的工作负载之间共享的 CIDR 地址块。
HTTP 方法和网址:
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/subnetworks
请求 JSON 正文:
{ "name": "SUBNET", "network": "projects/PROJECT_ID/global/networks/NETWORK_NAME", "ipCidrRange": "RANGE", "allowSubnetCidrRoutesOverlap": true }如需发送您的请求,请展开以下选项之一:
您应该收到类似以下内容的 JSON 响应:
{ "kind": "compute#operation", "id": "5973660558170953708", "name": "operation-1680288003494-5f8368991917a-59bf1c92-1897c7c6", "operationType": "insert", "targetLink": "https://www.googleapis.com/compute/v1/projects/test-project/regions/us-central1/subnetworks/subnet-name", "targetId": "5514771331600183201", "status": "RUNNING", "user": "user@gmail.com", "progress": 0, "insertTime": "2023-03-31T11:40:03.882-07:00", "startTime": "2023-03-31T11:40:03.893-07:00", "selfLink": "https://www.googleapis.com/compute/v1/projects/test-project/regions/us-central1/operations/operation-1680288003494-5f8368991917a-59bf1c92-1897c7c6", "region": "https://www.googleapis.com/compute/v1/projects/test-project/regions/us-central1" }
为现有子网启用混合子网路由
如需为现有子网启用混合子网路由,请执行以下操作。
控制台
在 Google Cloud 控制台中,前往 VPC 网络页面。
点击包含要更新的子网的 VPC 网络的名称。
点击子网标签页。
点击要更新的子网。
点击修改。
在混合子网部分中,选择开启。
点击保存。
gcloud
使用 gcloud compute networks subnets update 命令。
gcloud compute networks subnets update SUBNET \
--region=REGION \
--allow-cidr-routes-overlap
替换以下内容:
SUBNET:子网的名称REGION:子网的区域
API
找到子网的
fingerprintID。在使用任何请求数据之前,请先进行以下替换:
- PROJECT_ID:您的项目的 ID
- REGION:您的子网的地区
- SUBNET_NAME:您的子网的名称
HTTP 方法和网址:
GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME
如需发送您的请求,请展开以下选项之一:
您应该收到类似以下内容的 JSON 响应:
{ "kind": "compute#subnetwork", "id": "5514771331600183201", "creationTimestamp": "2022-09-16T12:41:02.010-07:00", "name": "subnet-name", "network": "https://www.googleapis.com/compute/v1/projects/project-name/global/networks/network-name", "ipCidrRange": "10.6.0.0/16", "gatewayAddress": "10.6.0.1", "region": "https://www.googleapis.com/compute/v1/projects/project-name/regions/us-central1", "selfLink": "https://www.googleapis.com/compute/v1/projects/project-name/regions/us-central1/subnetworks/subnet-name", "privateIpGoogleAccess": true, "fingerprint": "YiItidAFRsA5", "allowSubnetCidrRoutesOverlap": false, "enableFlowLogs": true, "privateIpv6GoogleAccess": "DISABLE_GOOGLE_ACCESS", "purpose": "PRIVATE", "stackType": "IPV4_ONLY" }启用混合子网路由。
在使用任何请求数据之前,请将 SUBNET_FINGERPRINT 替换为您在上一个请求中找到的子网的指纹 ID,例如
YiItidAFRsA5。HTTP 方法和网址:
PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME
请求 JSON 正文:
{ "allowSubnetCidrRoutesOverlap": true, "fingerprint": "SUBNET_FINGERPRINT" }如需发送您的请求,请展开以下选项之一:
您应该收到类似以下内容的 JSON 响应:
{ "kind": "compute#operation", "id": "5973660558170953708", "name": "operation-1680288003494-5f8368991917a-59bf1c92-1897c7c6", "operationType": "compute.subnetworks.patch", "targetLink": "https://www.googleapis.com/compute/v1/projects/test-project/regions/us-central1/subnetworks/subnet-name", "targetId": "5514771331600183201", "status": "RUNNING", "user": "user@gmail.com", "progress": 0, "insertTime": "2023-03-31T11:40:03.882-07:00", "startTime": "2023-03-31T11:40:03.893-07:00", "selfLink": "https://www.googleapis.com/compute/v1/projects/test-project/regions/us-central1/operations/operation-1680288003494-5f8368991917a-59bf1c92-1897c7c6", "region": "https://www.googleapis.com/compute/v1/projects/test-project/regions/us-central1" }如需验证您的子网是否已启用
allowSubnetCidrRoutesOverlap, 请发出另一个GET请求,并确保响应 包含以下内容:"allowSubnetCidrRoutesOverlap": true
测试从 VPC 网络到本地网络的网络连接
如需测试 VPC 网络与本地网络之间通过共享 CIDR 地址块的连接,您可以执行以下操作:
- 在 使用混合子网路由的子网中创建测试虚拟机。
- 请记下主要内部 IPv4 地址 的测试虚拟机。
- 在包含测试虚拟机的 VPC 网络中,在相关的 Cloud Router BGP 会话中配置自定义通告,包括与测试虚拟机的主要内部 IPv4 地址匹配的特定
/32自定义路由通告。如需了解详情,请参阅 Cloud Router 文档中的 通告的路由 和 通告自定义地址范围 。 - 确保本地网络和 VPC 网络中的防火墙规则允许从本地系统到测试虚拟机的连接(TCP 和 ICMP)。
- 使用 SSH 连接到虚拟机。
- 在操作系统提示符处,使用
ping命令测试与本地网络中的系统的连接情况。
移动工作负载并更新路由
每次迁移工作负载或工作负载组时,请同时完成以下步骤。
迁移工作负载
使用首选方法将工作负载和虚拟机从本地网络迁移到 VPC 网络。
如需了解迁移选项,请参阅 迁移选项。
更新自定义通告路由
将虚拟机迁移到 Google Cloud时, 请更新 Cloud Router 的 BGP 会话 的自定义通告路由,以包含每个迁移虚拟机的主要内部 IPv4 地址。
对于连续的 IP 地址块,请将地址整合到尽可能少的自定义通告中。通告必须比已启用混合子网路由的子网的 IPv4 地址范围更具体(具有更长的子网掩码)。
测试从本地网络到迁移后虚拟机的连接
如需测试与已迁移到的虚拟机 Google Cloud的连接, 您可以执行以下操作:
- 确保您已为管理混合连接的 BGP 会话更新自定义通告。路由通告必须包含迁移后虚拟机的内部 IP 地址。
- 使用
ping命令测试从本地网络中的系统到迁移后虚拟机 IP 地址的连接。