使用可用區 NEG 設定區域性外部直通式網路負載平衡器

本文說明如何部署區域性外部直通式網路負載平衡器,並搭配可用區網路端點群組 (NEG) 後端。使用 GCE_VM_IP 端點的區域 NEG 可讓您執行下列操作:

  • 將封包轉送至虛擬機器 (VM) 執行個體的非 nic0 網路介面,方法是將 VM 執行個體的網路介面表示為後端端點。
  • 建立彈性後端端點集,端點可附加至多個 NEG,且每個 NEG 可有不同但可能重疊的端點集。

按照本文操作之前,請先熟悉以下內容:

權限

如要按照這些步驟操作,您必須在專案中建立執行個體和修改網路,您必須是專案擁有者或編輯者,或是具備下列所有 Compute Engine IAM 角色

工作 必要角色
建立網路、子網路和負載平衡器元件 Compute 網路管理員 (roles/compute.networkAdmin)
新增與移除防火牆規則 Compute 安全管理員 (roles/compute.securityAdmin)
建立執行個體 Compute 執行個體管理員 (roles/compute.instanceAdmin)

如需詳細資訊,請參閱以下頁面:

設定總覽

本文說明如何設定及測試使用GCE_VM_IP可用區 NEG 後端的區域外部直通式網路負載平衡器。本節中的步驟說明如何設定以下項目:

  1. 名為 lb-network 的範例虛擬私有雲網路,其中包含自訂子網路。
  2. 允許連入連線到後端 VM 的防火牆規則。
  3. 四個 VM:
    • 可用區 us-west1-a 中的 VM vm-a1vm-a2
    • 可用區 us-west1-c 中的 VM vm-c1vm-c2
  4. 兩個後端可用區 NEG,分別是可用區 us-west1-a 中的 neg-a,以及可用區 us-west1-c 中的 neg-c。每個 NEG 都有下列端點:
    • neg-a 包含下列兩個端點:
      • 由主要內部 IP 位址識別的 VM vm-a1nic1
      • 由主要內部 IP 位址識別的 VM vm-a2nic1
    • neg-c 包含下列兩個端點:
      • 由主要內部 IP 位址識別的 VM vm-c1nic1
      • 由主要內部 IP 位址識別的 VM vm-c2nic1
  5. us-west1-a 中的一個用戶端 VM (vm-client),用於測試連線
  6. 下列負載平衡器元件:
    • us-west1 地區中的一個外部後端服務,用於管理兩個區域性 NEG 之間的連線分配
    • 一個用於負載平衡器前端的外部轉送規則和 IP 位址

區域性外部直通式網路負載平衡器是區域負載平衡器。所有負載平衡器元件 (後端 VM、後端服務和轉送規則) 必須位於同一個地區。

這個範例的架構如下所示:

使用可用區 NEG 的區域性外部直通式網路負載平衡器。
區域性外部直通式網路負載平衡器,搭配可用區 NEG (按一下可放大)。

事前準備

安裝 Google Cloud CLI。如需工具的完整總覽,請參閱 gcloud CLI 總覽。您可以在 API 和 gcloud 參考資料中找到與負載平衡相關的指令。

如果先前沒有執行過 gcloud CLI,請先執行 gcloud init 指令進行驗證。

本頁面假設您已熟悉 bash

設定網路和子網路

本頁面的範例使用名為 lb-network自訂模式虛擬私有雲網路。如果您只想處理 IPv4 流量,可以使用自動模式虛擬私有雲網路。不過,自動模式 VPC 網路不支援具有 IPv6 位址範圍的子網路。只有自訂模式的虛擬私有雲網路,才支援具有 IPv6 位址範圍的子網路。

在本例中,系統會建立下列堆疊類型的子網路:

子網路範圍 堆疊類型
僅限 IPv4 子網路範圍 IPV4_ONLY (單一堆疊)
IPv4 和 IPv6 子網路範圍 IPV4_IPV6 (雙重堆疊)
僅限 IPv6 子網路範圍 IPV6_ONLY (單一堆疊)

如果是使用 IPv6 位址範圍的雙重堆疊和僅限 IPv6 子網路,您需要為子網路選擇 IPv6 存取類型。IPv6 存取權類型會決定子網路是設定內部 IPv6 位址外部 IPv6 位址。在本例中,子網路的 ipv6-access-type 參數設為 EXTERNAL

具有外部 IPv6 位址範圍的子網路 (即 ipv6-access-type 參數設為 EXTERNAL 的子網路),也可用於轉送規則的外部 IPv6 位址來源。詳情請參閱「轉送規則的 IP 位址規格」。

本範例使用的後端和負載平衡器元件位於這個地區和子網路:

  • 區域:us-central1
  • 子網路:lb-subnet,主要 IPv4 位址範圍為 10.1.2.0/24。雖然您可以選擇要在子網路上設定哪個 IPv4 位址範圍,但 IPv6 位址範圍是自動指派。Google 提供固定大小 (/64) 的 IPv6 CIDR 區塊。

如要建立範例網路和子網路,請按照以下步驟操作。

控制台

