內部 HTTP(S) 負載平衡器適用的僅限 Proxy 子網路

本頁說明如何使用內部 HTTP(S) 負載平衡適用的子網路 (僅限 Proxy)。如需內部 HTTP{S} 負載平衡的概要簡介,請參閱內部 HTTP(S) 負載平衡概念

內部 HTTP(S) 負載平衡器為您的網路提供了多種 Proxy 選擇。Proxy 會根據 URL 對應、後端服務的工作階段相依性,每個後端執行個體群組或 NEG 的平衡模式,以及其他因素,來評估每個 HTTP(S) 要求應到達的位置。

  1. 用戶端連線至負載平衡器轉送規則的 IP 位址和通訊埠。

  2. 其中一個 Proxy 接收並終止用戶端的網路連線。

  3. Proxy 會根據負載平衡器的網址對應和後端服務,建立與 NEG 中適當後端 VM 或端點的連線。

系統會指派一個內部 IP 位址給每個負載平衡器的 Proxy。地區內所有內部 HTTP(S) 負載平衡器的 Proxy 都會使用您的虛擬私人雲端網路中該地區的單一 Proxy 專用子網路內部 IP 位址。該子網路專為內部 HTTP(S) 負載平衡 Proxy 保留,不能用於其他目的。僅限 Proxy 的子網路必須提供 64 個以上的 IP 位址。對應的前置字元長度為 /26 或以下。每個地區和每個 VPC 網路只能啟用一個僅限 Proxy 的子網路。

只有 GCP 為地區的內部 HTTP(S) 負載平衡器建立的 Proxy 會使用僅限 Proxy 的子網路。負載平衡器轉送規則的 IP 位址並非來自僅限 Proxy 的子網路。此外,後端 VM 和端點的 IP 地址也不是來自僅限 Proxy 的子網路。

每個 Proxy 都會聽取對應的負載平衡器轉送規則所指定的 IP 位址和通訊埠。從 Proxy 傳送到後端 VM 或端點的每個封包都有一個來自僅限 Proxy 的子網路的來源 IP 位址。

下圖提供流量的概略視圖。

採用第 7 層負載平衡的內部服務 (按一下可放大)
採用第 7 層負載平衡的內部服務 (按一下可放大)

僅限 Proxy 的子網路如何配合負載平衡器的架構

下圖顯示 HTTP(S) 內部負載平衡器所需的 GCP 資源。

內部 HTTP(S) 負載平衡元件 (按一下可放大)
內部 HTTP(S) 負載平衡元件 (按一下可放大)

如圖所示,內部 HTTP(S) 負載平衡器部署需要至少兩個子網路:

  • 負載平衡器的內部託管轉送規則以及後端 VM 和後端端點的 IP 地址使用一個子網路,其主要 IP 地址範圍為 10.1.2.0/24。這個子網路不是僅限 Proxy 的子網路。如果子網路與負載平衡器位於相同的地區,您可以為後端 VM 和端點使用多個子網路。

  • 僅限 Proxy 子網路 10.129.0.0/26

建立僅限 Proxy 的子網路

保留 HTTP (S) 負載平衡器的子網路與建立任何子網路的程序基本上是相同的,但新增了一些標記。

在建立內部 HTTP(S) 負載平衡器的轉送規則之前,您必須建立僅限 Proxy 的子網路供負載平衡器的 Proxy 使用。如果您嘗試設定內部 HTTP(S) 負載平衡器,但沒有先為該地區建立僅限 Proxy 的子網路,負載平衡器建立程序就會失敗。

您必須在使用內部 HTTP(S) 負載平衡器的虛擬網路 (VPC) 的每個地區,建立一個僅限 Proxy 的子網路。這個子網路由該地區內的所有內部 HTTP(S) 負載平衡器共用。

無論網路是自動模式還是自訂,都必須建立僅限 Proxy 的子網路。建議的子網路大小為 /24 (256 個僅限 Proxy 的位址)。它必須至少為 /26 (64 個僅限 Proxy 的位址)。

