建立混合式子網路

混合型子網路可協助您將工作負載從其他網路 (來源網路) 遷移至虛擬私有雲 (VPC) 子網路,不必變更任何 IP 位址。本文說明如何建立混合式子網路、將工作負載遷移至混合式子網路的 Google Cloud 部分,以及測試混合式子網路中的連線。

事前準備

必要的角色

如要取得建立混合式子網路所需的權限,請要求管理員為您授予專案的Compute Network Admin (roles/compute.networkAdmin) 身分與存取權管理角色。如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和機構的存取權」。

您或許還可透過自訂角色或其他預先定義的角色取得必要權限。

設定混合式子網路轉送

如要建立混合型子網路,您需要啟用混合型子網路路由的虛擬私有雲子網路。您可以使用 Google Cloud 控制台建立子網路。如果您使用 gcloud CLI 或 API,請先建立子網路,然後啟用混合式子網路路由

建立啟用混合型子網路路由的新子網路

主控台

  1. 在 Google Cloud 控制台中,前往「VPC networks」(虛擬私有雲網路) 頁面。

    前往「VPC networks」(虛擬私有雲網路)

  2. 按一下要建立混合式子網路的 VPC 網路名稱。

  3. 按一下「子網路」分頁標籤。

  4. 按一下 [Add subnet] (新增子網路)。在顯示的面板中:

    1. 提供「Name」(名稱)
    2. 選擇一個 [Region] (地區)
    3. 在「用途」部分中,選取「無」
    4. 在「堆疊類型」區段中,選取「IPv4 (單一堆疊)」
    5. 在「IPv4 range」(IPv4 範圍) 欄位中,輸入來源網路區隔的 IPv4 位址範圍,做為混合式子網路使用。
    6. 在「私人 Google 存取權」區段中,選取 [關閉]
    7. 在「混合式子網路」區段中,選取「開啟」
    8. 按一下「新增」

為現有子網路啟用混合型子網路轉送

如果現有子網路的主要 IPv4 位址範圍,與您要用於混合式子網路的來源網路區隔範圍相符,即可為該子網路啟用混合式子網路路由。

如要為現有子網路啟用混合型子網路轉送,請為該子網路啟用 CIDR 路徑重疊。這會修改虛擬私有雲網路的轉送行為,允許子網路與自訂動態路徑的 IP 位址範圍重疊。

如要進一步瞭解 CIDR 路徑重疊,請參閱 Compute Engine API 參考資料中的 allowSubnetCidrRoutesOverlap 欄位。

主控台

  1. 在 Google Cloud 控制台中,前往「VPC networks」(虛擬私有雲網路) 頁面。

    前往「VPC networks」(虛擬私有雲網路)

  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

從虛擬私有雲網路測試來源網路連線

如要測試混合式子網路與來源網路重疊 IP 位址範圍之間的連線,請執行下列操作:

  1. 在虛擬私有雲網路的混合式子網路中建立測試 VM
  2. 記下測試 VM 的主要內部 IPv4 位址
  3. 更新 Cloud Router BGP 工作階段的自訂通告模式,加入測試 VM 主要內部 IPv4 位址的/32 自訂通告路徑
  4. 使用 SSH 連線至 VM
  5. 在作業系統提示中,使用 ping 指令測試與混合式子網路來源網路部分中系統的連線。

如果 Ping 測試失敗,請確認混合式子網路的來源和虛擬私有雲網路部分中的防火牆設定,允許混合式子網路 IP 位址範圍內的 ICMP。

移動工作負載並更新路徑

每次遷移工作負載或工作負載群組時,請一併完成下列步驟。

遷移工作負載

使用偏好的方法,將來源網路中的工作負載和 VM 遷移至虛擬私有雲端網路。如要將 VM 遷移至 Compute Engine,建議使用 Migrate to Virtual Machines

如要瞭解遷移選項,請參閱「混合式子網路和 Migrate to Virtual Machines」。

更新自訂通告路徑

將 VM 遷移至 Google Cloud時,請更新 Cloud Router BGP 工作階段的自訂通告路徑,納入每個遷移 VM 的主要內部 IPv4 位址。

使用/32自訂通告路徑新增個別 IP 位址。如果是連續的 IP 位址區塊,請盡可能將位址整合到最少的自訂廣告中。通告必須比混合式子網路的 IP 位址範圍更具體 (子網路遮罩較長)。

從來源網路測試與已遷移 VM 的連線

如要測試與已遷移至 Google Cloud的 VM 連線,可以執行下列操作:

  1. 請確認您已更新管理混合式連線的 BGP 工作階段自訂通告模式。路徑通告必須包含遷移 VM 的主要內部 IPv4 位址。
  2. 使用 ping 指令,測試從來源網路系統到已遷移 VM IP 位址的連線。

後續步驟