本頁面說明如何使用 Envoy 負載平衡器採用的僅限 Proxy 子網路。Proxy 專用子網路提供一組 IP 位址,專門保留給 Google Cloud 負載平衡器使用的 Envoy Proxy。不得用於其他用途。
Proxy 會終止傳入連線,然後根據網址對應、後端服務的工作階段相依性、各個後端執行個體群組或 NEG 的平衡模式,以及其他因素,評估每個要求的目的地。
用戶端連線至負載平衡器轉送規則的 IP 位址和通訊埠。
每個 Proxy 都會聽取對應的負載平衡器轉送規則所指定的 IP 位址和通訊埠。其中一個 Proxy 會接收並終止用戶端的網路連線。
Proxy 會根據負載平衡器的網址對應和後端服務,建立與 NEG 中適當後端 VM 或端點的連線。
系統會指派一個內部 IP 位址給每個負載平衡器的 Proxy。從 Proxy 傳送至後端 VM 或端點的封包,其來源 IP 位址來自 Proxy 專用子網路。
Proxy 專用子網路不得用於其他用途。負載平衡器轉送規則的 IP 位址並非來自僅限 Proxy 的子網路。此外,後端 VM 和端點的 IP 位址並非來自 Proxy 專用子網路。
支援的負載平衡器和產品
Envoy 型 Cloud Load Balancing 和 Secure Web Proxy 產品需要 Proxy 專用子網路:
用途為
GLOBAL_MANAGED_PROXY的僅限 Proxy 子網路:在特定虛擬私有雲網路和區域中,任何時間點都只能有一個用途為GLOBAL_MANAGED_PROXY的僅限 Proxy 子網路處於啟用狀態。啟用中的僅限 Proxy 子網路會為下列所有產品提供支援:
用途為
REGIONAL_MANAGED_PROXY的 Proxy 專用子網路:在特定虛擬私有雲網路和區域中,任何時間點只能有一個用途為REGIONAL_MANAGED_PROXY的 Proxy 專用子網路處於啟用狀態。下列產品皆由使用中的 Proxy 專用子網路提供支援:
僅限 Proxy 的子網路如何配合負載平衡器的架構
下圖顯示區域性內部應用程式負載平衡器所需的 Google Cloud 資源。
如圖所示,部署 Envoy 負載平衡器時,至少需要兩個子網路:
- 負載平衡器的後端 VM 和後端端點使用單一子網路,其主要 IP 位址範圍為
10.1.2.0/24(在本範例中)。這個子網路並非僅限 Proxy 的子網路。如果子網路與負載平衡器位於相同區域,您可以使用多個子網路,做為後端 VM 和端點。如果是內部應用程式負載平衡器,與轉送規則相關聯的負載平衡器 IP 位址也可以位於這個子網路中 (但不必位於其中)。 - Proxy 專用子網路為
10.129.0.0/23(本例)。
規劃僅限 Proxy 的子網路大小
僅限 Proxy 的子網路必須提供 64 個以上的 IP 位址。這相當於前置字元長度為 /26 或更短。建議您先使用前置字元為 /23 的僅限 Proxy 子網路 (512 個僅限 Proxy 位址),並視流量需求變更大小。
Proxy 是在虛擬私有雲層級分配,而非負載平衡器層級。在您使用 Envoy 型負載平衡器的虛擬私有雲網路中,每個區域都必須建立一個僅限 Proxy 的子網路。如果您在相同區域和虛擬私有雲網路中部署多個負載平衡器,這些負載平衡器會共用同一個僅限 Proxy 的子網路。Envoy 型負載平衡器會自動調度資源,根據您的流量需求來處理流量。
分配至負載平衡器的 Proxy 數量的計算方式,是根據預估 10 分鐘時間範圍內所需的流量處理量。我們取以下項目在此期間內較大的值:
因應流量頻寬需求而提供的 Proxy 數量。每個 Proxy 執行個體每秒可處理高達 18 MB 的流量。系統會監測所需總頻寬,並除以單一 Proxy 執行個體可支援的頻寬。
處理連線與要求所需的 Proxy 數量。系統會計算以下各項資源的總額,並除以單一 Proxy 執行個體可處理的量:
- 每秒 600 (HTTP) 或 150 (HTTPS) 個新連線
- 3,000 個有效連線
每秒 1,400 個要求
停用 Cloud Logging 時,一個 Proxy 執行個體每秒可處理 1,400 個要求。假如啟用 Logging,Proxy 執行個體每秒可處理的要求數量會減少。舉例來說,記錄 100% 的要求會使 Proxy 可處理的要求量降至每秒 700 個。您可以設定 Logging 取樣較低比例的流量。如此一來,就可以在控制成本的前提下滿足觀測能力的需求。
每增加一個 Proxy,就須額外支付每小時的費用。如要瞭解 Proxy 專用子網路的計費方式,請參閱 Cloud Load Balancing 定價說明文件中的「Proxy 執行個體費用」一節。
Envoy 型負載平衡器和 Secure Web Proxy Envoy Proxy
在同一個 VPC 中設定 Envoy 型負載平衡器和 Secure Web Proxy 時,請務必注意下列事項:
Envoy 型負載平衡器和 Secure Web Proxy 都會使用相同 Proxy 專用子網路的 IP 位址。
為滿足這兩項服務的 IP 位址需求,建議使用較大的 Proxy 專用子網路,例如
/22子網路。這有助於確保兩種設定都有足夠的位址空間。建議您監控 Proxy 容量,追蹤 IP 位址用量。這有助於避免 Proxy 專用子網路耗盡,進而導致服務中斷。
建立 Proxy 專用子網路
視負載平衡器和後端需求而定,您可以將僅限 Proxy 的子網路建立為單一堆疊 (IPV4_ONLY) 或雙重堆疊 (IPV4_IPV6)。
IPV4_ONLY:如果負載平衡器需要終止 IPv4 流量,您必須使用單一堆疊的僅限 Proxy 子網路。IPV4_IPV6:如果負載平衡器需要終止 IPv4 或 IPv6 流量,您必須使用雙堆疊的僅限 Proxy 子網路。如要支援 IPv6 轉送規則,僅限 Proxy 子網路必須為雙重堆疊。
無論網路是自動模式還是自訂模式,您都必須為 Envoy 型負載平衡器建立僅限 Proxy 的子網路。建立僅限 Proxy 的子網路,基本上與建立任何子網路的程序相同,只是需要額外加上一些旗標。
如果是僅限 Proxy 的子網路,--purpose 必須設為 REGIONAL_MANAGED_PROXY 或 GLOBAL_MANAGED_PROXY,視負載平衡器而定。
您無法將現有子網路重複用做僅限 Proxy 子網路,必須在每個具有 Envoy 型負載平衡器的區域中建立新的子網路。部分原因是 subnets update 指令不允許修改子網路的 --purpose 欄位。
您必須先建立 Proxy 專用子網路,供負載平衡器的 Proxy 使用,才能為區域性負載平衡器建立轉送規則。如果嘗試設定負載平衡器,但未先為區域建立 Proxy 專用子網路,負載平衡器建立程序就會失敗。
建立 IPV4-ONLY Proxy 專用子網路
如要設定 IPV4-ONLY 僅限 Proxy 的子網路,請按照下列步驟操作:
控制台
- 前往 Google Cloud 控制台的「VPC Networks」(虛擬私有雲網路) 頁面。
前往「VPC networks」(虛擬私有雲網路) 頁面 - 按一下要新增僅限 Proxy 子網路的共用虛擬私有雲網路名稱。
- 按一下 [新增子網路]。
- 輸入名稱。
- 選取「區域」。
- 將「Purpose」(用途) 設為下列其中一項:
- 區域性負載平衡器:區域性代管 Proxy
- 跨區域負載平衡器:跨區域代管 Proxy
- 輸入「IP address range」(IP 位址範圍)。
- 按一下「新增」。
gcloud
gcloud compute networks subnets create 指令會建立僅限 Proxy 的子網路。
gcloud compute networks subnets create SUBNET_NAME \
--purpose=SUBNET_PURPOSE \
--role=ACTIVE \
--region=REGION \
--network=VPC_NETWORK_NAME \
--range=CIDR_RANGE
更改下列內容:
建立雙協定 Proxy 專用子網路
對於區域性內部、區域性外部和跨區域應用程式負載平衡器,以及 Proxy 網路負載平衡器,您可以設定 Proxy 專用子網路,支援雙堆疊 (IPv4 和 IPv6) 流量。
建立具有雙協定子網路的自訂模式虛擬私有雲網路。請務必確認以下幾點:
- 虛擬私有雲網路必須使用自訂子網路模式
--subnet-mode custom。 - 您必須使用
--enable-ula-internal-ipv6旗標,在網路上啟用內部 IPv6。
- 虛擬私有雲網路必須使用自訂子網路模式
建立雙堆疊 Proxy 專用子網路:
gcloud compute networks subnets create NEW_PROXY_ONLY_SUBNET_NAME \ --purpose=SUBNET_PURPOSE \ --role=ACTIVE \ --region=REGION \ --network=VPC_NETWORK_NAME \ --range=NEW_PROXY_ONLY_SUBNET_RANGE \ --stack-type=IPV4_IPV6
更改下列內容:
NEW_PROXY_ONLY_SUBNET_NAME:僅限 Proxy 子網路的名稱。SUBNET_PURPOSE:子網路的用途。請依據負載平衡器,將此值設為REGIONAL_MANAGED_PROXY或GLOBAL_MANAGED_PROXY。REGION:僅限 Proxy 的子網路區域。VPC_NETWORK_NAME:包含子網路的虛擬私有雲網路名稱。NEW_PROXY_ONLY_SUBNET_RANGE:子網路的主要 IPv4 位址範圍,採用 CIDR 標記法。例如,10.1.2.0/24。您無法指定 IPv6 位址範圍,系統會自動從網路的 ULA (唯一本機位址) 範圍分配。
設定後端防火牆規則
如需完整的設定範例,請參閱「設定僅限 Proxy 的子網路」。
您必須為後端配置防火牆規則,以接受來自僅限 Proxy 子網路的連線。如需完整的設定範例 (包括防火牆規則設定),請參閱下列內容:
- 設定區域性外部應用程式負載平衡器
- 設定區域性內部應用程式負載平衡器
- 設定區域性內部 Proxy 網路負載平衡器
- 設定區域性外部 Proxy 網路負載平衡器
- 設定跨區域內部應用程式負載平衡器
- 設定跨區域內部 Proxy 網路負載平衡器
Proxy 可用性
有時 Google Cloud 區域沒有足夠的 Proxy 容量,無法建立新的負載平衡器。如果發生這種情況,建立負載平衡器時, Google Cloud 控制台會顯示 Proxy 可用性警告訊息。如要解決這個問題,請採取下列任一做法:
- 請為負載平衡器選取其他區域。如果後端位於其他區域,這會是實用的選項。
- 選取已分配 Proxy 專用子網路的虛擬私有雲網路。
- 等待容量問題解決。
變更 Proxy 專用子網路的大小或位址範圍
當負載平衡器處理的流量增加時,您可能需要擴大僅限 Proxy 子網路的大小,以便讓更多 Envoy Proxy 為負載平衡器提供支援。
您無法像擴充一般子網路的主要 IPv4 位址範圍一樣,使用 expand-ip-range 指令擴充僅限 Proxy 子網路的主要 IPv4 位址範圍。您必須改用新的 Proxy 專用子網路。換貨流程如下:
在與現有 (原始) Proxy 專用子網路相同的區域和虛擬私有雲網路中,建立新的 Proxy 專用子網路。建立這個新的僅限 Proxy 子網路時,請將
role設為BACKUP。(就每個僅限 Proxy 子網路用途而言, Google Cloud 允許在特定區域和虛擬私有雲網路中,存在一個ACTIVE和一個BACKUP僅限 Proxy 子網路)。調整適用於後端的輸入允許防火牆規則,允許來自原始和新 Proxy 專用子網路主要 IPv4 位址範圍的連線。
將新僅限 Proxy 子網路的角色設為
ACTIVE,並指定排除期,讓後端與原始僅限 Proxy 子網路中的 Envoy Proxy 之間的連線終止。(當您將新僅限 Proxy 子網路的角色設為ACTIVE時,Google Cloud 會自動將原始僅限 Proxy 子網路的角色設為BACKUP。)監控原始僅限 Proxy 子網路的狀態 (如要進一步瞭解監控,請參閱 gcloud 分頁)。如果子網路的角色為
BACKUP,且狀態為READY,表示子網路已不再使用。此時,您可以調整允許輸入的防火牆規則,只允許來自新僅限 Proxy 子網路主要 IPv4 位址範圍的連線,並刪除原始的僅限 Proxy 子網路。
控制台
在相同區域和虛擬私有雲網路中建立新的 Proxy 專用子網路,並指定符合需求的主要 IPv4 位址範圍。將新 Proxy 專用子網路的角色設為備份。
- 前往 Google Cloud 控制台的「VPC Networks」(虛擬私有雲網路) 頁面。
前往「VPC networks」(虛擬私有雲網路) 頁面 - 按一下要新增僅限 Proxy 子網路的共用虛擬私有雲網路名稱。
- 按一下 [新增子網路]。
- 輸入名稱。
- 選取「Region」(區域)。
- 將「用途」設為下列其中一項:
- 區域負載平衡器:區域受管理 Proxy
- 跨區域負載平衡器:跨區域代管 Proxy
- 在「角色」部分,選取「備份」。
- 輸入「IP address range」(IP 位址範圍)。
- 按一下「新增」。
- 前往 Google Cloud 控制台的「VPC Networks」(虛擬私有雲網路) 頁面。
更新適用於後端 VM 或端點的輸入允許防火牆規則,納入原始和新僅限 Proxy 子網路的兩者主要 IPv4 位址範圍。
將新僅限 Proxy 子網路的角色設為「active」,並指定排除逾時時間,讓後端與原始僅限 Proxy 子網路之間的連線終止。當您將新僅限 Proxy 子網路的角色設為「active」時, Google Cloud 會自動將原始僅限 Proxy 子網路的角色設為「backup」。
- 前往 Google Cloud 控制台的「VPC Networks」(虛擬私有雲網路) 頁面。
前往「VPC networks」(VPC 網路) 頁面 - 按一下要修改的共用 VPC 網路名稱。
- 在「為負載平衡預留的僅限 Proxy 子網路」下方,找出上一步建立的備用子網路。
- 點按「Activate」(啟用)。
- 視需要指定「Drain timeout」(排空逾時)。
- 按一下「啟用子網路」。
- 前往 Google Cloud 控制台的「VPC Networks」(虛擬私有雲網路) 頁面。
連線排除逾時後,或確定連線至後端 VM 或端點的連線並非來自原始僅限 Proxy 子網路中的 Proxy 時,您可以執行下列操作:
- 更新適用於後端 VM 或端點的輸入允許防火牆規則,使其僅包含新 Proxy 專用子網路的主要 IPv4 位址範圍。
- 刪除原始 Proxy 專用子網路。
gcloud
下列步驟說明如何將現有的 Proxy 專用子網路,替換為新的 Proxy 專用子網路。在下列所有步驟中:
ORIGINAL_PROXY_ONLY_SUBNET_NAME:現有 Proxy 專用子網路的名稱ORIGINAL_PROXY_ONLY_SUBNET_RANGE:現有僅限 Proxy 子網路的主要 IPv4 位址範圍,格式為 CIDR。這是您先前選擇的位址範圍。NEW_PROXY_ONLY_SUBNET_NAME:新 Proxy 專用子網路的名稱NEW_PROXY_ONLY_SUBNET_RANGE:新建立的僅限 Proxy 子網路的主要 IPv4 位址範圍,格式為 CIDR。選擇符合需求的 IPv4 位址範圍。PROXY_ONLY_SUBNET_FIREWALL_RULE:輸入允許虛擬私有雲防火牆規則的名稱,該規則允許來自僅限 Proxy 子網路的連線REGION:包含原始和新 Proxy 專用子網路的區域VPC_NETWORK_NAME:包含原始和新版僅限 Proxy 子網路的虛擬私有雲網路名稱
使用 gcloud compute networks subnets create 指令搭配
--role=BACKUP旗標,在相同區域和虛擬私有雲網路中建立新的僅限 Proxy 子網路。gcloud compute networks subnets create NEW_PROXY_ONLY_SUBNET_NAME \ --purpose=SUBNET_PURPOSE \ --role=BACKUP \ --region=REGION \ --network=VPC_NETWORK_NAME \ --range=NEW_PROXY_ONLY_SUBNET_RANGE
更改下列內容:
SUBNET_PURPOSE:REGIONAL_MANAGED_PROXY或GLOBAL_MANAGED_PROXY,取決於需要使用 Proxy 專用子網路的負載平衡器。詳情請參閱「支援的負載平衡器」。
更新適用於後端 VM 或端點的輸入允許防火牆規則,納入原始和新僅限 Proxy 子網路的兩者主要 IPv4 位址範圍。
gcloud compute firewall-rules update PROXY_ONLY_SUBNET_FIREWALL_RULE \ --source-ranges=ORIGINAL_PROXY_ONLY_SUBNET_RANGE,NEW_PROXY_ONLY_SUBNET_RANGE
將新僅限 Proxy 子網路的角色設為
ACTIVE,並指定排除逾時 (--drain-timeout),允許後端與原始僅限 Proxy 子網路之間的連線終止。當您將新僅限 Proxy 子網路的角色設為ACTIVE時,Google Cloud 會自動將原始僅限 Proxy 子網路的角色設為BACKUP。如要立即中斷後端與原始僅限 Proxy 子網路中 Envoy Proxy 之間的連線,請將
--drain-timeout設為0s。gcloud compute networks subnets update NEW_PROXY_ONLY_SUBNET_NAME \ --region=REGION \ --role=ACTIVE \ --drain-timeout=CONNECTION_DRAINING_TIMEOUT
更改下列內容:
CONNECTION_DRAINING_TIMEOUT:後端與原始僅限 Proxy 子網路中 Envoy Proxy 之間的現有連線,在終止前可持續的時間 (以秒為單位)。
使用 gcloud compute networks subnets describe 指令,監控原始僅限 Proxy 子網路的狀態。
gcloud compute networks subnets describe ORIGINAL_PROXY_ONLY_SUBNET_NAME \ --region=REGION
等待排空除完成。在排除期間,原始僅限 Proxy 子網路的狀態為
DRAINING。您可能需要執行describe指令幾次,原始僅限 Proxy 子網路的狀態才會變更為READY。原始僅限 Proxy 子網路
READY並具備BACKUP角色後,系統就不會再使用該子網路。更新適用於後端 VM 或端點的輸入允許防火牆規則,使其僅包含新 Proxy 專用子網路的主要 IPv4 位址範圍。gcloud compute firewall-rules update PROXY_ONLY_SUBNET_FIREWALL_RULE \ --source-ranges=NEW_PROXY_ONLY_SUBNET_RANGE
刪除原始的 Proxy 專用子網路。
gcloud compute networks subnets delete ORIGINAL_PROXY_ONLY_SUBNET_NAME \ --region=REGION
遷移 Proxy 專用子網路的用途
如果您先前使用 --purpose=INTERNAL_HTTPS_LOAD_BALANCER 建立了僅限 Proxy 的子網路,則必須先將子網路的用途遷移至 REGIONAL_MANAGED_PROXY,才能在虛擬私有雲網路的相同區域中建立其他 Envoy 型負載平衡器。
控制台
如果您使用 Google Cloud 控制台建立負載平衡器,系統會在建立負載平衡器時,提示您將先前建立的僅限 Proxy 子網路用途從 --purpose=INTERNAL_HTTPS_LOAD_BALANCER 遷移至 REGIONAL_MANAGED_PROXY。
gcloud
如要將現有 Proxy 專用子網路的用途從 --purpose=INTERNAL_HTTPS_LOAD_BALANCER 變更為 REGIONAL_MANAGED_PROXY,請使用下列指令:
gcloud compute networks subnets update PROXY_ONLY_SUBNET \
--purpose=REGIONAL_MANAGED_PROXY \
--region=REGION
將 Proxy 專用子網路的用途從 --purpose=INTERNAL_HTTPS_LOAD_BALANCER 遷移至 REGIONAL_MANAGED_PROXY 不會造成任何停機時間。這項變更幾乎會立即生效。
刪除 Proxy 專用子網路
刪除 Proxy 專用子網路會釋出主要 IP 位址範圍,因此您可以將該範圍用於其他用途。收到刪除 Proxy 專用子網路的要求時, Google Cloud 會強制執行下列規則:
如果相同區域和虛擬私有雲網路中至少有一個區域負載平衡器,就無法刪除有效的 Proxy 專用子網路。
如果相同區域和虛擬私有雲網路中有備份的僅限 Proxy 子網路,則無法刪除有效的僅限 Proxy 子網路。
如果嘗試在刪除備份前刪除使用中的僅限 Proxy 子網路,系統會顯示下列錯誤訊息:「Invalid resource usage: Cannot delete ACTIVE subnetwork because a BACKUP subnetwork exists.」(資源用量無效:備份子網路存在,因此無法刪除使用中的子網路。)
實務上,這些規則有以下效果:
如果特定區域和虛擬私有雲網路中未定義任何區域負載平衡器,您可以刪除該區域中僅限 Proxy 的子網路。如果有備份的僅限 Proxy 子網路,您必須先刪除這個子網路,才能刪除活動的僅限 Proxy 子網路。
如果在特定區域和虛擬私有雲網路中,至少定義了一個區域性負載平衡器,就無法刪除使用中的僅限 Proxy 子網路。不過,您可以將備份僅限 Proxy 子網路升級為使用中角色,這樣一來,先前使用中的僅限 Proxy 子網路就會自動降級為備份角色。排除連線後,您可以刪除備份 (之前處於活動狀態) 的僅限 Proxy 子網路。
詳情請參閱虛擬私有雲網路說明文件中的「刪除子網路」。
限制
下列限制適用於僅限 Proxy 的子網路:
您無法為任何負載平衡器建立堆疊類型為
IPV6_ONLY的 Proxy 專用子網路。如果是區域性外部負載平衡器,Proxy 專用子網路的堆疊類型可以是IPV4_ONLY或IPV4_IPV6(雙堆疊),以支援 IPv6 流量。不過,如果是區域性內部和跨區域內部負載平衡器,則必須使用堆疊類型IPV4_IPV6。您無法在同一個網路和區域中同時擁有
INTERNAL_HTTPS_LOAD_BALANCER和REGIONAL_MANAGED_PROXY子網路,就像您無法同時擁有兩個REGIONAL_MANAGED_PROXYProxy 或兩個INTERNAL_HTTPS_LOAD_BALANCERProxy 一樣。在每個虛擬私有雲網路的每個區域中,您只能建立一個有效的 Proxy 專用子網路和一個備份子網路。
您必須先在該區域和網路中建立使用中的僅限 Proxy 子網路,才能建立備份。
只要更新子網路,即可將僅限 Proxy 的子網路角色從備份變更為活動。 Google Cloud 會自動將先前啟用的僅限 Proxy 子網路變更為備份。您無法透過更新,明確將僅限 Proxy 的子網路角色設為備份。
在僅限 Proxy 子網路的連線排除期間 (
--drain-timeout),您無法將僅限 Proxy 子網路的角色從備份變更為啟用。僅限 Proxy 的子網路不支援虛擬私有雲流量記錄。
後續步驟
- 設定具備 VM 執行個體群組後端的區域外部應用程式負載平衡器
- 在 Shared VPC 環境中設定區域性外部應用程式負載平衡器
- 設定具備 VM 執行個體群組後端的區域性內部應用程式負載平衡器
- 在 Shared VPC 環境中,設定區域性內部應用程式負載平衡器或跨區域內部應用程式負載平衡器
- 設定具有 VM 執行個體群組後端的區域性內部 Proxy 網路負載平衡器
- 設定具有 VM 執行個體群組後端的區域外部 Proxy 網路負載平衡器
- 設定具有 VM 執行個體群組後端的跨區域內部 Proxy 網路負載平衡器