App Engine 網路的最佳做法

本頁概述為 App Engine 資源設定網路選項的最佳做法。建議您詳閱本頁面的所有章節,瞭解 App Engine 支援的網路選項及其影響。

IP 管理

您必須管理 IP 位址,因為 App Engine 服務的每個執行個體都會耗用子網路中的 IP 位址。請使用下列策略管理 IP 位址:

  • 替代 IP 分配:分配標準私人範圍或替代 IP 範圍,緩解 IP 位址耗盡的問題。請參閱「IP 位址耗盡策略」。

  • 子網路大小:確認子網路的 IPv4 位址範圍為 /26 以上,提供足夠的 IP 位址來擴充。

  • 過度佈建 IP 位址:建議您過度佈建子網路中的可用 IP 位址數量,以免用盡。與其他 App Engine 服務類似,您通常應使用四倍於執行中執行個體數量的 IP 位址 (兩倍用於穩定狀態,另外兩倍用於部署期間),以利順利擴充及更新。

監控 IP 位址使用情形

如果您使用直連虛擬私有雲輸出,請確認子網路有足夠的 IP 位址。您使用的 IP 位址數量取決於工作負載執行的執行個體數量,因此建議您監控 IP 位址用量。請務必確保 IP 用量不超過子網路支援的範圍。

如要預估 IP 位址用量,請按照下列步驟操作:

  1. 前往 Google Cloud 控制台的「Metrics Explorer」頁面:

    前往「Metrics Explorer」。

  2. 使用 appengine.googleapis.com/system/instance_count 指標類型,隨手查專案中的執行個體數量。這項指標會計算專案中的所有 App Engine 執行個體。如果版本設定為直連虛擬私有雲輸出,請依 module_id 標籤 (用於識別服務) 或 version_id 標籤篩選。Cloud Monitoring 可讓您查看這項指標在一段時間內的值。

  3. 將執行個體數量指標的值乘以 2,即可估算使用中的 IP 位址數量。

IP 位址耗盡策略

如果 App Engine 工作負載數量龐大,使用 RFC 1918 私人 IP 位址空間和直連虛擬私有雲輸出時,可能會發生 IP 耗盡問題。下列策略可協助您使用替代 IP 位址範圍,管理 IP 位址耗盡的問題。

使用非 RFC 1918 IPv4 位址

除了 RFC 1918 IPv4 位址範圍外,App Engine 也支援 RFC 6598 和 E 類/RFC 5735 範圍。所有Google Cloud 服務和功能都可與這些非 RFC 1918 範圍搭配使用,包括虛擬私有雲網路、Cloud Load Balancing 和 Private Service Connect。

為確保最佳相容性,建議從 RFC 6598 (100.64.0.0/10) 範圍開始。如果您已在其他地方使用這個範圍,請考慮改用 E 類/RFC 5735 (240.0.0.0/4)。E 類是龐大的空間,有超過 2.68 億個 IP 位址可用,因此可長期支援您的成長。不過,E 類有一些限制。舉例來說,Windows 和部分地端部署硬體不支援這項功能。瞭解如何運用 E 類 IPv4 位址空間,緩解 GKE 中的 IPv4 耗盡問題。

使用 Cloud NAT 或 Private Service Connect

如果 App Engine 工作負載位於非 RFC 1918 範圍,且需要連至僅接受 RFC 1918 的地端部署目的地,請選擇下列其中一種解決方案:

使用 IPv4 和 IPv6 (雙重堆疊) 子網路

雖然這無法減少 IPv4 耗盡,但建議您將應用程式移至 IPv6。為避免日後發生 IPv4 耗盡問題,請設定雙堆疊資源。

通訊埠耗盡減少策略

下一節將說明如何減少 App Engine 的通訊埠耗盡情形。

使用連線集區並重複使用連線

從 App Engine 應用程式向單一目的地 IP 位址傳送大量要求時,請使用連線集區來維護及重複使用與目的地的連線。如果單一 IP 位址的連線率過高,可能會耗盡傳出通訊埠,並導致連線遭拒錯誤。

效能和處理量策略

本節說明可擴充的選項,用於提升網路效能和網際網路與 Google 服務的處理量。

使用支援的執行階段

只有標準第二代執行階段支援直連虛擬私有雲輸出。支援的執行階段會執行標準語言實作、支援現代程式庫整合,並提供更快速、更穩健的網路效能。

使用直連虛擬私有雲輸出,提高網路輸出處理量

如要提高網路輸出連線的處理量,請使用直連虛擬私有雲輸出功能,透過虛擬私有雲網路轉送流量。

範例 1:傳至網際網路的外部流量

如要將外部流量傳送至公開網際網路,請在 app.yaml 檔案中將 vpc_egress 欄位設為 all-traffic,透過虛擬私有雲網路轉送所有流量。採用這種做法時,您必須設定 Cloud NAT,才能連上公開網際網路。

如要為 App Engine 服務設定 Cloud NAT,請參閱「設定靜態傳出 IP 位址」。如要瞭解如何搭配使用 Cloud NAT 閘道設定與 Public NAT 或 Private NAT 的直連虛擬私有雲輸出,請參閱「Cloud NAT 直連虛擬私有雲輸出互動」。

範例 2:傳送至 Google API 的內部流量

如果您使用直連虛擬私有雲輸出功能,將流量傳送至 Cloud Storage 等 Google API,請選擇下列其中一個選項:

  • 使用Private Google Access指定 private-ranges-only (預設):
    1. 在 app.yaml 檔案中設定 vpc_egress: private-ranges-only。
    2. 啟用 Private Google Access。
    3. 設定 Private Google Access 的 DNS。確認目標網域 (例如 storage.googleapis.com) 對應至下列其中一個內部 IP 位址範圍:
      • 199.36.153.8/30
      • 199.36.153.4/30
  • 使用Private Google Access指定 all-traffic:
    1. 在 app.yaml 檔案中設定 vpc_egress: all-traffic。
    2. 啟用 Private Google Access。

使用 App Engine 的預設 MTU 設定

與 App Engine 搭配使用時,請勿變更虛擬私有雲網路的最大傳輸單位 (MTU) 設定。請改用預設 MTU (1,460 位元組)。

費用注意事項

為資源設定網路選項時,請考量下列事項:

  • 共置資源:盡可能將 App Engine 資源部署在與後端資料庫 (例如 Cloud SQL、Firestore 和 Cloud Storage bucket) 相同的區域。在同一區域內的 Google Cloud 資源之間移轉資料不收費。
  • 改用直連虛擬私有雲輸出:如果您要安全地將流量轉送至內部虛擬私有雲網路資源,建議從無伺服器 VPC 存取連接器改用直連虛擬私有雲輸出。直連虛擬私有雲輸出不會產生基準運算費用,因此可消除與連接器執行個體相關的基準運算負擔和閒置成本。
  • 使用 Cloud CDN:在 App Engine 資源前方放置 Cloud CDN,卸載靜態資產和高度可快取的內容。從邊緣提供資料的費用,遠低於直接從 App Engine 支付標準網際網路輸出費用。您無法直接在預設 appspot.com 網址上啟用 Cloud CDN。請改為透過具有無伺服器網路端點群組 (NEG) 後端的外部應用程式負載平衡器轉送要求。詳情請參閱「設定具備 App Engine 的全域外部應用程式負載平衡器」。
  • 監控網際網路輸出:傳出流量跨越區域邊界或傳送至公開網際網路時,會產生標準費用。請著重監控跨區域邊界的傳出流量。

詳情請參閱 App Engine 定價,或使用價格計算工具估算費用。

後續步驟