使用 VM 執行個體群組後端設定全域外部 Proxy 網路負載平衡器 (TCP Proxy)

Google Cloud 全域外部 Proxy 網路負載平衡器可讓您使用單一 IP 位址,為世界各地的使用者提供服務。全域外部 Proxy 網路負載平衡器會自動將流量轉送至最接近使用者的後端執行個體。

本頁說明如何設定具備目標 TCP Proxy 和 VM 執行個體群組後端的全域外部 Proxy 網路負載平衡器。開始之前,請先參閱「外部 Proxy 網路負載平衡器總覽」,詳細瞭解這類負載平衡器的運作方式。

設定總覽

這個範例說明如何為同時存在於區域 A 和區域 B 的服務設定外部 Proxy 網路負載平衡器。這個範例使用一組設為透過通訊埠 110 回應要求的 Apache 伺服器來提供服務。許多瀏覽器都不接受通訊埠 110,因此測試部分使用 curl

在這個範例中,您將進行以下設定:

  1. 分布在兩個地區之間的四個執行個體
  2. 執行個體群組 (其中包含執行個體)
  3. 確認執行個體健康狀態的檢查
  4. 後端服務,可監控執行個體並避免用量超過設定值
  5. 目標 TCP Proxy
  6. 外部靜態 IPv4 位址,以及將使用者流量傳送至 Proxy 的轉送規則
  7. 外部靜態 IPv6 位址,以及將使用者流量傳送至 Proxy 的轉送規則
  8. 允許流量從負載平衡器和健康狀態檢查工具傳送至執行個體的防火牆規則

負載平衡器設定完成後,即可測試設定。

權限

如要依照本指南的說明操作,您必須能在專案中建立執行個體與修改網路。您必須是專案擁有者或編輯者,或是必須具有以下所有 Compute Engine 身分與存取權管理角色

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

詳情請參閱下列指南:

設定網路和子網路

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

主控台

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

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

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

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

  3. 輸入網路的 [Name] (名稱)

  4. 選用:如要在這個網路的子網路上設定內部 IPv6 位址範圍,請完成下列步驟:

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

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

  5. 在「子網路建立模式」部分,選擇「自訂」

  6. 在「New subnet」(新的子網路) 區段中,設定下列欄位:

    1. 在「Name」(名稱) 欄位中,提供子網路的名稱。
    2. 在「Region」(區域) 欄位中選取區域。
    3. 在「IP 堆疊類型」部分,選取「IPv4 和 IPv6 (雙重堆疊)」
    4. 在「IP 位址範圍」欄位中輸入 IP 位址範圍。這是子網路的主要 IPv4 範圍

      雖然您可以為子網路設定 IPv4 位址範圍,但無法選擇子網路的 IPv6 位址範圍。Google 提供固定大小 (/64) 的 IPv6 CIDR 區塊。

    5. 在「IPv6 存取權類型」部分,選取「外部」

  7. 按一下「完成」

  8. 如要在其他區域新增子網路,請按一下「新增子網路」,然後重複上述步驟。

  9. 點選「建立」

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

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

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

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

  3. 在「Name」(名稱) 欄位中,輸入網路名稱。

  4. 在「子網路建立模式」部分,選擇「自訂」

  5. 在「New subnet」(新的子網路) 區段中,設定下列項目:

    1. 在「Name」(名稱) 欄位中,提供子網路的名稱。
    2. 在「Region」(區域) 欄位中選取區域。
    3. 在「IP 堆疊類型」部分,選取「IPv4 (單一堆疊)」
    4. 在「IP 位址範圍」欄位中,輸入子網路的主要 IPv4 範圍
  6. 按一下「完成」

  7. 如要在其他區域新增子網路,請按一下「新增子網路」,然後重複上述步驟。

  8. 點選「建立」

gcloud

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

    gcloud compute networks create NETWORK \
        --subnet-mode=custom
    
  2. 在網路中,為後端建立子網路。

    如要傳輸 IPv4 和 IPv6 流量,請使用下列指令更新子網路:

    gcloud compute networks subnets create SUBNET \
       --stack-type=IPV4_IPv6 \
       --ipv6-access-type=EXTERNAL \
       --network=NETWORK \
       --range=IPV4_RANGE \
       --region=REGION_A
    
    gcloud compute networks subnets create SUBNET_B \
       --stack-type=IPV4_IPv6 \
       --ipv6-access-type=EXTERNAL \
       --network=NETWORK \
       --range=IPV4_RANGE_B \
       --region=REGION_B
    

    如要只允許 IPv4 流量,請使用下列指令:

    gcloud compute networks subnets create SUBNET \
       --network=NETWORK \
       --stack-type=IPV4_ONLY \
       --range=IPV4_RANGE \
       --region=REGION_A
    
    gcloud compute networks subnets create SUBNET_B \
       --network=NETWORK \
       --stack-type=IPV4_ONLY \
       --range=IPV4_RANGE_B \
       --region=REGION_B
    

