设置高级负载均衡
本文档介绍如何设置高级负载均衡选项,如高级负载均衡概览中所述。 本文档适用于至少对 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
以下示例展示了三个后端: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
自定义故障切换行为
如需针对故障切换健康状况阈值的特定值配置 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