設定具有混合式連線的全域外部應用程式負載平衡器

本頁說明如何部署全域外部應用程式負載平衡器,將流量負載平衡至地端或其他公有雲的網路端點,並透過混合式連線連線。

完成這些工作後,您可以選擇啟用其他服務 (例如 Cloud CDN 和 Google Cloud Armor) 和進階流量管理功能。

如果尚未瞭解,請參閱混合式連線 NEG 總覽,瞭解設定混合式負載平衡的網路需求。

設定總覽

本頁面的範例會設定下列範例部署作業:

混合式連線的外部應用程式負載平衡器範例。
混合式連線的外部應用程式負載平衡器範例 (按一下即可放大)。

您必須先設定混合式連線,才能嘗試設定混合式負載平衡部署作業。本文不包含混合式連線設定。

視您選擇的混合式連線產品 (Cloud VPN 或 Cloud Interconnect (專屬或合作夥伴)) 而定,請使用相關產品說明文件進行設定。

權限

如要設定混合式負載平衡,您必須具備下列權限:

  • 開啟 Google Cloud

    • 在 Google Cloud 與地端部署環境或其他雲端環境之間建立混合式連線的權限。如需必要權限清單,請參閱相關的網路連線產品說明文件
    • 具備建立混合式連線 NEG 和負載平衡器的權限。Compute 負載平衡器管理員角色 (roles/compute.loadBalancerAdmin) 包含執行本指南所述工作所需的權限。
  • 在內部部署環境或其他非Google Cloud 雲端環境中

    • 設定網路端點的權限,允許地端環境或其他雲端環境中的服務,透過Google Cloud 使用 IP:Port 組合存取。如需更多資訊,請與環境的網路管理員聯絡。
    • 具備在內部部署環境或其他雲端環境中建立防火牆規則的權限,允許 Google 健康狀態檢查探測器連線至端點。

此外,如要完成本頁的操作說明,您需要建立混合式連線 NEG、負載平衡器和區域 NEG (及其端點),做為負載平衡器的 Google Cloud型後端。

因此您必須是專案擁有者或編輯者,或是具備下列 Compute Engine IAM 角色

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

選用:使用 BYOIP 位址

如果使用自備 IP 位址 (BYOIP),可將自己的公開位址匯入Google Cloud ,與 Google Cloud 資源搭配使用。舉例來說,如果您匯入了多個自己的 IPv4 位址,設定負載平衡器時,就可以將其中一個位址指派給轉送規則。按照本文的操作說明時,請在「IP 位址」欄位提供 BYOIP 位址

如要進一步瞭解如何使用 BYOIP,請參閱「使用自己的 IP 位址」。

建立混合式連線

您的環境和地端部署環境或其他雲端環境必須透過 Google Cloud 混合式連線連線,方法是使用 Cloud Interconnect VLAN 連結,或是透過 Cloud Router 或路由器設備 VM 使用 Cloud VPN 通道。建議您使用高可用性連線。

啟用全域動態轉送的 Cloud Router 會透過邊界閘道通訊協定 (BGP) 瞭解特定端點,並將其程式化到 Google Cloud 虛擬私有雲網路中。不支援區域動態路由。也不支援靜態路徑。

您可以使用相同網路或相同專案中的不同虛擬私有雲網路,設定混合式網路 (Cloud Interconnect、Cloud VPN 或路由器設備 VM) 和負載平衡器。注意事項:

  • 如果使用不同的 VPC 網路,這兩個網路必須透過 VPC 網路對等互連連線,或是必須是同一個 Network Connectivity Center 中樞上的 VPC 輪輻

  • 如果使用相同的 VPC 網路,請確保 VPC 網路的子網路 CIDR 範圍與遠端 CIDR 範圍沒有衝突。如果 IP 位址重疊,系統會優先處理子網路路徑,而非遠端連線。

如需操作說明,請參閱下列文件:

設定外部環境 Google Cloud

請按照下列步驟,為混合式負載平衡設定地端環境或其他雲端環境:

  • 設定網路端點,將地端服務公開給Google Cloud (IP:Port)。
  • 在內部部署環境或其他雲端環境中設定防火牆規則。
  • 設定 Cloud Router,向您的私有環境通告特定必要路徑。

設定網路端點