gcloud compute networks subnets create 指令會建立僅限 Proxy 的子網路。

gcloud beta compute networks subnets create SUBNET_NAME \
    --purpose=INTERNAL_HTTPS_LOAD_BALANCER \
    --role=ACTIVE \
    --region=REGION \
    --network=VPC_NETWORK_NAME \
    --range=CIDR_RANGE

其中:

  • SUBNET_NAME 是僅限 Proxy 子網路的名稱
  • REGION 是僅限 Proxy 子網路的地區
  • VPC_NETWORK_NAME 是包含子網路的虛擬私人雲端網路名稱
  • CIDR_RANGE 是子網路的主要 IP 範圍。您必須使用長度不超過 26 的子網路遮罩,使該地區的 Proxy 至少有 64 個 IP 位址可用。

如需完整的設定範例,請參閱建立僅限 Proxy 的子網路

如果您使用的是 GCP Console,可以在負載平衡使用者介面中建立僅限 Proxy 的子網路,如下列章節所述:

您必須為後端配置防火牆規則,以接受來自僅限 Proxy 子網路的連線。請參閱設定防火牆規則l7-ilb-firewall 設定。

變更僅限 Proxy 子網路的大小或位址範圍

由於每個地區和每個虛擬私人雲端網路只能使用一個僅限 Proxy 的子網路,而且您只能擴展子網路的主要 IP 範圍,因此您必須使用以下程序來修改僅限 Proxy 的子網路:

  1. 使用 gcloud compute networks subnets create 指令,在相同區域中建立「備份」 僅限 Proxy 子網路,並指定符合您需求的主要 IP 範圍。

    gcloud beta compute networks subnets create subnet-name \
       --purpose=INTERNAL_HTTPS_LOAD_BALANCER \
       --role=BACKUP \
       --region=region \
       --network=vpc-network-name \
       --range=cidr-range
    
  2. 建立或修改適用於您的後端 VM 或端點的防火牆允許輸入規則,以包括備份僅限 Proxy 子網路的主要 IP 範圍。

  3. 以下 gcloud 指令將備份的僅限 Proxy 子網路升級為活動角色,並將先前活動的僅限 Proxy 子網路降級為備份角色:

    gcloud beta compute networks subnets update backup-proxy-subnet \
       --role=ACTIVE \
       --drainTimeoutSeconds=connection-draining-timeout<\var>
    

    將預留位置替換為有效值:

    • <var>backup-proxy-subnet</var> 是新建立的僅限 Proxy 子網路的名稱。
    • <var>connection-draining-timeout<\var> 是 GCP 用來從先前活動的僅限 Proxy 子網路中,移去 Proxy 現有連線的時間 (以秒為單位)。

    將僅限 Proxy 的子網從備份切換到活動,不會中斷新連線:

    • 新啟用的僅限 Proxy 子網路會用於新連線。
    • 之前活動的僅限 Proxy 子網路 (現為備份) 不再用於新連線。
    • GCP 會開始從先前活動 (現為備份) 的僅限 Proxy 子網路中,開始排除 Proxy 的現有連線。
  4. 在排除連線逾時之後,或者您確認與後端 VM 或端點的連線都不是來自先前處於活動狀態 (現為備份) 的僅限 Proxy 子網路中的 Proxy 之後,可以執行以下操作:

    • 修改適用於後端 VM 或端點的防火牆允許輸入規則,如此便不會包含之前活動 (現為備份) 的僅限 Proxy 子網路的主要 IP 範圍。
    • 刪除先前活動 (現為備份) 的僅限 Proxy 子網路,以釋放該子網路用於其主要 IP 位址範圍的 IP 位址。

需求條件和限制

