設定進階負載平衡

本文件說明如何設定「進階負載平衡」選項,詳情請參閱「進階負載平衡總覽」。本文件適用於至少對 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 部署作業也必須納入健康狀態檢查和防火牆規則,並視需要新增後端。

設定噴灑至區域演算法

如要設定噴灑至區域的演算法,將流量散布到區域中的所有區域,請在名為 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

以下範例顯示三個後端:MIG1MIG2MIG3

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

自訂備援行為

如要設定 Cloud Service Mesh 的備援健康情況門檻值,請在服務負載平衡政策中加入以下內容,並將 VALUE 替換為介於 1 到 99 之間的值。預設值為:使用無 Proxy gRPC 的 Cloud Service Mesh 為 50,使用 Envoy 的 Cloud Service Mesh 為 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