設定進階負載平衡
本文說明如何設定進階負載平衡總覽中說明的進階負載平衡選項。本文適用於至少對 Cloud Service Mesh 和負載平衡概念有中等程度瞭解的使用者。
事前準備
更新 Google Cloud CLI,確保您使用的是最新版本:
gcloud components update
建立新的後端服務,或決定要使用哪個現有的後端服務進行進階負載平衡。
如要建立名為 hello-world-backend-service 的新後端服務,請使用下列指令:
gcloud compute backend-services create hello-world-backend-service \
--global \
--protocol=HTTP \
--health-checks hello-world-health-check \
--load-balancing-scheme=INTERNAL_SELF_MANAGED
使用 YAML 建立服務負載平衡政策
您可以在 YAML 檔案中定義服務負載平衡政策。舉例來說,如要在名為 hello-world-lb-policy 的檔案中設定政策,啟用自動容量排空功能,請使用下列程式碼:
name: projects/${project-id}/locations/global/serviceLbPolicies/hello-world-lb-policy
autoCapacityDrain:
enable: True
建立 YAML 檔案後,請匯入該檔案:
gcloud network-services service-lb-policies import hello-world-lb-policy \ --source=hello-world-lb-policy.yaml \ --location=global
最後,將服務負載平衡政策與後端服務建立關聯:
gcloud compute backend-services update hello-world-backend-service \ --service-lb-policy hello-world-lb-policy \ --global
或者,您也可以在建立後端服務時,將現有的服務負載平衡政策與後端服務建立關聯:
gcloud compute backend-services create hello-world-backend-service \
--global \
--protocol=HTTP \
--health-checks hello-world-health-check \
--load-balancing-scheme=INTERNAL_SELF_MANAGED \
--service-lb-policy hello-world-lb-policy
這些說明僅涵蓋後端服務資源的變更。Cloud Service Mesh 部署作業也必須包含健康狀態檢查和防火牆規則,且您必須視需要新增後端。
設定噴灑至區域演算法
如要設定 spray-to-region 演算法 (將流量分散到區域中的所有可用區),請在名為 hello-world-lb-policy.yaml 的檔案中建立服務負載平衡政策:
name: projects/${project-id}/locations/global/serviceLbPolicies/hello-world-lb-policy
loadBalancingAlgorithm: SPRAY_TO_REGION
匯入 yaml 檔案:
gcloud network-services service-lb-policies import hello-world-lb-policy \ --source=hello-world-lb-policy.yaml \ --location=global
您也可以使用 gcloud CLI 設定此演算法:
gcloud network-services service-lb-policies create hello-world-lb-policy \
--load-balancing-algorithm=SPRAY_TO_REGION \
--location=global
設定依區域刊登序列演算法
如要設定「依區域瀑布式」演算法 (將流量傳送至本機區域,再溢流至其他區域),請在名為 hello-world-lb-policy.yaml 的檔案中建立服務負載平衡政策:
name: projects/${project-id}/locations/global/serviceLbPolicies/hello-world-lb-policy
loadBalancingAlgorithm: WATERFALL_BY_ZONE
匯入 yaml 檔案:
gcloud network-services service-lb-policies import hello-world-lb-policy \ --source=hello-world-lb-policy.yaml \ --location=global
您也可以使用 gcloud CLI 設定此演算法:
gcloud network-services service-lb-policies create hello-world-lb-policy \
--load-balancing-algorithm=WATERFALL_BY_ZONE \
--location=global
設定偏好的後端
如要設定偏好的後端,請按照下列方式設定後端服務:
name: projects/${project-id}/locations/global/backendServices/hello-world-service
...
backends:
...
preference: PREFERRED
以下範例顯示三個後端:MIG1、MIG2 和 MIG3:
name: .. ... - backends name: MIG1 preference: PREFERRED - backends name: MIG2 preference: DEFAULT - backends name: MIG3 ...
您也可以使用 gcloud CLI 設定這項功能:
gcloud compute backend-services add-backend BACKEND_SERVICE_NAME \
[...]
--preference=PREFERRED \
--global
如要更新偏好的後端,請按照下列步驟操作:
gcloud compute backend-services update-backend BACKEND_SERVICE_NAME \
[...]
--preference=PREFERRED
設定自動容量排除機制
如要設定 Cloud Service Mesh,根據後端健康狀態自動排空後端,請按照下列步驟建立服務負載平衡政策:
name: projects/${project-id}/locations/global/serviceLbPolicies/hello-world-lb-policy
autoCapacityDrain:
enable: True
您也可以使用 gcloud CLI 設定這項功能:
gcloud network-services service-lb-policies create capacity-drain-policy \
--auto-capacity-drain \
--location=global
自訂容錯移轉行為
如要為容錯移轉健康狀態門檻設定特定值,請在服務負載平衡政策中加入下列項目,並將 VALUE 替換為介於 1 到 99 的值。預設值為:Cloud Service Mesh (無 Proxy gRPC) 為 50,Cloud Service Mesh (Envoy) 為 70。
projects/${project-id}/locations/global/serviceLbPolicies/hello-world-lb-policy
failoverConfig:
failoverHealthThreshold: VALUE
如要使用 gcloud CLI 自訂容錯移轉行為,請按照下列步驟操作:
gcloud network-services service-lb-policies create failover-health-threshold--policy \ --failover-health-threshold=VALUE \ --location=global