設定 TCP 流量轉送
本指南說明如何使用 Cloud Service Mesh 將流量轉送至處理 TCP 流量的服務。這些服務包括資料庫、VOIP 服務和管理平台,這些服務預期會在特定通訊埠或通訊埠範圍接收 TCP 流量。
本指南適用於使用舊版 API 進行部署。如果您使用新的服務路由 API (預先發布版),請參閱使用 TCPRoute
資源設定 TCP 服務的 Cloud Service Mesh。
這份指南可協助您:
- 設定服務,代表接受用戶端 TCP 要求的相同後端或端點集合。
- 設定轉送規則對應,讓 Cloud Service Mesh 設定的 Envoy Proxy 可以傳送 TCP 要求。
下圖分別顯示虛擬機器 (VM) 執行個體和網路端點群組 (NEG) 的 TCP 路由運作方式。
準備
- 本指南以服務網格適用的 Envoy 準備指南為基礎,並假設您已瞭解 Cloud Service Mesh 的運作方式。
- 本指南著重於設定 Cloud Service Mesh 時,與設定服務和 TCP 流量轉送路徑不同的部分。
- 本指南假設您已設定代管執行個體群組 (MIG) 或 NEG。
設定負載平衡資源
請按照下列步驟設定負載平衡資源。
建立 TCP 健康狀態檢查
使用 VM 設定
如果您要設定 MIG,請使用下列指令建立全域健康狀態檢查,並將 PORT
替換為這項健康狀態檢查監控的 TCP 通訊埠編號:
gcloud compute health-checks create tcp td-vm-health-check \ --global \ --port=PORT
使用網路端點群組 (NEG) 設定
如果您要設定 NEG,請使用下列指令建立健康狀態檢查:
gcloud compute health-checks create tcp td-gke-health-check \ --use-serving-port
如要進一步瞭解健康狀態檢查,請參閱下列文章:
- Cloud Load Balancing 說明文件中的「建立健康狀態檢查」
gcloud compute health-checks create tcp
位於gcloud
指令參考資料中
建立健康狀態檢查的防火牆規則
這項規則可讓 Google Cloud的健康狀態檢查工具連線至後端。
gcloud
gcloud compute firewall-rules create fw-allow-health-checks \ --action=ALLOW \ --direction=INGRESS \ --source-ranges=35.191.0.0/16,130.211.0.0/22 \ --target-tags=TAGS \ --rules=tcp:80
如要進一步瞭解健康狀態檢查的防火牆規則,請參閱下列文章:
- Cloud Load Balancing 說明文件中的健康狀態檢查防火牆規則
gcloud compute firewall-rules create
在gcloud
指令參考資料中 (包括TAGS
的指南)
為 TCP 後端建立後端服務
使用 Cloud Service Mesh 設定 TCP 的後端服務時,與設定 HTTP 的方式略有不同。下列步驟會擷取這些差異。
使用 VM 設定
如果您要設定 MIG,請使用下列指令建立後端服務並新增健康狀態檢查:
gcloud compute backend-services create td-vm-service \ --global \ --load-balancing-scheme=INTERNAL_SELF_MANAGED \ --health-checks=td-vm-health-check \ --protocol=TCP \ --global-health-checks
設定後端服務的最後一個步驟是新增後端。 由於這是標準的 Cloud Service Mesh 設定步驟 (換句話說,與 TCP 型服務無關),因此這裡不會顯示。詳情請參閱 Compute Engine VM 設定指南,瞭解如何使用自動 Envoy 部署功能建立後端服務。
使用網路端點群組 (NEG) 設定
如果您要設定 NEG,請使用下列指令建立後端服務,並將健康狀態檢查與後端服務建立關聯:
gcloud compute backend-services create td-gke-service \ --global \ --health-checks=td-gke-health-check \ --protocol=TCP \ --load-balancing-scheme=INTERNAL_SELF_MANAGED
設定後端服務的最後一個步驟是新增後端群組。由於這是標準的 Cloud Service Mesh 設定步驟 (換句話說,與 TCP 型服務無關),因此這裡不會顯示。詳情請參閱「建立後端服務」一文,瞭解如何設定 GKE Pod 並自動注入 Envoy。
為以 TCP 為基礎的後端服務設定路由
在本節中,您將建立通用目標 TCP proxy 和通用轉送規則。這些資源可讓應用程式將流量傳送至新建立後端服務的後端。
請考量下列事項:
- 轉送規則必須採用
INTERNAL_SELF_MANAGED
負載平衡機制。 您在轉送規則中設定的虛擬 IP 位址 (VIP) 和通訊埠,就是應用程式將流量傳送至 TCP 服務時使用的 VIP 和通訊埠。您可以從任一子網路選擇 VIP。 Cloud Service Mesh 會使用這個 VIP 和通訊埠,將用戶端要求與特定後端服務相符。
如要瞭解用戶端要求如何與後端服務相符,請參閱服務探索。
gcloud
使用下列指令建立目標 TCP Proxy,並將
BACKEND_SERVICE
替換為在上一個步驟中建立的後端服務名稱。在下列範例中,我們使用td-tcp-proxy
做為目標 TCP Proxy 的名稱,但您可以選擇符合需求的名稱。gcloud compute target-tcp-proxies create td-tcp-proxy \ --backend-service=BACKEND_SERVICE
建立轉送規則。轉送規則會指定 VIP 和通訊埠,用於將用戶端要求與特定後端服務相符。詳情請參閱
gcloud
指令參考資料中的gcloud compute forwarding-rules create
。gcloud compute forwarding-rules create td-tcp-forwarding-rule \ --global \ --load-balancing-scheme=INTERNAL_SELF_MANAGED \ --address=VIP\ --target-tcp-proxy=td-tcp-proxy \ --ports=PORT \ --network=default
此時,Cloud Service Mesh 已設定為後端間轉寄規矩所指定的 VIP 進行負載平衡。
限制
如果您使用 TCP 流量轉送,就無法設定 Google Cloud Armor 安全性政策。
疑難排解
如果應用程式嘗試將要求傳送至以 TCP 為基礎的服務,請執行下列操作:
- 確認 TCP 健康狀態檢查通訊埠與 TCP 應用程式預期接收健康狀態檢查流量的通訊埠相符。
- 確認後端服務的通訊埠名稱與執行個體群組中指定的名稱相符。