設定混合式連線後,您可以使用 IP:port 組合,在地端部署環境或其他雲端環境中設定一或多個網路端點,這些端點可透過 Cloud Interconnect、Cloud VPN 或路由器設備連線。這個IP:port組合會設定為混合式連線 NEG 的一或多個端點,並在稍後的程序中建立 Google Cloud 。

如果 IP 端點有多個路徑,路由會遵循Cloud Router 總覽中說明的行為。

設定防火牆規則

您必須在內部部署環境或其他雲端環境中建立下列防火牆規則:

  • 建立允許輸入的防火牆規則,允許 Google 健康狀態檢查探測器將流量傳送至端點。允許的來源 IP 位址範圍為 35.191.0.0/16130.211.0.0/22。詳情請參閱「探測 IP 範圍和防火牆規則」。

將 Cloud Router 設為向地端環境或其他雲端環境通告下列自訂 IP 範圍

  • Google 健康狀態檢查探測器使用的範圍:35.191.0.0/16130.211.0.0/22

設定 Google Cloud 環境

在下列步驟中,請務必使用相同的虛擬私有雲網路 (在本程序中稱為 NETWORK),該網路用於設定環境之間的混合式連線。

為後端建立子網路

這個子網路用於建立負載平衡器的區域 NEG 後端、前端和內部 IP 位址。

在用於設定環境間混合式連線的NETWORK網路中建立這個子網路。

控制台

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

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

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

  2. 前往用於設定環境間混合式連線的網路。

    • 按一下 [編輯]
    • 在「Subnet creation mode」(子網路建立模式) 中,選擇「Custom」(自訂)
    • 按一下 [儲存]
  3. 選用:如要在這個網路的子網路上設定內部 IPv6 位址範圍,請完成下列步驟:

    1. 在「虛擬私有雲網路 ULA 內部 IPv6 範圍」部分,選取「已啟用」
    2. 在「Allocate internal IPv6 range」(分配內部 IPv6 範圍) 部分,選取「Automatically」(自動) 或「Manually」(手動)

      如果選取「手動」,請在 fd20::/20 範圍內輸入 /48 範圍。如果該範圍正在使用中,系統會提示您提供其他範圍。

  4. 在「子網路」分頁中,按一下「新增子網路」

  5. 在「新增子網路」面板中,設定下列欄位:

    1. 在「Name」(名稱) 欄位中,輸入子網路的名稱。
    2. 在「Region」(區域) 欄位中選取區域。
    3. 在「IP 位址範圍」欄位中輸入 IP 位址範圍。
    4. 在「IP stack type」(IP 堆疊類型),選取「IPv4 and IPv6 (dual-stack)」(IPv4 和 IPv6 (雙重堆疊))
    5. 在「IPv6 存取權類型」欄位中,選取「外部」
    6. 按一下「新增」。

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

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

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

  2. 前往用於設定環境間混合式連線的網路。

    • 按一下 [編輯]
    • 在「Subnet creation mode」(子網路建立模式) 中,選擇「Custom」(自訂)
    • 按一下 [儲存]
  3. 在「子網路」分頁中,按一下「新增子網路」

  4. 在「新增子網路」面板中,輸入下列資訊:

    • 在「Name」(名稱) 欄位中,輸入子網路的名稱。
    • 在「Region」(區域) 欄位中選取區域。
    • 在「IP 位址範圍」欄位中輸入 IP 位址範圍。
    • 在「IP stack type」(IP 堆疊類型) 欄位中,選取「IPv4 (single-stack)」(IPv4 (單一堆疊))
    • 按一下「新增」。

gcloud

在用於設定環境間混合式連線的 NETWORK 網路中建立子網路。

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

gcloud compute networks update NETWORK \
    [ --enable-ula-internal-ipv6 [ --internal-ipv6-range=ULA_IPV6_RANGE ]] \
    --switch-to-custom-subnet-mode
gcloud compute networks subnets create LB_SUBNET_NAME \
    --network=NETWORK \
    --range=LB_SUBNET_RANGE \
    --region=REGION \
    --stack-type=IPV4_IPV6 \
    --ipv6-access-type=EXTERNAL

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

gcloud compute networks subnets create LB_SUBNET_NAME \
    --network=NETWORK \
    --range=LB_SUBNET_RANGE \
    --region=REGION