如要同時支援 IPv4 和 IPv6 流量,請按照下列步驟操作:

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

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

  2. 按一下「建立虛擬私有雲網路」

  3. 在「Name」(名稱) 中輸入 lb-network

  4. 將「Subnet creation mode」(子網路建立模式) 設為「Custom」(自訂)

  5. 在「Subnets」(子網路) 區段中,按一下「Add subnet」(新增子網路),然後設定下列欄位:

    • Name (名稱):lb-subnet
    • Region (區域):us-central1
    • IP stack type (IP 堆疊類型):IPv4 和 IPv6 (雙重堆疊)
    • IPv4 範圍10.1.2.0/24
      雖然您可以為子網路設定 IPv4 位址範圍,但無法選擇子網路的 IPv6 位址範圍。Google 提供固定大小 (/64) 的 IPv6 CIDR 區塊。
    • IPv6 存取權類型外部
    • 然後按一下 [完成]
  6. 點選「建立」

如要僅支援 IPv4 流量,請按照下列步驟操作:

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

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

  2. 按一下「建立虛擬私有雲網路」

  3. 在「Name」(名稱) 中輸入 lb-network

  4. 將「Subnet creation mode」(子網路建立模式) 設為「Custom」(自訂)

  5. 在「Subnets」(子網路) 區段中,按一下「Add subnet」(新增子網路),然後設定下列欄位:

    • Name (名稱):lb-subnet
    • Region (區域):us-central1
    • IP stack type (IP 堆疊類型):IPv4 (單一堆疊)
    • IPv4 範圍10.1.2.0/24
  6. 點選「建立」

如要僅支援 IPv6 流量,請按照下列步驟操作:

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

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

  2. 按一下「建立虛擬私有雲網路」

  3. 在「Name」(名稱) 中輸入 lb-network

  4. 將「Subnet creation mode」(子網路建立模式) 設為「Custom」(自訂)

  5. 在「Subnets」(子網路) 區段中,按一下「Add subnet」(新增子網路),然後設定下列欄位:

    • Name (名稱):lb-subnet
    • Region (區域):us-central1
    • IP stack type (IP 堆疊類型):IPv6 (單一堆疊)
    • IPv6 存取權類型外部
  6. 點選「建立」

gcloud

  1. 建立自訂模式虛擬私有雲網路:

    gcloud compute networks create lb-network \
        --subnet-mode=custom
    
  2. lb-network 網路中,於 us-central1 區域為後端建立子網路。

    如要同時支援 IPv4 和 IPv6 流量,請使用下列指令建立雙重堆疊子網路:

      gcloud compute networks subnets create lb-subnet \
          --stack-type=IPV4_IPV6 \
          --ipv6-access-type=EXTERNAL \
          --network=lb-network \
          --range=10.1.2.0/24 \
          --region=us-central1
    

    如要僅使用 IPv4 流量,請使用下列指令:

      gcloud compute networks subnets create lb-subnet \
          --network=lb-network \
          --range=10.1.2.0/24 \
          --region=us-central1
    

    如要只使用 IPv6 流量,請使用下列指令:

    gcloud compute networks subnets create lb-subnet \
        --stack-type=IPV6_ONLY \
        --ipv6-access-type=EXTERNAL \
        --network=lb-network \
        --region=us-central1
    

建立 VM 和網路端點群組

為示範區域性外部直通式網路負載平衡器的區域性質,本範例在兩個不同的可用區中,使用兩個區域性 NEG 後端。流量會在兩個 NEG 之間達到負載平衡,也會在每個 NEG 內的端點之間達到負載平衡。

建立 VM

針對這個負載平衡情境,您會建立四個 VM,並在每個執行個體上安裝 Apache 網路伺服器。網路伺服器會監聽 TCP 通訊埠 80。根據預設,Apache 會設定為繫結至任何 IP 位址。區域性外部直通式網路負載平衡器會保留目的地 IP 位址,藉此傳遞封包。

為方便說明,這些後端 VM 會執行 Debian GNU Linux 10。

如要同時處理 IPv4 和 IPv6 流量,請將後端 VM 設為雙重堆疊。將 VM 的 stack-type 設為 IPV4_IPV6。VM 也會從子網路沿用 ipv6-access-type 設定 (在本範例中為 EXTERNAL)。如要進一步瞭解 IPv6 需求,請參閱「區域性外部直通式網路負載平衡器簡介:轉送規則」。

如要將現有 VM 做為後端,請使用 gcloud compute instances network-interfaces update 指令更新 VM,使其成為雙堆疊。

做為區域外部直通式網路負載平衡器的後端 VM 的執行個體,必須執行適當的 Linux 訪客環境Windows 訪客環境或其他提供等效功能的處理程序。

每個 VM 都會建立兩個網路介面:nic0nic1。本教學課程會使用 nic1,該執行個體與 lb-network 虛擬私有雲網路和 lb-subnet 子網路相關聯。在本程序的後續步驟中,請使用這個 lb-network 網路和 lb-subnet 子網路建立區域 NEG

控制台