下列限制適用於僅限 Proxy 的子網路:

  • 每個虛擬私人雲端網路中的每個地區只能建立一個活動的和一個備份的僅限 Proxy 子網路。

  • 除非您已在該地區和網路中建立了活動的僅限 Proxy 的子網路,否則無法建立備用的僅限 Proxy 子網路。

  • 只要更新子網路,即可將僅限 Proxy 的子網路角色從備份變更為活動。當您執行這項操作時,GCP 會自動將先前活動的僅限 Proxy 的子網路變更為備份。您無法藉由更新的方式,明確地將僅限 Proxy 的子網路設定成備份。

  • 在排除僅限 Proxy 的子網路連線期間 (drainTimeoutSeconds),您不能將僅限 Proxy 的子網路從備份更改為活動。

  • 在特定地區和虛擬私人雲端網路中建立第一個內部 HTTP(S) 負載平衡器之前,您必須已在該地區和網路中設定活動的僅限 Proxy 子網路。

  • GCP 不會提出僅限 Proxy 子網路的 IP 位址用盡的警告。

範例

  1. 建立地區專屬的僅限 Proxy 子網路備份。

    gcloud beta compute networks subnets create new-l7ibackend-subnet-us-west1 \
       --purpose INTERNAL_HTTPS_LOAD_BALANCER \
       --role BACKUP \
       --region us-west1 \
       --network default \
       --addresses 10.130.0.0/26
    
  2. 更新後端防火牆,以接受來自新子網路的連線。

    gcloud compute firewall-rules update l7-ilb-firewall \
       --source-ranges 10.129.0.0/26,10.130.0.0/26
    
  3. 更新新的子網路,將其設定為該地區中「活動的」僅限 Proxy 子網路,並等待系統排除舊的子網路。

    gcloud beta compute networks subnets update new-l7ilb-ip-range-us-west1 \
       --drain-timeout 1h --role ACTIVE
    

    如要立即排除 IP 位址範圍,請將 --drain-timeout 設定為 0s。若 Proxy 在要排除的子網路裡有指派的位址,這會馬上停止所有連到這些 Proxy 的連線。

  4. 使用 listdescribe 指令監控排除狀態。正在排除子網路時,其狀態為 DRAINING。

    gcloud beta compute networks subnets list
    

    等待排空除完成。當已排除舊的僅限 Proxy 子網路時,該子網路的狀態為 READY。

  5. 將後端防火牆規則更新成僅允許來自新子網路的連線。

    gcloud compute firewall-rules update l7-ilb-firewall \
       --source-ranges 10.130.0.0/26
    
  6. 刪除舊的子網路。

    gcloud beta compute networks subnets delete l7ilb-ip-range-us-west1 \
       --region us-west1
    

刪除僅限 Proxy 的子網路

刪除僅限 Proxy 的子網路會釋出其主要 IP 範圍,以便您將該範圍用於其他用途。當 GCP 收到刪除僅限 Proxy 子網路的要求時,便會強制執行下列規則:

  • 如果同一地區和虛擬私人雲端網路中至少有一個內部 HTTP(S) 負載平衡器,則無法刪除活動的僅限 Proxy 子網路。

  • 如果同一地區和虛擬私人雲端網路中存在備份的僅限 Proxy 子網路,則無法刪除活動的僅限 Proxy 子網路。

實務上,這些規則有以下效果:

  • 如果在某個地區和虛擬私人雲端網路中沒有定義內部 HTTP(S) 負載平衡器,您可以刪除該地區中的僅限 Proxy 子網路。如果有備份的僅限 Proxy 子網路,您必須先刪除這個子網路,才能刪除活動的僅限 Proxy 子網路。

  • 如果在某個地區和虛擬私人雲端網路中定義了一個以上的內部 HTTP(S) 負載平衡器,則不能刪除活動的僅限 Proxy 子網路;但是您可以將備份的僅限 Proxy 子網路升級為活動角色,這會將先前活動的僅限 Proxy 子網路自動降級為備份角色。排除連線後,您可以刪除備份 (之前處於活動狀態) 的僅限 Proxy 子網路。

如需詳細資訊,請參閱虛擬私人雲端網路說明文件中的刪除子網路

後續步驟

本頁內容對您是否有任何幫助?請提供意見:

傳送您對下列選項的寶貴意見...

這個網頁
Load Balancing