更改下列內容:

  • NETWORK:虛擬私有雲網路名稱。

  • LB_SUBNET_NAME:子網路名稱。

  • REGION:區域名稱。

  • ULA_IPV6_RANGE:Google 用於內部 IPv6 子網路範圍的 fd20::/20 範圍內 /48 前置字元。如果您未使用 --internal-ipv6-range 標記,Google 會為網路選取 /48 前置字串。

建立防火牆規則

在本範例中,您會建立下列防火牆規則:

  • fw-allow-health-check:輸入規則,適用於要進行負載平衡的執行個體,可允許來自負載平衡器和Google Cloud 健康狀態檢查系統 (130.211.0.0/2235.191.0.0/16) 的流量。本範例使用目標標記 allow-health-check 識別應套用這項規則的後端 VM。 Google Cloud

控制台

  1. 前往 Google Cloud 控制台的「Firewall policies」(防火牆政策) 頁面。

    前往「Firewall policies」(防火牆政策)

  2. 按一下「建立防火牆規則」

    1. 輸入 fw-allow-health-check 的「Name」(名稱)
    2. 在「網路」部分中,選取 NETWORK
    3. 在「Targets」(目標) 下方,選取「Specified target tags」(指定的目標標記)
    4. 在「Target tags」(目標標記) 欄位填入 allow-health-check
    5. 將「Source filter」(來源篩選器) 設為「IPv4 ranges」(IPv4 範圍)
    6. 將「Source IPv4 ranges」(來源 IPv4 範圍) 設為 130.211.0.0/2235.191.0.0/16
    7. 在「Protocols and ports」(通訊協定和通訊埠) 下方,選取「Specified protocols and ports」(指定的通訊協定和通訊埠)
    8. 勾選「TCP」TCP旁的核取方塊,通訊埠編號請輸入 80
  3. 點選「建立」

  4. 如要允許 IPv6 子網路流量,請再次按一下「建立防火牆規則」,然後輸入下列資訊:

    1. Name (名稱):fw-allow-lb-access-ipv6
    2. Network (網路):NETWORK
    3. Priority (優先順序):1000
    4. 「Direction of traffic」(流量方向)ingress
    5. 目標指定的目標標記
    6. 在「Target tags」(目標標記) 欄位中輸入 allow-health-check-ipv6
    7. Source filter (來源篩選器):「IPv6 ranges」(IPv6 範圍)
    8. 來源 IPv6 範圍2600:2d00:1:b029::/642600:2d00:1:1::/64
    9. 「Protocols and ports」(通訊協定和通訊埠)全部允許
  5. 點選「建立」

gcloud

  1. 建立 fw-allow-health-check-and-proxy 規則,允許負載平衡器和 Google Cloud 健康狀態檢查在 TCP 通訊埠 80 上與後端執行個體通訊。

    NETWORK 替換為用於設定混合式連線的虛擬私有雲網路名稱。

    gcloud compute firewall-rules create fw-allow-health-check \
        --network=NETWORK \
        --action=allow \
        --direction=ingress \
        --target-tags=allow-health-check \
        --source-ranges=130.211.0.0/22,35.191.0.0/16 \
        --rules=tcp:80
    
  2. 建立 fw-allow-health-check-ipv6 規則,允許 IPv6 健康狀態檢查。 Google Cloud

    gcloud compute firewall-rules create fw-allow-health-check-ipv6 \
       --network=NETWORK \
       --action=allow \
       --direction=ingress \
       --target-tags=allow-health-check-ipv6 \
       --source-ranges=2600:2d00:1:b029::/64,2600:2d00:1:1::/64 \
       --rules=tcp,udp,icmp
    

設定可用區 NEG

如果是 Google Cloud型後端,建議您在設定混合式連線的同一區域中,設定多個區域 NEG。

如果可用區 NEG 具有一或多個 GCE_VM_IP_PORT 類型端點,則支援雙堆疊。

在本範例中,我們在 REGION 區域中設定區域 NEG (具有 GCE_VM_IP_PORT 類型的端點)。請先在 GCP_NEG_ZONE 區域中建立 VM。接著在相同 GCP_NEG_ZONE 中建立區域 NEG,並將 VM 的網路端點新增至 NEG。

建立 VM