建立 VM

  1. 前往 Google Cloud 控制台的「VM instances」(VM 執行個體) 頁面

    前往 VM 執行個體

  2. 使用下列的名稱和區域組合,重複以下步驟來建立四個 VM:

    • 名稱:vm-a1,區域:us-west1-a
    • 名稱:vm-a2,區域:us-west1-a
    • 名稱:vm-c1,區域:us-west1-c
    • 名稱:vm-c2,區域:us-west1-c
  3. 點選「建立執行個體」

  4. 按照先前的說明設定「Name」(名稱)

  5. 在「Region」(區域) 中選擇 us-west1,然後選取先前指定的「Zone」(可用區)

  6. 在「Boot disk」(開機磁碟) 專區中,確認已為開機磁碟選項選取「Debian GNU/Linux 12 (bookworm)」。如有需要,請按一下「選擇」變更圖片。

  7. 按一下「進階選項」,然後進行下列變更:

    • 按一下「網路」,然後新增以下「網路標記」lb-tag
    • 在「網路介面」部分,按一下「新增網路介面」,然後進行下列變更:

      IPv4 和 IPv6 後端

      • Network (網路):lb-network
      • Subnet (子網路):lb-subnet
      • IP stack type (IP 堆疊類型):IPv4 and IPv6 (dual-stack)
      • 「Primary internal IP」(主要內部 IP):臨時 (自動)
      • 外部 IPv4 位址:臨時 (自動)
      • 外部 IPv6 位址:臨時 (自動)

      如果是僅限 IPv4 的後端

      • Network (網路):lb-network
      • Subnet (子網路):lb-subnet
      • IP stack type (IP 堆疊類型):IPv4 (single-stack)
      • 「Primary internal IP」(主要內部 IP):臨時 (自動)
      • External IP (外部 IP):臨時

      接著點選「完成」。

    • 按一下 [Management] (管理)。在「Startup script」(開機指令碼) 欄位中,複製並貼上下列指令碼內容。四個 VM 的指令碼內容完全相同:

      #! /bin/bash
      apt-get update
      apt-get install apache2 -y
      a2ensite default-ssl
      a2enmod ssl
      vm_hostname="$(curl -H "Metadata-Flavor:Google" \
      http://metadata.google.internal/computeMetadata/v1/instance/name)"
      echo "Page served from: $vm_hostname" | \
      tee /var/www/html/index.html
      systemctl restart apache2
      
  8. 點選「建立」

gcloud

使用以下四個 VM_NAMEZONE 組合,透過執行以下指令四次來建立四個 VM。四個 VM 的指令碼內容完全相同。

  • VM_NAMEvm-a1ZONEus-west1-a
  • VM_NAMEvm-a2ZONEus-west1-a
  • VM_NAMEvm-c1ZONEus-west1-c
  • VM_NAMEvm-c2ZONEus-west1-c

如要同時處理 IPv4 和 IPv6 流量,請使用下列指令。

gcloud compute instances create VM_NAME \
    --zone=ZONE \
    --image-family=debian-12 \
    --image-project=debian-cloud \
    --tags=lb-tag \
    --network-interface=network=default,subnet=default,stack_type=IPV4_IPV6,--ipv6-network-tier=PREMIUM \
    --network-interface=network=lb-network,subnet=lb-subnet,stack_type=IPV4_IPV6,--ipv6-network-tier=PREMIUM \
    --metadata=startup-script='#! /bin/bash
    apt-get update
    apt-get install apache2 -y
    a2ensite default-ssl
    a2enmod ssl
    vm_hostname="$(curl -H "Metadata-Flavor:Google" \
    http://metadata.google.internal/computeMetadata/v1/instance/name)"
    echo "Page served from: $vm_hostname" | \
    tee /var/www/html/index.html
    systemctl restart apache2'

如要僅處理 IPv4 流量,請使用下列指令:

gcloud compute instances create VM_NAME \
    --zone=ZONE \
    --image-family=debian-12 \
    --image-project=debian-cloud \
    --tags=lb-tag \
    --network-interface=network=default,subnet=default,stack_type=IPV4_ONLY \
    --network-interface=network=lb-network,subnet=lb-subnet,stack_type=IPV4_ONLY \
    --metadata=startup-script='#! /bin/bash
    apt-get update
    apt-get install apache2 -y
    a2ensite default-ssl
    a2enmod ssl
    vm_hostname="$(curl -H "Metadata-Flavor:Google" \
    http://metadata.google.internal/computeMetadata/v1/instance/name)"
    echo "Page served from: $vm_hostname" | \
    tee /var/www/html/index.html
    systemctl restart apache2'

使用 GCE_VM_IP 端點建立可用區性 NEG

NEGs 必須與上一個步驟中建立的 VM 位於相同區域。本範例也會在與nic1上一步驟建立的 VM相關聯的 lb-network 虛擬私有雲網路和 lb-subnet 子網路中建立 NEG。因此,NEG 的端點會位於 VM 的 nic1 上。

控制台

如要建立可用區網路端點群組,請按照下列步驟操作:

  1. 前往 Google Cloud 控制台的「Network Endpoint Groups」(網路端點群組) 頁面。
    前往「網路端點群組」頁面
  2. 按一下「Create network endpoint group」(建立網路端點群組)
  3. 輸入可用區性 NEG 的「名稱」neg-a
  4. 選取「網路端點群組類型」網路端點群組 (區域性)
  5. 選取「Network」(網路):lb-network
  6. 選取「子網路」lb-subnet
  7. 選取「Zone」(區域):us-west1-a
  8. 點選「建立」
  9. 重複上述步驟,在 us-west1-c 區域中建立名為 neg-c 的第二個區域 NEG。