更改下列內容:

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

  • IPV4_RANGE:新子網路的主要 IPv4 範圍,採用 CIDR 標記法。例如:10.1.2.0/24

  • SUBNET:子網路的名稱

  • REGION_AREGION_B:區域名稱

設定執行個體群組後端

本節說明如何建立基本執行個體群組、為群組新增執行個體,然後再將這些執行個體新增至已通過健康狀態檢查的後端服務。正式上線的系統通常會依據執行個體範本使用代管執行個體群組,但上述設定方式可讓您在更短時間內完成初始測試。

設定執行個體

為進行測試,請在四個執行個體中安裝 Apache (兩個執行個體群組中各有兩個執行個體)。外部 Proxy 網路負載平衡器通常不會用於 HTTP 流量,但 Apache 軟體常用於測試。

在此範例中,執行個體是使用 tcp-lb 標記建立。此標記將在防火牆規則部分用到。

主控台

建立執行個體

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

    前往 VM 執行個體

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

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

  4. 將「區域」設為 REGION_A

  5. 將「Zone」(區域) 設為 ZONE_A

  6. 點選「進階選項」

  7. 按一下「網路」,然後設定下列欄位:

    • 在「網路標記」部分,輸入 tcp-lballow-health-check-ipv6

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

    1. 在「Network interfaces」(網路介面) 區段中,按一下「Edit」(編輯),然後進行下列變更:
      • Network (網路):NETWORK
      • Subnet (子網路):SUBNET
      • IP stack type (IP 堆疊類型):IPv4 和 IPv6 (雙重堆疊)
    2. 按一下「完成」
  8. 按一下 [Management] (管理)。在「Startup script」(開機指令碼) 欄位中輸入下列指令碼。

    sudo apt-get update
    sudo apt-get install apache2 -y
    sudo sed -i '/Listen 80/c\Listen 110' /etc/apache2/ports.conf
    sudo service apache2 restart
    echo '<!doctype html><html><body><h1>vm-a1</h1></body></html>' | sudo tee /var/www/html/index.html
  9. 點選「建立」

  10. 以相同的設定值建立 vm-a2,不過請將「Startup script」(開機指令碼) 設為:

    sudo apt-get update
    sudo apt-get install apache2 -y
    sudo sed -i '/Listen 80/c\Listen 110' /etc/apache2/ports.conf
    sudo service apache2 restart
    echo '<!doctype html><html><body><h1>vm-a2</h1></body></html>' | sudo tee /var/www/html/index.html

  11. 以相同的設定值建立 vm-b1,不過請將「Region」(地區) 設為 REGION_B,以及將「Zone」(區域) 設為 ZONE_B。 在「Startup script」(開機指令碼) 欄位中,輸入下列指令碼:

    sudo apt-get update
    sudo apt-get install apache2 -y
    sudo sed -i '/Listen 80/c\Listen 110' /etc/apache2/ports.conf
    sudo service apache2 restart
    echo '<!doctype html><html><body><h1>vm-b1</h1></body></html>' | sudo tee /var/www/html/index.html

  12. 以相同的設定值建立 vm-b2,不過請將「Region」(地區) 設為 REGION_B,以及將「Zone」(區域) 設為 ZONE_B。 在「Startup script」(開機指令碼) 欄位中,輸入下列指令碼:

    sudo apt-get update
    sudo apt-get install apache2 -y
    sudo sed -i '/Listen 80/c\Listen 110' /etc/apache2/ports.conf
    sudo service apache2 restart
    echo '<!doctype html><html><body><h1>vm-b2</h1></body></html>' | sudo tee /var/www/html/index.html

