設定 TCP 流量轉送
本指南說明如何使用 Cloud Service Mesh 將流量轉送至處理 TCP 流量的服務。這些服務包括資料庫、VOIP 服務和管理平台,這些服務預期會透過特定通訊埠或通訊埠範圍接收 TCP 流量。
本指南適用於使用舊版 API 的部署作業。如果您使用的是新版服務路由 API (目前處於預覽階段),請參閱「使用 TCPRoute
資源為 TCP 服務設定 Cloud Service Mesh」一文。
本指南可協助您:
- 設定代表一組相同後端或端點的服務,這些後端或端點會接受來自用戶端的 TCP 要求。
- 設定轉送規則對應,讓 Cloud Service Mesh 設定的 Envoy 代理程式能夠傳送 TCP 要求。
下圖分別顯示 TCP 路由如何運作虛擬機器 (VM) 執行個體和網路端點群組 (NEG)。
準備作業
- 本指南以「Envoy 服務網格」準備指南為基礎,並假設您已對 Cloud Service Mesh 的運作方式有基本瞭解。
- 本指南著重於說明在設定服務和 TCP 流量轉送時,Cloud Service Mesh 設定的不同之處。
- 本指南假設您已設定代管執行個體群組 (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
指令參考資料中的gcloud compute health-checks create tcp
為健康檢查建立防火牆規則
這項規則可讓 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
指令參考資料中的gcloud compute firewall-rules create
(包含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 為基礎的服務提供任何特定功能),因此不會顯示在這裡。如需更多資訊,請參閱使用自動 Envoy 部署的 Compute Engine VM 設定指南中的「建立後端服務」。
使用 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 為基礎的服務提供任何特定功能),因此不會在此顯示。如需更多資訊,請參閱自動 Envoy 注入功能的 GKE Pod 設定指南,瞭解如何建立後端服務。
為以 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 為基礎的服務傳送要求,請執行下列操作:
- 確認 TCP 健康狀態檢查通訊埠與 TCP 應用程式預期接收健康狀態檢查流量的通訊埠相符。
- 確認後端服務的通訊埠名稱與執行個體群組中指定的名稱相符。
後續步驟
- 如要查看設定程序中的其他步驟,請參閱「準備使用 Envoy 設定 Cloud Service Mesh」。
- 如需一般 Cloud Service Mesh 疑難排解資訊,請參閱「排解使用 Envoy 的部署問題」。