將端點新增至可用區性 NEG:

  1. 前往 Google Cloud 控制台的「Network Endpoint Groups」(網路端點群組) 頁面。
    前往「網路端點群組」
  2. 按一下上一個步驟中建立的第一個網路端點群組「名稱」 (neg-a)。畫面上即會出現「網路端點群組詳細資料」頁面。
  3. 在「Network endpoints in this group」(這個群組中的網路端點) 區段中,按一下 [Add network endpoint] (新增網路端點]。畫面會出現「Add network endpoint」(新增網路端點) 頁面。

    1. 按一下「VM instance」(VM 執行個體),然後選取「vm-a1」,將其內部 IP 位址新增為網路端點。
    2. 點選「建立」
    3. 再次按一下「Add network endpoint」(新增網路端點),然後在「VM instance」(VM 執行個體) 下選取「vm-a2」
    4. 點選「建立」
  4. 按一下在上一個步驟中建立的第二個網路端點群組「名稱」 (neg-c)。畫面上即會出現「網路端點群組詳細資料」頁面。

  5. 在「Network endpoints in this group」(這個群組中的網路端點) 區段中,按一下 [Add network endpoint] (新增網路端點]。畫面會出現「Add network endpoint」(新增網路端點) 頁面。

    1. 按一下「VM instance」(VM 執行個體),然後選取「vm-c1」,將其內部 IP 位址新增為網路端點。
    2. 點選「建立」
    3. 再次按一下「新增網路端點」,然後在「VM 執行個體」下方選取 「vm-c2」。
    4. 點選「建立」

gcloud

  1. 使用 gcloud compute network-endpoint-groups create 指令,在 us-west1-a 中建立名為 neg-aGCE_VM_IP 區域 NEG :

    gcloud compute network-endpoint-groups create neg-a \
        --network-endpoint-type=gce-vm-ip \
        --zone=us-west1-a \
        --network=lb-network \
        --subnet=lb-subnet
    
  2. 將端點新增至 neg-a

    gcloud compute network-endpoint-groups update neg-a \
        --zone=us-west1-a \
        --add-endpoint='instance=vm-a1' \
        --add-endpoint='instance=vm-a2'
    
  3. 使用 gcloud compute network-endpoint-groups create 指令,在 us-west1-c 中建立名為 neg-cGCE_VM_IP 區域 NEG :

    gcloud compute network-endpoint-groups create neg-c \
        --network-endpoint-type=gce-vm-ip \
        --zone=us-west1-c \
        --network=lb-network \
        --subnet=lb-subnet
    
  4. 將端點新增至 neg-c

    gcloud compute network-endpoint-groups update neg-c \
        --zone=us-west1-c \
        --add-endpoint='instance=vm-c1' \
        --add-endpoint='instance=vm-c2'
    

設定防火牆規則

建立防火牆規則,允許外部流量 (包括健康狀態檢查探測) 連上後端執行個體。

本範例會建立防火牆規則,允許所有來源範圍的 TCP 流量,透過通訊埠 80 抵達後端執行個體。如要專為健康狀態檢查探測器建立個別的防火牆規則,請使用「健康狀態檢查總覽:探測器 IP 範圍和防火牆規則」中記錄的來源 IP 位址範圍。

控制台

前往 Google Cloud 控制台的「Firewall」(防火牆) 頁面。

前往「Firewall」(防火牆) 頁面

如要允許 IPv4 流量,請按照下列步驟操作:

  1. 按一下「Create firewall rule」(建立防火牆規則)
  2. 輸入「Name」(名稱)allow-network-lb-ipv4
  3. 在「Network」(網路) 中選取「lb-network」
  4. 在「Targets」(目標) 中選取 Specified target tags
  5. 在「Target tags」(目標標記) 欄位中輸入 lb-tag
  6. 「來源篩選器」請選取「IPv4 範圍」
  7. 將「Source IPv4 ranges」(來源 IPv4 範圍) 設為 0.0.0.0/0。這項設定允許來自任何來源的 IPv4 流量。這也允許 Google 的健康狀態檢查探測連線至後端執行個體。
  8. 在「Specified protocols and ports」(指定的通訊協定和通訊埠) 中選取「TCP」,然後輸入 80
  9. 點選「建立」

如要允許 IPv6 流量,請按照下列步驟操作:

  1. 再次點選「建立防火牆規則」
  2. 輸入「Name」(名稱)allow-network-lb-ipv6
  3. 在「Network」(網路) 中選取「lb-network」
  4. 在「Targets」(目標) 中選取 Specified target tags
  5. 在「Target tags」(目標標記) 欄位中輸入 lb-tag
  6. 在「來源篩選器」中選取「IPv6 範圍」
  7. 將「Source IPv6 ranges」(來源 IPv6 範圍) 設為 ::/0。這項設定允許來自任何來源的 IPv6 流量。這也允許 Google 的健康狀態檢查探測連線至後端執行個體。
  8. 在「Specified protocols and ports」(指定的通訊協定和通訊埠) 中,選取「TCP」並輸入 80
  9. 點選「建立」

gcloud

如要允許 IPv4 流量,請執行下列指令:

gcloud compute firewall-rules create allow-network-lb-ipv4 \
    --network=lb-network \
    --target-tags=lb-tag \
    --allow=tcp:80 \
    --source-ranges=0.0.0.0/0

如要允許 IPv6 流量,請執行下列指令:

gcloud compute firewall-rules create allow-network-lb-ipv6 \
    --network=lb-network \
    --target-tags=lb-tag \
    --allow=tcp:80 \
    --source-ranges=::/0
 