gcloud

  1. 在可用區「ZONE_A」中建立「vm-a1

    gcloud compute instances create vm-a1 \
       --image-family debian-12 \
       --image-project debian-cloud \
       --tags tcp-lb \
       --zone ZONE_A \
       --metadata startup-script="#! /bin/bash
         sudo apt-get update
         sudo apt-get install apache2 -y
         sudo sed -i '/Listen 80/c\Listen 110' /etc/apache2/ports.conf
         sudo service apache2 restart
         echo '<!doctype html><html><body><h1>vm-a1</h1></body></html>' | tee /var/www/html/index.html
         EOF"
    
  2. 在可用區「ZONE_A」中建立「vm-a2

    gcloud compute instances create vm-a2 \
       --image-family debian-12 \
       --image-project debian-cloud \
       --tags tcp-lb \
       --zone ZONE_A \
       --metadata startup-script="#! /bin/bash
         sudo apt-get update
         sudo apt-get install apache2 -y
         sudo sed -i '/Listen 80/c\Listen 110' /etc/apache2/ports.conf
         sudo service apache2 restart
         echo '<!doctype html><html><body><h1>vm-a2</h1></body></html>' | tee /var/www/html/index.html
         EOF"
    
  3. 在可用區「ZONE_B」中建立「vm-b1

    gcloud compute instances create vm-b1 \
       --image-family debian-12 \
       --image-project debian-cloud \
       --tags tcp-lb \
       --zone ZONE_B \
       --metadata startup-script="#! /bin/bash
         sudo apt-get update
         sudo apt-get install apache2 -y
         sudo sed -i '/Listen 80/c\Listen 110' /etc/apache2/ports.conf
         sudo service apache2 restart
         echo '<!doctype html><html><body><h1>vm-b1</h1></body></html>' | tee /var/www/html/index.html
         EOF"
    
  4. 在可用區「ZONE_B」中建立「vm-b2

    gcloud compute instances create vm-b2 \
       --image-family debian-12 \
       --image-project debian-cloud \
       --tags tcp-lb \
       --zone ZONE_B \
       --metadata startup-script="#! /bin/bash
         sudo apt-get update
         sudo apt-get install apache2 -y
         sudo sed -i '/Listen 80/c\Listen 110' /etc/apache2/ports.conf
         sudo service apache2 restart
         echo '<!doctype html><html><body><h1>vm-b2</h1></body></html>' | tee /var/www/html/index.html
         EOF"
    

建立執行個體群組

在本節中,您將在每個區域中建立執行個體群組,並新增執行個體。

主控台

  1. 前往 Google Cloud 控制台的「Instance groups」(執行個體群組) 頁面。

    前往「Instance groups」(執行個體群組) 頁面

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

  3. 按一下「新增非代管執行個體群組」

  4. 將「Name」(名稱) 設為 instance-group-a

  5. 將「Zone」(區域) 設為 ZONE_A

  6. 在「Port mapping」(通訊埠對應) 下方,按一下「Add port」(新增通訊埠)。 負載平衡器會透過具名通訊埠將流量傳送至執行個體群組。建立已命名的通訊埠,將連入流量對應至特定通訊埠編號。

    1. 將「Port name」(通訊埠名稱) 設為 tcp110
    2. 將「Port numbers」(通訊埠編號) 設為 110
  7. 在「VM instances」(VM 執行個體) 之下,選取 vm-a1vm-a2

  8. 保留其他欄位的設定值。

  9. 點選「建立」

  10. 重複執行上述步驟,但為以下欄位設定不同的值:

    • Name (名稱):instance-group-b
    • Region (區域):REGION_B
    • Zone (可用區):ZONE_B
    • 「Port name」(通訊埠名稱)tcp110
    • 「Port numbers」(通訊埠編號)110
    • 「Instances」(執行個體)vm-b1vm-b2

gcloud

  1. 建立 instance-group-a 執行個體群組。

    gcloud compute instance-groups unmanaged create instance-group-a \
       --zone ZONE_A
    
  2. 為執行個體群組建立命名通訊埠。

    gcloud compute instance-groups set-named-ports instance-group-a \
       --named-ports tcp110:110 \
       --zone ZONE_A
    
  3. vm-a1vm-a2 新增至 instance-group-a

    gcloud compute instance-groups unmanaged add-instances instance-group-a \
       --instances vm-a1,vm-a2 \
       --zone ZONE_A
    
  4. 建立 us-ig2 執行個體群組。

    gcloud compute instance-groups unmanaged create instance-group-b \
       --zone ZONE_B
    
  5. 為執行個體群組建立命名通訊埠。

    gcloud compute instance-groups set-named-ports instance-group-b \
       --named-ports tcp110:110 \
       --zone ZONE_B
    
  6. vm-b1vm-b2 新增至 instance-group-b

    gcloud compute instance-groups unmanaged add-instances instance-group-b \
       --instances vm-b1,vm-b2 \
       --zone ZONE_B
    

