使用 Hybrid Subnets 将工作负载迁移到 Google Cloud

Hybrid Subnets 可帮助您将工作负载从本地网络迁移到虚拟私有云 (VPC) 网络,而无需更改任何 IP 地址。本文档介绍了配置混合子网路由、测试本地网络和 VPC 网络共享的 CIDR 地址块之间的连接,以及从本地网络迁移工作负载的步骤。

准备工作

请确保您已完成准备 Hybrid Subnets 连接中的步骤。

启用混合子网路由

如需支持共享 CIDR 地址块的本地网络和 VPC 网络之间的内部连接,您需要至少一个 已启用 混合子网路由的子网。

使用混合子网路由的子网必须满足以下要求:

  • 它必须与 Cloud Router 和提供混合连接的 高可用性 VPN 隧道或 VLAN 连接位于同一区域。
  • 子网的 IPv4 地址范围必须与托管您要迁移的工作负载的本地网络的 IP 地址范围匹配。

您可以在创建新子网时启用混合子网路由,也可以更新现有子网以启用此功能。

创建已启用混合子网路由的新子网

如需创建已启用混合子网路由的新子网,请执行以下操作。

控制台

  1. 在 Google Cloud 控制台中,前往 VPC 网络页面。

    进入 VPC 网络页面

  2. 点击要在其中配置混合子网路由的 VPC 网络的名称。

  3. 点击子网 标签页。

  4. 点击添加子网。在显示的面板中:

    1. 提供名称。
    2. 选择区域。
    3. 用途部分中,选择
    4. 堆栈类型 部分中,选择 IPv4(单栈)
    5. IPv4 范围 字段中,输入此子网与您要迁移的工作负载之间共享的 CIDR 地址块。
    6. 混合子网 部分中,选择开启
    7. 点击 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

  1. 创建启用了混合子网路由的新子网。

    在使用任何请求数据之前, 请先进行以下替换:

    • 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"
    }
    

为现有子网启用混合子网路由

如需为现有子网启用混合子网路由,请执行以下操作。

控制台

  1. 在 Google Cloud 控制台中,前往 VPC 网络页面。

    进入 VPC 网络页面

  2. 点击包含要更新的子网的 VPC 网络的名称。

  3. 点击子网标签页。

  4. 点击要更新的子网。

  5. 点击修改

  6. 混合子网部分中,选择开启

  7. 点击保存

gcloud

使用 gcloud compute networks subnets update 命令

gcloud compute networks subnets update SUBNET \
    --region=REGION \
    --allow-cidr-routes-overlap

替换以下内容:

  • SUBNET:子网的名称
  • REGION:子网的区域

API

  1. 找到子网的 fingerprint ID。

    在使用任何请求数据之前,请先进行以下替换:

    • 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"
    }
    

  2. 启用混合子网路由。

    在使用任何请求数据之前,请将 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"
    }
    

  3. 如需验证您的子网是否已启用 allowSubnetCidrRoutesOverlap请发出另一个 GET 请求,并确保响应 包含以下内容:

    • "allowSubnetCidrRoutesOverlap": true

测试从 VPC 网络到本地网络的网络连接

如需测试 VPC 网络与本地网络之间通过共享 CIDR 地址块的连接,您可以执行以下操作:

  1. 使用混合子网路由的子网中创建测试虚拟机。
  2. 请记下主要内部 IPv4 地址 的测试虚拟机。
  3. 在包含测试虚拟机的 VPC 网络中,在相关的 Cloud Router BGP 会话中配置自定义通告,包括与测试虚拟机的主要内部 IPv4 地址匹配的特定 /32 自定义路由通告。如需了解详情,请参阅 Cloud Router 文档中的 通告的路由通告自定义地址范围
  4. 确保本地网络和 VPC 网络中的防火墙规则允许从本地系统到测试虚拟机的连接(TCP 和 ICMP)。
  5. 使用 SSH 连接到虚拟机
  6. 在操作系统提示符处,使用 ping 命令测试与本地网络中的系统的连接情况。

移动工作负载并更新路由

每次迁移工作负载或工作负载组时,请同时完成以下步骤。

迁移工作负载

使用首选方法将工作负载和虚拟机从本地网络迁移到 VPC 网络。

如需了解迁移选项,请参阅 迁移选项

更新自定义通告路由

将虚拟机迁移到 Google Cloud时, 请更新 Cloud Router 的 BGP 会话 的自定义通告路由,以包含每个迁移虚拟机的主要内部 IPv4 地址。

对于连续的 IP 地址块,请将地址整合到尽可能少的自定义通告中。通告必须比已启用混合子网路由的子网的 IPv4 地址范围更具体(具有更长的子网掩码)。

测试从本地网络到迁移后虚拟机的连接

如需测试与已迁移到的虚拟机 Google Cloud的连接, 您可以执行以下操作:

  1. 确保您已为管理混合连接的 BGP 会话更新自定义通告。路由通告必须包含迁移后虚拟机的内部 IP 地址。
  2. 使用 ping 命令测试从本地网络中的系统到迁移后虚拟机 IP 地址的连接。

后续步骤