設定負載平衡器

接著,請設定負載平衡器。

設定負載平衡器時,虛擬機會接收預定送至您設定之靜態外部 IP 位址的封包。如果您是使用 Compute Engine 提供的映像檔,則會將執行個體自動設定為處理這個 IP 位址。如果您是使用任何其他映像檔,則必須將這個位址設定為 eth1 上的別名或每個執行個體上的回送。

如要設定負載平衡器,請按照下列操作說明進行。

控制台

開始設定

  1. 前往 Google Cloud 控制台的「Load balancing」(負載平衡) 頁面。

    前往「Load balancing」(負載平衡)

  2. 點選「建立負載平衡器」
  3. 在「負載平衡器類型」部分,選取「網路負載平衡器 (TCP/UDP/SSL)」,然後點選「下一步」
  4. 在「直通或使用 Proxy」部分,選取「直通式負載平衡器」,然後點選「下一步」
  5. 在「公開或內部」部分,選取「公開 (外部)」,然後點選「下一步」
  6. 按一下 [設定]

後端設定

  1. 在「建立外部直通式網路負載平衡器」頁面中,輸入新負載平衡器的名稱 network-lb-zonal-neg
  2. 在「Region」(區域) 清單中選取「us-west1」。
  3. 按一下「後端設定」。畫面上會顯示您之前輸入的負載平衡器名稱,但無法修改。
  4. 在「Backend type」(後端類型) 清單中,選取「Zonal network endpoint group」(區域網路端點群組)
  5. 在「Backend configuration」(後端設定) 頁面中,執行下列操作:
    1. 在「健康狀態檢查」清單中,按一下「建立健康狀態檢查」,然後輸入下列資訊:
      • Name (名稱):tcp-health-check
      • 「Protocol」(通訊協定)TCP
      • Port (通訊埠):80
    2. 點選「建立」
    3. 在「Network endpoint group」(網路端點群組) 清單中,選取 neg-a,然後按一下「Done」(完成)
    4. 按一下「Add backend」(新增後端),然後重複上一個步驟來新增 neg-c
    5. 按一下 [儲存]
  6. 繼續操作之前,請先驗證「Backend configuration」(後端設定) 旁是否有藍色勾號。

前端設定

  1. 點選「前端設定」
  2. 在「Name」(名稱) 中輸入 netlb-forwarding-rule
  3. 如要處理 IPv4 流量,請按照下列步驟操作:
    1. 將「IP version」(IP 版本) 設為「IPv4」
    2. 按一下「IP address」(IP 位址) 下拉式選單,然後選取「Create IP address」(建立 IP 位址)
      1. 在「Reserve a new static IP address」(保留新的靜態 IP 位址) 頁面中,輸入 netlb-ipv4-address 做為「Name」(名稱)
      2. 點選「保留」
    3. 在「Ports」(通訊埠) 部分,選擇「Single」(單個)。在「Port number」(通訊埠編號) 部分輸入 80
    4. 按一下「完成」
  4. 如要處理 IPv6 流量,請按照下列步驟操作:

    1. 將「IP version」(IP 版本) 設為「IPv6」
    2. 在「Subnetwork」(子網路) 中,選取「lb-subnet」
    3. 在「IPv6 range」(IPv6 範圍) 部分,按一下下拉式選單,然後選取「Create IP address」(建立 IP 位址)
      1. 在「Reserve a new static IP address」(保留新的靜態 IP 位址) 頁面中,輸入 netlb-ipv6-address 做為「Name」(名稱)
      2. 點選「保留」
    4. 在「Ports」(通訊埠) 部分,選擇「Single」(單個)。在「Port number」(通訊埠編號) 部分輸入 80
    5. 按一下「完成」

    如果「Frontend configuration」(前端設定) 左邊顯示具有勾號的藍色圓圈,即表示設定成功。

檢查設定

  1. 點選「檢查並完成」
  2. 查看負載平衡器設定。
  3. 選用:按一下「Equivalent code」(對等程式碼),即可查看用於建立負載平衡器的 REST API 要求。
  4. 點選「建立」

    在「負載平衡」頁面的新負載平衡器的「後端」欄下方,您應該會看到綠色勾號,表示新負載平衡器健康狀態良好。

