Configurer l'équilibrage de charge avancé

Ce document contient des instructions pour configurer les options d'équilibrage de charge avancées décrites dans la présentation avancée de l'équilibrage de charge. Ce document est destiné aux utilisateurs qui comprennent au moins une connaissance intermédiaire des concepts de Cloud Service Mesh et de l'équilibrage de charge.

Avant de commencer

Mettez à jour Google Cloud CLI pour vous assurer que vous disposez de la version la plus récente:

gcloud components update

Créez un service de backend ou choisissez le service de backend existant à utiliser pour l'équilibrage de charge avancé.

Pour créer un service de backend appelé hello-world-backend-service, exécutez la commande suivante:

gcloud compute backend-services create hello-world-backend-service \
    --global \
    --protocol=HTTP \
    --health-checks hello-world-health-check
    --load-balancing-scheme=INTERNAL_SELF_MANAGED

Créer une stratégie d'équilibrage de charge de service avec YAML

Vous pouvez définir des stratégies d'équilibrage de charge de service dans un fichier YAML. Par exemple, configurez une règle pour activer la fonctionnalité de drainage de capacité automatique comme suit, dans un fichier nommé hello-world-lb-policy:

name: projects/${project-id}/locations/global/serviceLbPolicies/hello-world-lb-policy
autoCapacityDrain:
  enable: True

Après avoir créé le fichier YAML, importez-le:

gcloud beta network-services service-lb-policies import hello-world-lb-policy \
   --source=hello-world-lb-policy.yaml
   --location=global

Enfin, associez la stratégie d'équilibrage de charge du service au service de backend:

gcloud compute backend-services update hello-world-backend-service \
  --service-lb-policy hello-world-lb-policy
  --location=global

Vous pouvez également associer une règle d'équilibrage de charge de service existante à un service de backend lors de sa création:

gcloud beta 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

Ces instructions ne concernent que les modifications apportées à la ressource du service de backend. Votre déploiement Cloud Service Mesh doit également inclure une vérification de l'état et des règles de pare-feu. Vous devez également ajouter des backends si nécessaire.

Configurer l'algorithme de pulvérisation vers la région

Pour configurer l'algorithme de pulvérisation vers région, qui répartit le trafic entre toutes les zones d'une région, créez une règle d'équilibrage de charge de service dans un fichier nommé hello-world-lb-policy.yaml:

name: projects/${project-id}/locations/global/serviceLbPolicies/hello-world-lb-policy
loadBalancingAlgorithm: SPRAY_TO_REGION

Importez le fichier YAML:

gcloud beta network-services service-lb-policies import hello-world-lb-policy \
   --source=hello-world-lb-policy.yaml
   --location=global

Vous pouvez également configurer cet algorithme avec la gcloud CLI:

gcloud network-services service-lb-policies create hello-world-lb-policy \
    --load-balancing-algorithm=SPRAY_TO_REGION
    --location=global

Configurer l'algorithme de cascade par zone

Pour configurer l'algorithme de cascade par zone, qui envoie le trafic vers la zone locale avant de le diffuser vers d'autres zones, créez une règle d'équilibrage de charge de service dans un fichier nommé hello-world-lb-policy.yaml:

name: projects/${project-id}/locations/global/serviceLbPolicies/hello-world-lb-policy
loadBalancingAlgorithm: WATERFALL_BY_ZONE

Importez le fichier YAML:

gcloud beta network-services service-lb-policies import hello-world-lb-policy \
   --source=hello-world-lb-policy.yaml
   --location=global

Vous pouvez également configurer cet algorithme avec la gcloud CLI:

gcloud network-services service-lb-policies create hello-world-lb-policy \
    --load-balancing-algorithm=WATERFALL_BY_ZONE
    --location=global

Configurer les backends préférés

Pour configurer des backends préférés, créez une règle d'équilibrage de charge de service comme suit:

name: projects/${project-id}/locations/global/backendServices/hello-world-service
...
backends:
...
  preference: PREFERRED

L'exemple suivant montre trois backends, MIG1, MIG2 et MIG3:

name: ..
...
- backends
name: MIG1
preference: PREFERRED
- backends
name: MIG2
preference: DEFAULT
- backends
name: MIG3
...

Vous pouvez également configurer cette fonctionnalité à l'aide de la gcloud CLI:

gcloud compute backend-services add-backend BACKEND_SERVICE_NAME \
      [...]
      --preference=PREFERRED
      --global

Pour mettre à jour les backends préférés:

gcloud compute backend-services update-backend BACKEND_SERVICE_NAME \
      [...]
      --preference=PREFERRED

Configurer la décharge automatique de la capacité

Pour configurer Cloud Service Mesh afin de drainer automatiquement un backend en fonction de son état, créez une règle d'équilibrage de charge de service comme suit:

name: projects/${project-id}/locations/global/serviceLbPolicies/hello-world-lb-policy
autoCapacityDrain:
  enable: True

Vous pouvez également configurer cette fonctionnalité à l'aide de la gcloud CLI:

gcloud network-services service-lb-policies create capacity-drain-policy \
    --auto-capacity-drain
    --location=global

Personnaliser le comportement de basculement

Pour configurer Cloud Service Mesh en fonction d'une valeur spécifique correspondant au seuil d'état de basculement, incluez les éléments suivants dans une règle d'équilibrage de charge de service, en remplaçant VALUE par une valeur comprise entre 1 et 99. Les valeurs par défaut sont 50 pour Cloud Service Mesh avec gRPC sans proxy et 70 pour Cloud Service Mesh avec Envoy.

projects/${project-id}/locations/global/serviceLbPolicies/hello-world-lb-policy
failoverConfig:
  failoverHealthThreshold: VALUE

Pour personnaliser le comportement de basculement avec la gcloud CLI:

gcloud network-services service-lb-policies create failover-health-threshold--policy 
   --failover-health-threshold=VALUE
   --location=global