現在您在每個地區都有一個執行個體群組。每個執行個體群組各有兩個 VM 執行個體。

為外部 Proxy 網路負載平衡器建立防火牆規則

設定防火牆,允許流量從負載平衡器和健康狀態檢查工具傳送至執行個體。為此,我們必須開啟 TCP 通訊埠 110。健康狀態檢查將使用同個通訊埠進行。由於負載平衡器與執行個體之間的流量使用 IPv4,因此只需要開啟 IPv4 範圍即可。

主控台

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

    前往「防火牆政策」頁面

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

  3. 在「Name」(名稱) 欄位中輸入 allow-tcp-lb-and-health

  4. 請選取網路。

  5. 在「Targets」(目標) 下方,選取 [Specified target tags] (指定的目標標記)

  6. 將「Target tags」(目標標記) 設為 tcp-lb

  7. 將「Source filter」(來源篩選器) 設為「IPv4 ranges」(IPv4 範圍)

  8. 將「Source IPv4 ranges」(來源 IPv4 範圍) 設為 130.211.0.0/2235.191.0.0/16

  9. 在「Protocols and ports」(通訊協定和通訊埠) 下,將「Specified protocols and ports」(指定的通訊協定和通訊埠) 設為 tcp:110

  10. 點選「建立」

gcloud

gcloud compute firewall-rules create allow-tcp-lb-and-health \
   --source-ranges 130.211.0.0/22,35.191.0.0/16 \
   --target-tags tcp-lb \
   --allow tcp:110

建立 IPv6 健康狀態檢查防火牆規則

請確認您有適用於要進行負載平衡的執行個體,且允許來自 Google Cloud健康狀態檢查系統 (2600:2d00:1:b029::/64) 流量的輸入規則。這個範例會使用目標標記 allow-health-check-ipv6 來辨識應套用此規則的 VM 執行個體。

如果沒有這項防火牆規則,預設拒絕輸入規則會封鎖傳入至後端執行個體的 IPv6 流量。

主控台

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

    前往「防火牆政策」頁面

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

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

gcloud

建立 fw-allow-lb-access-ipv6 防火牆規則,允許與子網路進行通訊:

gcloud compute firewall-rules create fw-allow-lb-access-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=all

設定負載平衡器

控制台

開始設定

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

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

  2. 點選「建立負載平衡器」
  3. 在「負載平衡器類型」部分,選取「網路負載平衡器 (TCP/UDP/SSL)」,然後點選「下一步」
  4. 在「Proxy or passthrough」(直通或使用 Proxy) 部分,選取「Proxy load balancer」(Proxy 負載平衡器),然後點選「Next」(下一步)
  5. 在「公開或內部」部分,選取「公開 (外部)」,然後點選「下一步」
  6. 在「Global or single region deployment」(全域或單一區域部署) 部分,選取「Best for global workloads」(最適合全域工作負載),然後點選「Next」(下一步)
  7. 在「Load balancer generation」(負載平衡器代別) 部分,選取「Global external proxy Network Load Balancer」(全域外部 Proxy 網路負載平衡器),然後點選「Next」(下一步)
  8. 按一下 [設定]

基本設定

將「Name」(名稱) 設為 my-tcp-lb

後端設定

  1. 按一下「後端設定」
  2. 在「Backend type」(後端類型) 下方,選取「Instance groups」(執行個體群組)
  3. 在「通訊協定」下方,選取「TCP」
  4. 在「IP address selection policy」(IP 位址選擇政策) 清單中,選取「Prefer IPv6」(偏好使用 IPv6)
  5. 設定第一個後端:
    1. 在「New backend」(新增後端) 下方,選取執行個體群組 instance-group-a
    2. 保留其餘預設值。
  6. 設定第二個後端:

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

      • 在「IP 堆疊類型」中,選取 IPv4 and IPv6 (dual-stack)
    1. 點選「新增後端」
    2. 選取執行個體群組 instance-group-b
    3. 在「通訊埠編號」下方,刪除 80 並新增 110
  7. 設定健康狀態檢查:
    1. 在「Health check」(健康狀態檢查) 下方,選取 [Create health check] (建立健康狀態檢查)
    2. 將健康狀態檢查的「Name」(名稱) 設為 my-tcp-health-check
    3. 在「通訊協定」下方,選取「TCP」
    4. 將「Port」(通訊埠) 設為 110
    5. 保留其餘預設值。
    6. 按一下 [儲存並繼續]
  8. 在 Google Cloud 控制台中,確認「後端設定」旁顯示勾號。如未顯示,請重新檢查一遍,確認是否已完成所有步驟。