gcloud

  1. 保留靜態外部 IP 位址。

    IPv4 流量

    為負載平衡器建立靜態外部 IPv4 位址

    gcloud compute addresses create netlb-ipv4-address \
        --region=us-west1
    

    IPv6 流量

    為負載平衡器建立靜態外部 IPv6 位址範圍。使用的子網路必須是具有外部 IPv6 範圍的雙重堆疊子網路。

    gcloud compute addresses create netlb-ipv6-address \
        --region=us-west1 \
        --subnet=lb-subnet \
        --ip-version=IPV6 \
        --endpoint-type=NETLB
    
  2. 建立 TCP 健康狀態檢查。

    gcloud compute health-checks create tcp tcp-health-check \
        --region=us-west1 \
        --port=80
    
  3. 建立後端服務。

    gcloud compute backend-services create networklb-backend-service \
        --protocol=TCP \
        --health-checks=tcp-health-check \
        --health-checks-region=us-west1 \
        --region=us-west1
    
  4. 將兩個區域 NEG (neg-aneg-c) 新增至後端服務:

    gcloud compute backend-services add-backend networklb-backend-service \
        --region=us-west1 \
        --network-endpoint-group=neg-a \
        --network-endpoint-group-zone=us-west1-a
    
    gcloud compute backend-services add-backend networklb-backend-service \
        --region=us-west1 \
        --network-endpoint-group=neg-c \
        --network-endpoint-group-zone=us-west1-c
    
  5. 視要處理 IPv4 流量或 IPv6 流量而定,建立轉送規則。建立這兩項轉送規則,處理這兩種流量。

    IPv4 流量

    建立轉送規則,將傳入的 TCP 流量轉送至後端服務。將步驟 1 中保留的 IPv4 位址做為負載平衡器的靜態外部 IP 位址。

      gcloud compute forwarding-rules create forwarding-rule-ipv4 \
          --load-balancing-scheme=EXTERNAL \
          --region=us-west1 \
          --ports=80 \
          --address=netlb-ipv4-address \
          --backend-service=networklb-backend-service
    

    IPv6 流量

    建立轉送規則來處理 IPv6 流量。使用步驟 1 中保留的 IPv6 位址範圍,做為負載平衡器的靜態外部 IP 位址。使用的子網路必須是具有外部 IPv6 子網路範圍的雙重堆疊子網路。

      gcloud compute forwarding-rules create forwarding-rule-ipv6 \
          --load-balancing-scheme=EXTERNAL \
          --region=us-west1 \
          --network-tier=PREMIUM \
          --ip-version=IPV6 \
          --subnet=lb-subnet \
          --address=netlb-ipv6-address \
          --ports=80 \
          --backend-service=networklb-backend-service
    

測試負載平衡器

負載平衡服務已設定完成,現在可以開始將流量傳送至負載平衡器的外部 IP 位址,並觀察流量是否分散到後端執行個體。

查詢負載平衡器的外部 IP 位址

控制台

  1. 在「Advanced load balancing」(進階負載平衡) 頁面中,前往「Forwarding rules」(轉送規則) 分頁標籤。

    前往轉送規則

  2. 找出負載平衡器所使用的轉送規則。

  3. 在「Address」(位址) 欄中,記下列出的外部 IP 位址。

gcloud:IPv4

輸入下列指令,查看負載平衡器所用 network-lb-forwarding-rule 轉送規則的外部 IPv4 位址。

gcloud compute forwarding-rules describe forwarding-rule-ipv4 \
    --region=us-west1

gcloud:IPv6

輸入下列指令,查看負載平衡器所用 network-lb-forwarding-rule 轉送規則的外部 IPv6 位址。

gcloud compute forwarding-rules describe forwarding-rule-ipv6 \
    --region=us-west1

將流量傳送至負載平衡器

使用 curl 聯絡負載平衡器的 IP 位址,向負載平衡器發出網路要求。

  • 在具備 IPv4 連線的用戶端上,執行下列指令:

    while true; do curl -m1 IPV4_ADDRESS; done
    
  • 在具備 IPv6 連線的用戶端中,執行下列指令:

    while true; do curl -m1 http://IPV6_ADDRESS; done
    

    舉例來說,如果指派的 IPv6 位址為 [2001:db8:1:1:1:1:1:1/96]:80,指令會類似於下列指令:

    while true; do curl -m1 http://[2001:db8:1:1:1:1:1:1]:80; done
    

請注意 curl 指令傳回的文字。產生回應的後端 VM 名稱會顯示在該文字中;例如:Page served from: VM_NAME

curl 指令的回應會在這三個後端執行個體之間隨機交替傳回。如果一開始的回應失敗,在您重試之前,可能需要等候大約 30 秒,設定才會完整載入且執行個體才會標示為健康狀態良好。

額外設定選項

如要進一步自訂區域外部直通式網路負載平衡器,您可以設定工作階段相依性、流量導向,以及設定容錯移轉政策或連線追蹤政策。這些工作並非必要,您可以按照任何順序執行。如需操作說明,請參閱「其他設定選項」。

使用 BYOIP 建立 IPv6 轉送規則

先前步驟中建立的負載平衡器已設定轉送規則,並將 IP version 設為 IPv4IPv6。本節說明如何使用自備 IP (BYOIP) 位址建立 IPv6 轉送規則。

自備 IP 位址可讓您為 Google Cloud 資源佈建及使用自己的公開 IPv6 位址。詳情請參閱「自備 IP 位址」。

使用 BYOIP 位址設定 IPv6 轉送規則前,請先完成下列步驟:

  1. 建立公開宣傳的 IPv6 前置字元
  2. 建立公開委派前置字串
  3. 建立 IPv6 子前置碼
  4. 公布前置字串

您可以設定區域外部直通式網路負載平衡器,使用公用委派前置碼 (PDP) 的 IPv6 位址。您可以透過下列三種工作流程之一部署這項功能:

  • 直接從 PDP 分配。如果希望 IP 位址直接與負載平衡器的生命週期綁定,可以在建立轉送規則時直接參照 PDP。如果刪除負載平衡器,臨時 IP 會釋回 PDP 集區。
  • 預留 BYOIP IPv6 位址。您可以在建立負載平衡器之前,從 PDP 預留特定或自動分配的區域 BYOIP IPv6 位址。這個位址會持續存在,不受負載平衡器生命週期影響。Google Kubernetes Engine (GKE) 使用者必須採用這種做法,因為 GKE API 不支援直接從 PDP 建立直通網路負載平衡器。
  • 推送臨時 IP。 如果負載平衡器已使用臨時 BYOIP IPv6 位址執行,您可以將該位址升級為保留位址,這樣即使刪除負載平衡器,該位址仍會保留。

