设置高级负载均衡

本文档介绍如何设置高级负载均衡选项,如高级负载均衡概览中所述。 本文档适用于至少对 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 算法

如需配置 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

配置 waterfall-by-zone 算法

如需配置 waterfall-by-zone 算法(在流量溢出到其他可用区之前先将流量发送到本地可用区),请在名为 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 之间的值。Cloud Service Mesh 与无代理 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