前端設定

  1. 按一下「前端設定」
  2. 新增第一條轉送規則:
    1. 輸入 my-tcp-lb-forwarding-rule 的「Name」(名稱)
    2. 在「通訊協定」下方,選取「TCP」
    3. 在「IP address」(IP 位址) 下方,選取「Create IP address」(建立 IP 位址)
      1. 輸入 tcp-lb-static-ip 的「Name」(名稱)
      2. 按一下「保留」
    4. 將「Port」(通訊埠) 設為 110
    5. 在本範例中,請勿啟用「Proxy 通訊協定」,因為這項通訊協定不適用於 Apache HTTP Server 軟體。詳情請參閱Proxy 通訊協定
    6. 按一下 [完成]
  3. 在 Google Cloud 控制台中,確認「Frontend configuration」(前端設定) 旁顯示勾號。如未顯示,請重新檢查一遍,確認是否已完成所有先前的步驟。

檢查並完成

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

gcloud

  1. 建立健康狀態檢查。
        gcloud compute health-checks create tcp my-tcp-health-check --port 110
        
  2. 建立後端服務。
        gcloud beta compute backend-services create my-tcp-lb \
            --load-balancing-scheme EXTERNAL_MANAGED \
            --global-health-checks \
            --global \
            --protocol TCP \
            --ip-address-selection-policy=PREFER_IPV6 \
            --health-checks my-tcp-health-check \
            --timeout 5m \
            --port-name tcp110
        

    或者,您也可以使用 --protocol SSL 設定從負載平衡器傳送至執行個體的加密通訊內容。

  3. 將執行個體群組新增至後端服務。

        gcloud beta compute backend-services add-backend my-tcp-lb \
            --global \
            --instance-group instance-group-a \
            --instance-group-zone ZONE_A \
            --balancing-mode UTILIZATION \
            --max-utilization 0.8
        
        gcloud beta compute backend-services add-backend my-tcp-lb \
            --global \
            --instance-group instance-group-b \
            --instance-group-zone ZONE_B \
            --balancing-mode UTILIZATION \
            --max-utilization 0.8
        
  4. 設定目標 TCP Proxy。如要啟用 Proxy 標頭,請將其設為 PROXY_V1 (而非 NONE)。
        gcloud beta compute target-tcp-proxies create my-tcp-lb-target-proxy \
            --backend-service my-tcp-lb \
            --proxy-header NONE
        
  5. 保留全域靜態 IPv4 和 IPv6 位址。

    您的客戶會使用這些 IP 位址來存取已平衡工作負載的服務。

        gcloud compute addresses create tcp-lb-static-ipv4 \
            --ip-version=IPV4 \
            --global
        
        gcloud compute addresses create tcp-lb-static-ipv6 \
            --ip-version=IPV6 \
            --global
        
  6. 設定兩個位址的全域轉送規則。
        gcloud beta compute forwarding-rules create my-tcp-lb-ipv4-forwarding-rule \
            --load-balancing-scheme EXTERNAL_MANAGED \
            --global \
            --target-tcp-proxy my-tcp-lb-target-proxy \
            --address tcp-lb-static-ipv4 \
            --ports 110
        

測試負載平衡器

  1. 取得負載平衡器的 IP 位址。

    如要取得 IPv4 位址,請執行下列指令:

    gcloud compute addresses describe tcp-lb-static-ipv4
    

    如要取得 IPv6 位址,請執行下列指令:

    gcloud compute addresses describe tcp-lb-static-ipv6
    
  2. 執行下列指令,將流量傳送至負載平衡器。將 LB_IP_ADDRESS 替換為負載平衡器的 IPv4 或 IPv6 位址。

    curl -m1 LB_IP_ADDRESS:110
    

    舉例來說,如果指派的 IPv6 位址為 [2001:db8:1:1:1:1:1:1/96]:110,指令應如下所示:

    curl -m1 http://[2001:db8:1:1:1:1:1:1]:110
    