限制

  • 如要使用 BYOIP 位址設定 IPv6 轉送規則,轉送規則 IPv6 位址的前置字元長度必須與轉送規則 IPv6 位址所分配的 IPv6 子前置字元 (位於 EXTERNAL_IPV6_FORWARDING_RULE_CREATION 模式) 的 可分配前置字元長度相符。前置字串長度可以是 /48/56/64/72/80/88/96
  • IPv6 位址必須與 PDP 位於相同區域。

根據需求選擇下列其中一種部署方式:

從 PDP 直接分配

直接參照 PDP 建立轉送規則。IP 位址會與負載平衡器的生命週期綁定。

控制台

  1. 前往 Google Cloud 控制台的「Load balancing」(負載平衡) 頁面。

    前往「Load balancing」(負載平衡) 頁面

  2. 按一下要修改的負載平衡器名稱。
  3. 點選「Edit」(編輯)
  4. 點選「前端設定」
  5. 按一下 [Add frontend IP and port] (新增前端 IP 和通訊埠)
  6. 在「New Frontend IP and port」(新增的前端 IP 和通訊埠) 區段中,指定下列項目:
    1. 選取所需的「Protocol」(通訊協定)
    2. 在「IP version」(IP 版本) 欄位,選取「IPv6」
    3. 在「IPv6 範圍來源」欄位中,選取「BYOIP」
    4. 在「BYOIP type」欄位中,選取「BYOIP IP collection」
    5. 在「IP collection」(IP 集合) 清單中,選取您在上一個步驟中建立的子前置字串 (PDP),並啟用轉送規則選項。
    6. 在「IPv6 range」(IPv6 範圍) 欄位中,輸入 IPv6 位址範圍。IPv6 位址範圍的前置長度必須與 相關聯子前置字串的可分配前置長度相符。
    7. 在「Ports」(通訊埠) 欄位中輸入通訊埠編號。
    8. 按一下「完成」
  7. 按一下「Update」

gcloud

使用 gcloud compute forwarding-rules create 指令

  gcloud compute forwarding-rules create FWD_RULE_NAME \
      --load-balancing-scheme=EXTERNAL \
      --ip-protocol=PROTOCOL \
      --ports=ALL \
      --ip-version=IPV6 \
      --region=REGION_A \
      --address=IPV6_CIDR_RANGE  \
      --backend-service=BACKEND_SERVICE \
      --ip-collection=PDP_NAME

更改下列內容:

  • FWD_RULE_NAME:轉送規則的名稱
  • PROTOCOL:轉送規則的 IP 通訊協定。預設值為 TCP。IP 通訊協定可以是 TCPUDPL3_DEFAULT
  • REGION_A:轉送規則的區域
  • IPV6_CIDR_RANGE:轉送規則提供的 IPv6 位址範圍。IPv6 位址範圍的前置字串必須與 相關聯子前置字串指定的可分配前置字串長度相符。
  • BACKEND_SERVICE:後端服務名稱
  • PDP_NAME:公開委派前置碼的名稱。PDP 必須是 EXTERNAL_IPV6_FORWARDING_RULE_CREATION 模式中的子字首。

預留自帶 IP IPv6 位址

為負載平衡器預留 BYOIP IPv6 位址,然後參照 IP 位址或預留位址資源名稱,建立轉送規則。

控制台

為負載平衡器預留 BYOIP IPv6 位址

  1. 前往 Google Cloud 控制台的「IP addresses」(IP 位址) 頁面。

    前往「IP addresses」(IP 位址) 頁面

  2. 按一下「Reserve static address」(保留靜態位址)
  3. 在「Name」(名稱) 欄位中,輸入 IP 位址資源的名稱。
  4. 在「Network Service Tier」(網路服務級別) 欄位中,選取「Premium」(進階級)
  5. 在「IP version」(IP 版本) 欄位,選取「IPv6」
  6. 選取「區域」。這個區域必須與 PDP 的區域相符。
  7. 選取「從 IP 集合指派」核取方塊。
  8. 在「IP collection」(IP 集合) 清單中,選取要保留位址的 IPv6 子前置字元 (PDP)。
  9. 選用:在「IP 位址」欄位中,輸入要保留的特定 IPv6 位址範圍 (自訂分配)。如果您未指定位址範圍, Google Cloud 會從所選 IP 集合自動分配位址範圍 (自動分配)。
  10. 點選「保留」

將預留位址指派給負載平衡器

  1. 前往 Google Cloud 控制台的「Load balancing」(負載平衡) 頁面。

    前往「Load balancing」(負載平衡) 頁面

  2. 按一下要修改的負載平衡器名稱。
  3. 按一下「編輯」,然後按一下「前端設定」
  4. 按一下 [Add frontend IP and port] (新增前端 IP 和通訊埠)
  5. 在「New Frontend IP and port」(新增的前端 IP 和通訊埠) 區段中,指定下列項目:
    1. 選取所需的「Protocol」(通訊協定)
    2. 在「IP version」(IP 版本) 欄位,選取「IPv6」
    3. 在「IPv6 範圍來源」欄位中,選取「BYOIP」
    4. 在「BYOIP type」(自備 IP 類型) 欄位中,選取「BYOIP reserved IP address」(自備 IP 預留 IP 位址)
    5. 在「保留的 IP 位址」清單中,選取您在步驟 1 建立的保留 BYOIPv6 位址資源。
    6. 在「Ports」(通訊埠) 欄位中輸入通訊埠編號。
    7. 按一下「完成」
  6. 完成負載平衡器設定,然後按一下「更新」

