创建混合子网

Hybrid Subnets 可帮助您将工作负载从本地子网迁移到 Virtual Private Cloud (VPC) 子网,而无需更改任何 IP 地址。本文档介绍创建混合子网、将工作负载迁移到混合子网的 Google Cloud 部分以及测试混合子网中的连接的步骤。

准备工作

所需的角色

如需获得创建混合子网所需的权限,请让您的管理员为您授予项目的 Compute Network Admin (roles/compute.networkAdmin) IAM 角色。 如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限

您也可以通过自定义角色或其他预定义角色来获取所需的权限。

配置混合子网路由

如需配置混合子网路由,请执行以下操作之一:

  • 创建启用了混合子网路由的新子网。
  • 为现有子网启用混合子网路由。

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

控制台

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

    进入 VPC 网络页面

  2. 点击要在其中创建混合子网的 VPC 网络的名称。

  3. 点击子网标签页。

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

    1. 提供名称
    2. 选择区域
    3. 用途部分中,选择
    4. 堆栈类型部分中,选择 IPv4(单栈)
    5. IPv4 范围字段中,输入要用于混合子网的本地网络的分段的 IPv4 地址范围。
    6. 专用 Google 访问通道部分,选择关闭
    7. 混合子网部分中,选择开启
    8. 点击添加

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

对于主要 IPv4 地址范围与您要用于混合子网的本地网络的分段范围匹配的现有子网,您可以为启用混合子网路由。

如需为现有子网启用混合子网路由,请为该子网启用 CIDR 路由重叠。这会修改 VPC 网络路由行为,以允许子网的 IP 地址范围与自定义动态路由的 IP 地址范围重叠。

如需详细了解 CIDR 路由重叠,请参阅 Compute Engine API 参考文档中的 allowSubnetCidrRoutesOverlap 字段。

控制台

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

    进入 VPC 网络页面

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

  3. 点击子网标签页。

  4. 点击要更新的子网。

  5. 点击修改

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

  7. 点击保存

gcloud

使用 gcloud beta compute networks subnets update 命令

gcloud beta 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/beta/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/beta/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/beta/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/beta/projects/test-project/regions/us-central1/operations/operation-1680288003494-5f8368991917a-59bf1c92-1897c7c6",
      "region": "https://www.googleapis.com/compute/beta/projects/test-project/regions/us-central1"
    }
    

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

    • "allowSubnetCidrRoutesOverlap": true

配置路由通告

为混合连接产品(VPN 隧道、VLAN 连接或路由器设备虚拟机 (VM) 实例)配置边界网关协议 (BGP) 会话,以仅通告自定义 IPv4 和 IPv6 前缀

测试来自 VPC 网络的本地连接

如需测试混合子网和本地网络的重叠 IP 地址范围之间的连接,您可以执行以下操作:

  1. 在 VPC 网络的混合子网中创建测试实例
  2. 请记下测试虚拟机的主要内部 IPv4 地址
  3. 更新 Cloud Router 的 BGP 会话的自定义通告模式,以便为测试虚拟机的主要内部 IPv4 地址添加 /32 自定义通告路由
  4. 使用 SSH 连接到虚拟机
  5. 在操作系统提示符处,使用 ICMP 对混合子网中本地系统的 IP 地址建立 ping 连接。

如果 ping 测试失败,请确保 Google Cloud 防火墙规则和本地防火墙允许混合子网的 IP 地址范围内的 ICMP。

移动工作负载并更新路由

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

迁移工作负载

使用首选方法将工作负载和虚拟机从本地网络迁移到 VPC 网络。如需将虚拟机迁移到 Compute Engine,我们建议您使用 Migrate to Virtual Machines

如需了解迁移选项,请参阅 Hybrid Subnets 和 Migrate to Virtual Machines

更新自定义通告路由

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

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

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

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

  1. 确保您已为管理混合连接的 BGP 会话更新自定义通告模式。路由通告必须包含迁移后虚拟机的主要内部 IPv4 地址。
  2. 将 ICMP ping 从本地系统发送到迁移后的虚拟机的 IP 地址。

后续步骤