如果無法連上負載平衡器,請嘗試「排解設定問題」一節所述的步驟。

額外設定選項

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

保留用戶端連線資訊的 Proxy 通訊協定

Proxy 網路負載平衡器會終止來自用戶端的 TCP 連線,並建立與執行個體的新連線。根據預設,系統不會保留原本的用戶端 IP 和通訊埠資訊。

如要保留原始連線資訊並傳送至您的執行個體,請啟用 PROXY 通訊協定版本 1。這個通訊協定會將另一個標頭 (當中包含來源 IP 位址、目的地 IP 位址和通訊埠編號) 做為要求的一部分傳送給執行個體。

請確認 Proxy 網路負載平衡器的後端執行個體正在執行支援 PROXY 通訊協定標頭的伺服器。如果伺服器未設定為支援 PROXY 通訊協定標頭,後端執行個體會傳回空白回應。

如果您為使用者流量設定了 PROXY 通訊協定,也可以為健康狀態檢查設定該通訊協定。如要在同一個通訊埠上提供流量及檢查健康狀態,請將健康狀態檢查的 --proxy-header 設為與負載平衡器設定相符。

PROXY 通訊協定標頭通常是一行使用者可以理解的文字,格式如下:

PROXY TCP4 <client IP> <load balancing IP> <source port> <dest port>\r\n

以下範例顯示 PROXY 通訊協定:

PROXY TCP4 192.0.2.1 198.51.100.1 15221 110\r\n

在上述範例中,用戶端 IP 為 192.0.2.1,負載平衡 IP 為 198.51.100.1,用戶端通訊埠為 15221,目標通訊埠則為 110

如果用戶端的 IP 位址不明,負載平衡器將會產生下列格式的 PROXY 通訊協定標頭:

PROXY UNKNOWN\r\n

更新目標 Proxy 的 Proxy 通訊協定標頭

本頁的負載平衡器設定範例說明如何建立 Proxy 網路負載平衡器時,啟用 PROXY 通訊協定標頭。如要變更現有目標 Proxy 的 Proxy 通訊協定標頭,請按照下列步驟操作。

控制台

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

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

  2. 按一下所需負載平衡器的「Edit」(編輯)
  3. 按一下「前端設定」
  4. 將「Proxy protocol」(Proxy 通訊協定) 欄位的值變更為「On」(開啟)
  5. 按一下 [Update] (更新),儲存您所做的變更。

gcloud

在下列指令中,編輯 --proxy-header 欄位,並根據需求將其設為 NONEPROXY_V1

gcloud compute target-tcp-proxies update TARGET_PROXY_NAME \
    --proxy-header=[NONE | PROXY_V1]

設定工作階段相依性

範例設定會建立沒有工作階段相依性的後端服務。

這些程序說明如何更新範例負載平衡器的後端服務,以使後端服務使用用戶端 IP 相依性或產生的 Cookie 相依性。

啟用用戶端 IP 相依性後,負載平衡器會根據從用戶端 IP 位址和負載平衡器 IP 位址 (外部轉送規則的外部 IP 位址) 建立的雜湊,將特定用戶端的要求導向至同一個後端 VM。

控制台

如何啟用用戶端 IP 工作階段相依性:

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

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

  2. 點選「後端」

  3. 按一下「my-tcp-lb」 (您為本範例建立的後端服務名稱),然後按一下「編輯」

  4. 在「後端服務詳細資料」頁面中,按一下「進階設定」

  5. 在「工作階段相依性」下方,從選單中選取「用戶端 IP」

  6. 按一下「更新」

gcloud

使用下列 Google Cloud CLI 指令更新 my-tcp-lb 後端服務,並指定用戶端 IP 工作階段相依性:

gcloud compute backend-services update my-tcp-lb \
    --global \
    --session-affinity=CLIENT_IP

API

如要設定用戶端 IP 工作階段相依性,請對 backendServices/patch 方法提出 PATCH 要求。

PATCH https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/global/us-west1/backendServices/my-tcp-lb
{
  "sessionAffinity": "CLIENT_IP"
}

啟用連線排除功能

您可以啟用後端服務的連線排除功能,確保提供流量的執行個體在停止運作、遭到手動移除或由自動配置器移除時,使用者經歷的干擾可降至最低程度。如要進一步瞭解連線排除功能,請參閱「啟用連線排除功能」說明文件。

後續步驟