控制台

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

  2. 點選「建立執行個體」

  3. 將「Name」(名稱) 設為 vm-a1

  4. 在「區域」部分,選擇「REGION」。

  5. 在「可用區」部分,選擇「GCP_NEG_ZONE」。

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

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

    • 按一下「網路」,然後新增下列「網路標記」allow-health-check
    • 按一下「網路介面」下方的「編輯」圖示 ,進行下列變更,然後按一下「完成」
      • Network (網路):NETWORK
      • Subnet (子網路):LB_SUBNET_NAME
      • IP stack type (IP 堆疊類型):IPv4 和 IPv6 (雙重堆疊)
    • 按一下 [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. 點選「建立」

  9. 使用下列名稱和區域組合,重複下列步驟來建立第二個 VM:

    • 名稱:vm-a2,區域:GCP_NEG_ZONE

gcloud

使用下列 VM 名稱和區域的組合,執行以下指令兩次來建立 VM。兩個 VM 的指令碼內容完全相同。

  • VM_NAMEvm-a1 和您選擇的任何 GCP_NEG_ZONE 區域
  • VM_NAMEvm-a2,以及相同的 GCP_NEG_ZONE 區域

    如要同時支援 IPv4 和 IPv6 流量,請執行下列指令:

    gcloud compute instances create VM_NAME \
        --zone=GCP_NEG_ZONE \
        --image-family=debian-12 \
        --image-project=debian-cloud \
        --tags=allow-health-check,allow-health-check-ipv6 \
        --ipv6-network-tier=PREMIUM \
        --stack-type=IPV4_IPV6 \
        --subnet=LB_SUBNET_NAME \
        --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'
    

建立可用區 NEG

控制台

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

  1. 前往 Google Cloud 控制台的「Network Endpoint Groups」(網路端點群組) 頁面。
    前往「網路端點群組」頁面
  2. 按一下「Create network endpoint group」(建立網路端點群組)
  3. 輸入區域 NEG 的「Name」(名稱)。在本程序中稱為「GCP_NEG_NAME」。
  4. 選取「網路端點群組類型」網路端點群組 (區域性)
  5. 選取「網路」NETWORK
  6. 選取「子網路」LB_SUBNET_NAME
  7. 選取「區域」GCP_NEG_ZONE
  8. 輸入「Default port」(預設通訊埠)80
  9. 點選「建立」

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

  1. 前往 Google Cloud 控制台的「Network Endpoint Groups」(網路端點群組) 頁面。
    前往「網路端點群組」
  2. 按一下上一個步驟建立的網路端點群組「名稱」 (GCP_NEG_NAME)。畫面上會顯示「網路端點群組詳細資料」頁面。
  3. 在「Network endpoints in this group」(這個群組中的網路端點) 區段中,按一下 [Add network endpoint] (新增網路端點]。畫面會出現「Add network endpoint」(新增網路端點) 頁面。
  4. 選取某個 VM 執行個體,將其內部 IP 位址新增為網路端點。「網路介面」部分會顯示 VM 的名稱、區域和子網路。
  5. 在「IPv4 位址」欄位中,輸入新網路端點的 IPv4 位址。
  6. 在「IPv6 address」(IPv6 位址) 欄位中,輸入新網路端點的 IPv6 位址。
  7. 選取「Port type」(通訊埠類型)
    1. 如果您選取「預設」,則端點會使用網路端點群組中所有端點的預設通訊埠 80。由於 Apache 伺服器會在通訊埠 80 提供要求服務,因此這個範例已足夠。
    2. 如果您選取「Custom」(自訂),請輸入端點要使用的「Port number」(通訊埠編號)
  8. 如要新增更多端點,請按一下「新增網路端點」,然後重複上述步驟。
  9. 新增所有端點後,按一下「建立」

gcloud

  1. 使用 gcloud compute network-endpoint-groups create 指令建立可用區 NEG (含 GCE_VM_IP_PORT 端點):

    gcloud compute network-endpoint-groups create GCP_NEG_NAME \
        --network-endpoint-type=GCE_VM_IP_PORT \
        --zone=GCP_NEG_ZONE \
        --network=NETWORK \
        --subnet=LB_SUBNET_NAME
    

    您可以在建立 NEG 時指定 --default-port,或為每個端點指定通訊埠號碼,如下一步所示。

  2. 將雙堆疊端點新增至 GCP_NEG_NAME

    gcloud compute network-endpoint-groups update GCP_NEG_NAME \
       --zone=GCP_NEG_ZONE \
       --add-endpoint='instance=vm-a1,ip=IPv4_ADDRESS, \
                       ipv6=IPv6_ADDRESS,port=80' \
       --add-endpoint='instance=vm-a2,ip=IPv4_ADDRESS, \
                       ipv6=IPv6_ADDRESS,port=80'
    

設定混合式連線 NEG

建立 NEG 時,請使用ZONE,盡量縮短ZONE與地端部署或其他雲端環境之間的地理距離。 Google Cloud 舉例來說,如果您在德國法蘭克福的內部部署環境中代管服務,建立 NEG 時可以指定 europe-west3-a Google Cloud 可用區。

此外,如果您使用 Cloud Interconnect,用於建立 NEG 的 ZONE 應位於設定混合式連線 Cloud Interconnect VLAN 連結的同一地區。

如要瞭解可用的區域和可用區,請參閱 Compute Engine 說明文件:可用的區域和可用區

控制台

如要建立混合式連線網路端點群組,請按照下列步驟操作:

  1. 前往 Google Cloud 控制台的「Network Endpoint Groups」(網路端點群組) 頁面。
    前往「網路端點群組」
  2. 按一下「Create network endpoint group」(建立網路端點群組)
  3. 輸入混合式 NEG 的名稱。在本程序中稱為「ON_PREM_NEG_NAME」。
  4. 選取「網路端點群組類型」混合式連線網路端點群組 (可用區)
  5. 選取「網路」NETWORK
  6. 選取「子網路」LB_SUBNET_NAME
  7. 選取「區域」ON_PREM_NEG_ZONE
  8. 輸入「預設通訊埠」
  9. 按一下「Create」(建立)

將端點新增至混合式連線 NEG:

  1. 前往 Google Cloud 控制台的「Network Endpoint Groups」(網路端點群組) 頁面。
    前往「網路端點群組」頁面
  2. 按一下上一個步驟建立的網路端點群組「名稱」 (ON_PREM_NEG_NAME)。畫面上即會出現「Network endpoint group detail」(網路端點群組詳細資料) 頁面。
  3. 在「Network endpoints in this group」(這個群組中的網路端點) 區段中,按一下 [Add network endpoint] (新增網路端點]。畫面會出現「Add network endpoint」(新增網路端點) 頁面。
  4. 輸入新網路端點的「IP address」(IP 位址)
  5. 選取「Port type」(通訊埠類型)
    1. 如果您選取「預設」,則端點會使用網路端點群組中所有端點的預設通訊埠。
    2. 如果選取「自訂」,您可以輸入端點要使用的其他「通訊埠編號」
  6. 如要新增更多端點,請按一下「新增網路端點」,然後重複上述步驟。
  7. 新增所有非Google Cloud 端點後,按一下「建立」

gcloud

  1. 使用 gcloud compute network-endpoint-groups create 指令建立混合式連線 NEG。

    gcloud compute network-endpoint-groups create ON_PREM_NEG_NAME \
        --network-endpoint-type=NON_GCP_PRIVATE_IP_PORT \
        --zone=ON_PREM_NEG_ZONE \
        --network=NETWORK
    
  2. 將端點新增至 on-prem-neg

    gcloud compute network-endpoint-groups update ON_PREM_NEG_NAME \
        --zone=ON_PREM_NEG_ZONE \
        --add-endpoint="ip=ON_PREM_IP_ADDRESS_1,port=PORT_1" \
        --add-endpoint="ip=ON_PREM_IP_ADDRESS_2,port=PORT_2"
    

您可以使用這項指令,新增先前在地端或雲端環境中設定的網路端點。視需要重複 --add-endpoint

如有需要,您可以重複執行這些步驟,建立多個混合 NEG。

設定負載平衡器

控制台

gcloud

  1. 建立全域靜態外部 IP 位址,供外部用戶端傳送流量。
      gcloud compute addresses create LB_IP_ADDRESS_NAME \
          --network-tier=PREMIUM \
          --global
      
  2. 為後端建立健康狀態檢查
      gcloud compute health-checks create http HTTP_HEALTH_CHECK_NAME \
          --use-serving-port
      
  3. 建立後端服務。您會將區域 NEG 和混合式連線 NEG 都新增至這個後端服務,做為後端。
  4.   gcloud beta compute backend-services create BACKEND_SERVICE \
          --health-checks=HTTP_HEALTH_CHECK_NAME \
          --load-balancing-scheme=EXTERNAL_MANAGED \
          --ip-address-selection-policy=PREFER_IPV6 \
          --global
      
  5. 將區域 NEG 新增至後端服務並設為後端:
      gcloud beta compute backend-services add-backend BACKEND_SERVICE \
          --global \
          --balancing-mode=RATE \
          --max-rate-per-endpoint=MAX_REQUEST_RATE_PER_ENDPOINT \
          --network-endpoint-group=GCP_NEG_NAME \
          --network-endpoint-group-zone=GCP_NEG_ZONE
       
    如要進一步瞭解如何設定平衡模式,請參閱 --max-rate-per-endpoint 參數的 gcloud CLI 說明文件。
  6. 將混合式 NEG 新增至後端服務並設為後端:
      gcloud compute backend-services add-backend BACKEND_SERVICE \
          --global \
          --balancing-mode=RATE \
          --max-rate-per-endpoint=MAX_REQUEST_RATE_PER_ENDPOINT \
          --network-endpoint-group=ON_PREM_NEG_NAME \
          --network-endpoint-group-zone=ON_PREM_NEG_ZONE
      
  7. 建立網址對應,將傳入要求轉送至後端服務。
      gcloud beta compute url-maps create URL_MAP_NAME \
          --default-service BACKEND_SERVICE
      
  8. 只有在建立 HTTPS 負載平衡器時才需要執行這個步驟。建立 HTTP 負載平衡器不需執行此步驟。
    如要建立 HTTPS 負載平衡器,您必須擁有 SSL 憑證資源,才能在 HTTPS 目標 Proxy 中使用。您可以使用 Google 代管的 SSL 憑證或自行管理的 SSL 憑證,建立 SSL 憑證資源。建議使用 Google 代管的憑證,因為 Google Cloud 會自動取得、管理及更新這些憑證。

    如要建立 Google 代管的憑證, 您必須擁有網域。如果沒有網域,可以使用自行簽署的 SSL 憑證進行測試。

    建立 Google 代管的 SSL 憑證資源:
    gcloud compute ssl-certificates create SSL_CERTIFICATE_NAME \
        --domains DOMAIN
    
    建立自行管理的 SSL 憑證資源:
    gcloud compute ssl-certificates create SSL_CERTIFICATE_NAME \
        --certificate CRT_FILE_PATH \
        --private-key KEY_FILE_PATH
    
  9. 建立目標 HTTPS Proxy,將要求轉送至您的網址對應。

    如果是 HTTP 負載平衡器,請建立 HTTP 目標 Proxy:
    gcloud beta compute target-http-proxies create TARGET_HTTP_PROXY_NAME \
        --http-keep-alive-timeout-sec=HTTP_KEEP_ALIVE_TIMEOUT_SEC \
        --url-map=URL_MAP_NAME
    
    如果是 HTTPS 負載平衡器,請建立 HTTPS 目標 Proxy。 Proxy 是負載平衡器的一部分,用於存放 HTTPS 負載平衡的 SSL 憑證,因此您也可以在此步驟載入憑證。
    gcloud beta compute target-https-proxies create TARGET_HTTPS_PROXY_NAME \
        --http-keep-alive-timeout-sec=HTTP_KEEP_ALIVE_TIMEOUT_SEC \
        --ssl-certificates=SSL_CERTIFICATE_NAME \
        --url-map=URL_MAP_NAME
    

    更改下列內容:

    • TARGET_HTTP_PROXY_NAME:目標 HTTP Proxy 的名稱。
    • TARGET_HTTPS_PROXY_NAME:目標 HTTPS Proxy 的名稱。
    • HTTP_KEEP_ALIVE_TIMEOUT_SEC:選用欄位,用於指定用戶端 HTTP 保持運作逾時。 逾時值必須介於 5 至 1200 秒之間。預設值為 610 秒。
    • SSL_CERTIFICATE_NAME:SSL 憑證的名稱。
    • URL_MAP_NAME:網址對應的名稱。
  10. 建立轉送規則,將傳入要求轉送至 Proxy。

    HTTP 負載平衡器:
    gcloud beta compute forwarding-rules create HTTP_FORWARDING_RULE_NAME \
        --load-balancing-scheme=EXTERNAL_MANAGED \
        --network-tier=PREMIUM \
        --address=LB_IP_ADDRESS_NAME \
        --target-http-proxy=TARGET_HTTP_PROXY_NAME \
        --global \
        --ports=80
    
    如果是 HTTPS 負載平衡器:
    gcloud beta compute forwarding-rules create HTTPS_FORWARDING_RULE_NAME \
        --load-balancing-scheme=EXTERNAL_MANAGED \
        --network-tier=PREMIUM \
        --address=LB_IP_ADDRESS_NAME \
        --target-https-proxy=TARGET_HTTPS_PROXY_NAME \
        --global \
        --ports=443
    

將網域連結至負載平衡器

負載平衡器建立完成後,請記下與其相關聯的 IP 位址,例如 30.90.80.100。如要將網域指向負載平衡器,請透過網域註冊服務建立 A 記錄。如果在 SSL 憑證新增了多個網域,須新增各個網域的 A 記錄,並全部指向負載平衡器的 IP 位址。舉例來說,如要建立 www.example.comexample.comA 記錄,請使用以下方法:

NAME                  TYPE     DATA
www                   A        30.90.80.100
@                     A        30.90.80.100

如果使用 Cloud DNS 做為 DNS 供應商,請參閱「新增、修改及刪除記錄」。

測試負載平衡器

負載平衡器設定完成後,即可開始將流量傳送至負載平衡器的 IP 位址。

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

  2. 點選剛剛建立的負載平衡器。

  3. 記下負載平衡器的 IP 位址

  4. 將流量傳送至負載平衡器。

    • 如果是建立 HTTP 負載平衡器,可以使用網路瀏覽器前往 http://IP_ADDRESS 測試負載平衡器。請將 IP_ADDRESS 替換為負載平衡器的 IP 位址。系統應會將您導向透過端點公開發布的服務。

    • 如果您建立的是 HTTPS 負載平衡器,可以按照下列步驟使用 curl 測試負載平衡器。請將 IP_ADDRESS 替換為負載平衡器的 IP 位址,系統會自動導向您透過端點公開的服務。

      curl -k https://IP_ADDRESS
      

      如果這個做法無效,且您是使用 Google 代管的憑證,請確認憑證資源狀態為「ACTIVE」(有效)。詳情請參閱「Google 代管的 SSL 憑證資源狀態」。然後測試指向負載平衡器 IP 位址的網域。例如:

      curl -s https://DOMAIN_NAME
      

      DOMAIN_NAME 替換為您的應用程式網域名稱,例如 test.example.com

  5. 測試非Google Cloud 端點取決於您透過混合式 NEG 端點公開的服務。

額外設定

本節會延伸說明設定範例,並提供替代和其他設定選項。所有工作都是選擇性的。您可以按任何順序執行這些工作。

更新用戶端 HTTP 保持運作逾時

先前步驟中建立的負載平衡器已設定 用戶端 HTTP Keep-Alive 超時的預設值。

如要更新用戶端 HTTP 保持連線逾時,請按照下列操作說明操作。

控制台

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

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

  2. 按一下要修改的負載平衡器名稱。
  3. 點選「Edit」(編輯)
  4. 按一下「前端設定」
  5. 展開「進階功能」。在「HTTP 保持運作逾時」部分,輸入逾時值。
  6. 按一下「Update」
  7. 如要查看變更內容,請依序點選「Review and finalize」(檢查並完成) 和「Update」(更新)

gcloud

如果是 HTTP 負載平衡器,請使用 gcloud compute target-http-proxies update 指令更新目標 HTTP Proxy:

      gcloud compute target-http-proxies update TARGET_HTTP_PROXY_NAME \
          --http-keep-alive-timeout-sec=HTTP_KEEP_ALIVE_TIMEOUT_SEC \
          --global
    

如果是 HTTPS 負載平衡器,請使用 gcloud compute target-https-proxies update 指令更新目標 HTTPS Proxy:

      gcloud compute target-https-proxies update TARGET_HTTPS_PROXY_NAME \
          --http-keep-alive-timeout-sec=HTTP_KEEP_ALIVE_TIMEOUT_SEC \
          --global
    

更改下列內容:

  • TARGET_HTTP_PROXY_NAME:目標 HTTP Proxy 的名稱。
  • TARGET_HTTPS_PROXY_NAME:目標 HTTPS Proxy 的名稱。
  • HTTP_KEEP_ALIVE_TIMEOUT_SEC:HTTP 保持運作逾時值,範圍為 5 到 600 秒。

後續步驟