gcloud

為負載平衡器預留 BYOIP IPv6 位址

如要在建立負載平衡器之前,從 PDP 保留區域性 BYOIP IPv6 位址,請執行 gcloud compute addresses create 指令,並使用 --endpoint-type=NETLB。您可以選擇下列其中一個選項:

  • 如要預留特定 IPv6 位址範圍,請執行下列指令:

      gcloud compute addresses create ADDRESS_NAME \
          --ip-collection=PDP_NAME \
          --addresses=IPV6_ADDRESS \
          --region=REGION_A \
          --endpoint-type=NETLB \
          --prefix-length=PREFIX_LENGTH
    
  • 如要 Google Cloud 自動從 PDP 分配範圍,請執行下列指令:

      gcloud compute addresses create ADDRESS_NAME \
          --ip-collection=PDP_NAME \
          --region=REGION_A \
          --endpoint-type=NETLB \
          --prefix-length=PREFIX_LENGTH
    

更改下列內容:

  • ADDRESS_NAME:預留 IP 位址資源的名稱。
  • PDP_NAME:公開委派前置碼的名稱。PDP 必須是 EXTERNAL_IPV6_FORWARDING_RULE_CREATION 模式中的子字首。
  • IPV6_ADDRESS:範圍的起始 IPv6 位址 (例如 2001:db8::)。
  • REGION_A:要建立地址的區域。這個區域必須與 PDP 的區域相符。
  • PREFIX_LENGTH:位址範圍的前置字串長度,必須等於相關聯 PDP 的可分配前置字串長度 (例如 56)。

使用保留的位址建立轉送規則

如要使用保留位址建立轉送規則,請執行 gcloud compute forwarding-rules create 指令。選擇下列其中一個選項:

  • 如要參照 IP 位址範圍,請執行下列指令:

      gcloud compute forwarding-rules create FWD_RULE_NAME \
         --load-balancing-scheme=EXTERNAL \
         --ip-protocol=PROTOCOL \
         --ports=ALL \
         --ip-version=IPV6 \
         --region=REGION_A \
         --address=IPV6_CIDR_RANGE \
         --backend-service=BACKEND_SERVICE
    
  • 如要參照保留的位址名稱,請執行下列指令:

      gcloud compute forwarding-rules create FWD_RULE_NAME \
          --load-balancing-scheme=EXTERNAL \
          --ip-protocol=PROTOCOL \
          --ports=ALL \
          --ip-version=IPV6 \
          --region=REGION_A \
          --address=ADDRESS_NAME \
          --backend-service=BACKEND_SERVICE
    

更改下列內容:

  • FWD_RULE_NAME:轉送規則的名稱
  • PROTOCOL:轉送規則的 IP 通訊協定。預設值為 TCP。IP 通訊協定可以是 TCPUDPL3_DEFAULT
  • REGION_A:轉送規則的區域
  • IPV6_CIDR_RANGE:轉送規則提供的 IPv6 位址範圍。IPv6 位址範圍的前置字串必須與 相關聯子前置字串指定的可分配前置字串長度相符。
  • BACKEND_SERVICE:後端服務名稱
  • ADDRESS_NAME:保留 IP 位址資源的名稱。

將臨時 IP 升級為保留的 IP 位址

使用直接分配方式建立轉送規則,並升級使用中的暫時性 IP 位址。

控制台

  1. 按照步驟使用從 PDP 直接分配的方式建立轉送規則。
  2. 前往 Google Cloud 控制台的「IP addresses」(IP 位址) 頁面。

    前往「IP addresses」(IP 位址) 頁面

  3. 按一下「External IP addresses」(外部 IP 位址) 分頁標籤。
  4. 找出與外部直通式網路負載平衡器相關聯的暫時性 BYOIP IPv6 位址。
  5. 在「動作」欄中,按一下三點選單 (),然後選取「升級為靜態 IP 位址」
  6. 輸入預留位址的「名稱」,然後按一下「預留」

gcloud

  1. 請按照步驟,使用從 PDP 直接分配的方式更新轉送規則。
  2. 如要將負載平衡器使用的臨時 IP 範圍升級為預留靜態 IP 位址,請執行 gcloud compute addresses create 指令

       gcloud compute addresses create ADDRESS_NAME \
           --addresses=IPV6_ADDRESS \
           --region=REGION_A \
           --endpoint-type=NETLB \
           --prefix-length=PREFIX_LENGTH
    

    更改下列內容:

    • ADDRESS_NAME:保留 IP 位址資源的名稱。
    • IPV6_ADDRESS:範圍的起始 IPv6 位址 (例如 2001:db8::)。
    • REGION_A:轉送規則的區域
    • PREFIX_LENGTH:位址範圍的前置字串長度,必須等於相關聯 PDP 的可分配前置字串長度 (例如 56)。

後續步驟