Configurer le basculement pour les équilibreurs de charge réseau passthrough internes

Ce guide s'appuie sur un exemple pour vous apprendre à configurer le basculement pour un équilibreur de charge passthrough interne Google Cloud. Avant de suivre ce guide, familiarisez-vous avec les points suivants :

Permissions

Pour suivre ce guide, vous devez créer des instances et modifier un réseau dans un projet. Vous devez être propriétaire ou éditeur du projet, ou disposer de tous les rôles IAM Compute Engine suivants :

Tâche Rôle requis
Créer des réseaux, des sous-réseaux et des composants de l'équilibreur de charge Administrateur réseau
Ajouter et supprimer des règles de pare-feu Administrateur de sécurité
Créer des instances Administrateur d'instances Compute

Pour en savoir plus, consultez les guides suivants :

Préparation

Ce guide vous explique comment configurer et tester un équilibreur de charge réseau passthrough interne qui utilise le basculement. La procédure décrite dans cette section explique comment configurer les éléments suivants :

  1. Un exemple de réseau VPC avec des sous-réseaux personnalisés
  2. Des règles de pare-feu autorisant les connexions entrantes aux VM de backend
  3. Des VM de backend :
    • Un backend principal dans un groupe d'instances non géré dans la zone us-west1-a
    • Un backend de basculement dans un groupe d'instances non géré dans la zone us-west1-c
  4. Une VM cliente pour tester les connexions et observer le comportement du basculement
  5. Les composants de l'équilibreur de charge réseau passthrough interne suivants :
    • Vérification d'état du service de backend
    • Service de backend interne dans la région us-west1 pour gérer la distribution des connexions entre les VM de backend
    • Règle de transfert interne et adresse IP interne pour l'interface de l'équilibreur de charge

L'architecture de cet exemple se présente comme suit :

Exemple de basculement simple pour un équilibreur de charge réseau passthrough.
Exemple de basculement simple pour un équilibreur de charge réseau passthrough interne (cliquez pour agrandir).

Configurer un réseau, une région et un sous-réseau

Cet exemple utilise le réseau VPC, la région et le sous-réseau suivants :

  • Réseau : le réseau est un réseau VPC en mode personnalisé nommé lb-network.

  • Région : la région est us-west1.

  • Sous-réseau : le sous-réseau lb-subnet utilise la plage d'adresses IP 10.1.2.0/24.

Pour créer les exemples de réseau et de sous-réseaux, procédez comme suit :

Console

  1. Dans Google Cloud Console, accédez à la page Réseaux VPC.

    Accéder aux réseaux VPC

  2. Cliquez sur Créer un réseau VPC.

  3. Saisissez le nom lb-network.

  4. Dans la section Sous-réseaux :

    • Définissez Mode de création du sous-réseau sur Personnalisé.
    • Dans la section Nouveau sous-réseau, saisissez les informations suivantes :
      • Nom : lb-subnet
      • Région : us-west1
      • Plage d'adresses IP : 10.1.2.0/24
      • Cliquez sur OK.
  5. Cliquez sur Créer.

gcloud

  1. Créez le réseau VPC personnalisé :

    gcloud compute networks create lb-network --subnet-mode=custom
    
  2. Créez un sous-réseau sur le réseau lb-network, dans la région us-west1 :

    gcloud compute networks subnets create lb-subnet \
        --network=lb-network \
        --range=10.1.2.0/24 \
        --region=us-west1
    

API

Envoyez une requête POST à la méthode networks.insert.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks

{
 "routingConfig": {
   "routingMode": "REGIONAL"
 },
 "name": "lb-network",
 "autoCreateSubnetworks": false
}

Envoyez une requête POST à la méthode subnetworks.insert. Remplacez PROJECT_ID par l'ID de votre projet Google Cloud.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/subnetworks

{
 "name": "lb-subnet",
 "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network",
 "ipCidrRange": "10.1.2.0/24",
 "privateIpGoogleAccess": false
}

Configurer les règles de pare-feu

Cet exemple utilise les règles de pare-feu suivantes :

  • fw-allow-lb-subnet : règle d'entrée applicable à toutes les cibles du réseau VPC, autorisant tout le trafic provenant de sources comprises dans la plage 10.1.2.0/24. Cette règle autorise le trafic entrant depuis n'importe quelle source du sous-réseau lb-subnet vers les instances (VM) faisant l'objet d'un équilibrage de charge.

  • fw-allow-ssh : règle d'entrée appliquée aux instances faisant l'objet d'un équilibrage de charge, autorisant la connectivité SSH entrante sur le port TCP 22 à partir de n'importe quelle adresse. Vous pouvez choisir une plage d'adresses IP source plus restrictive pour cette règle. Par exemple, vous pouvez spécifier les plages d'adresses IP des systèmes à partir desquels vous prévoyez de lancer des sessions SSH. Cet exemple utilise le tag cible allow-ssh pour identifier les VM auxquelles la règle de pare-feu s'applique.

  • fw-allow-health-check : règle d'entrée, applicable aux instances faisant l'objet d'un équilibrage de charge, qui autorise le trafic issu des systèmes de vérification d'état Google Cloud (130.211.0.0/22 et 35.191.0.0/16). Cet exemple utilise le tag cible allow-health-check pour identifier les instances auxquelles la règle doit s'appliquer.

Sans ces règles de pare-feu, la règle d'entrée interdite par défaut bloque le trafic entrant vers les instances backend.

Console

  1. Dans la console Google Cloud, accédez à la page Règles d'administration.

    Accéder à la page "Stratégies de pare-feu"

  2. Cliquez sur Créer une règle de pare-feu et saisissez les informations suivantes pour créer la règle permettant d'autoriser le trafic de sous-réseau :

    • Nom : fw-allow-lb-subnet
    • Réseau : lb-network
    • Priorité : 1000
    • Sens du trafic : entrée
    • Action en cas de correspondance : autoriser
    • Cibles : toutes les instances du réseau
    • Filtre source : Plages IPv4
    • Plages IPv4 sources : 10.1.2.0/24
    • Protocoles et ports : tout autoriser
  3. Cliquez sur Créer.

  4. Cliquez de nouveau sur Créer une règle de pare-feu pour créer la règle autorisant les connexions SSH entrantes :

    • Nom : fw-allow-ssh
    • Réseau : lb-network
    • Priorité : 1000
    • Sens du trafic : entrée
    • Action en cas de correspondance : autoriser
    • Cibles : tags cibles spécifiés
    • Tags cibles : allow-ssh
    • Filtre source : Plages IPv4
    • Plages IPv4 sources : 0.0.0.0/0
    • Protocoles et ports : choisissez Protocoles et ports spécifiés, puis saisissez tcp:22.
  5. Cliquez sur Créer.

  6. Cliquez une troisième fois sur Créer une règle de pare-feu pour créer la règle autorisant les vérifications d'état Google Cloud :

    • Nom : fw-allow-health-check
    • Réseau : lb-network
    • Priorité : 1000
    • Sens du trafic : entrée
    • Action en cas de correspondance : autoriser
    • Cibles : tags cibles spécifiés
    • Tags cibles : allow-health-check
    • Filtre source : Plages IPv4
    • Plages IPv4 sources : 130.211.0.0/22 et 35.191.0.0/16
    • Protocoles et ports : tout autoriser
  7. Cliquez sur Create (Créer).

gcloud

  1. Créez la règle de pare-feu fw-allow-lb-subnet pour autoriser la communication depuis le sous-réseau :

    gcloud compute firewall-rules create fw-allow-lb-subnet \
        --network=lb-network \
        --action=allow \
        --direction=ingress \
        --source-ranges=10.1.2.0/24 \
        --rules=tcp,udp,icmp
    
  2. Créez la règle de pare-feu fw-allow-ssh pour autoriser la connectivité SSH aux VM avec le tag réseau allow-ssh. Lorsque vous omettez source-ranges, Google Cloud interprète la règle comme désignant n'importe quelle source.

    gcloud compute firewall-rules create fw-allow-ssh \
        --network=lb-network \
        --action=allow \
        --direction=ingress \
        --target-tags=allow-ssh \
        --rules=tcp:22
    
  3. Créez la règle fw-allow-health-check pour autoriser les vérifications d'état Google Cloud.

    gcloud compute firewall-rules create fw-allow-health-check \
        --network=lb-network \
        --action=allow \
        --direction=ingress \
        --target-tags=allow-health-check \
        --source-ranges=130.211.0.0/22,35.191.0.0/16 \
        --rules=tcp,udp,icmp
    

API

Créez la règle de pare-feu fw-allow-lb-subnet en envoyant une requête POST à la méthode firewalls.insert. Remplacez PROJECT_ID par l'ID de votre projet Google Cloud.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/firewalls

{
 "name": "fw-allow-lb-subnet",
 "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network",
 "priority": 1000,
 "sourceRanges": [
   "10.1.2.0/24"
 ],
 "allowed": [
   {
     "IPProtocol": "tcp"
   },
   {
     "IPProtocol": "udp"
   },
   {
     "IPProtocol": "icmp"
   }
 ],
 "direction": "INGRESS",
 "logConfig": {
   "enable": false
 },
 "disabled": false
}

Créez la règle de pare-feu fw-allow-ssh en envoyant une requête POST à la méthode firewalls.insert. Remplacez PROJECT_ID par l'ID de votre projet Google Cloud.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/firewalls

{
 "name": "fw-allow-ssh",
      "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network",
 "priority": 1000,
 "sourceRanges": [
   "0.0.0.0/0"
 ],
 "targetTags": [
   "allow-ssh"
 ],
 "allowed": [
  {
    "IPProtocol": "tcp",
    "ports": [
      "22"
    ]
  }
 ],
"direction": "INGRESS",
"logConfig": {
  "enable": false
},
"disabled": false
}

Créez la règle de pare-feu fw-allow-health-check en envoyant une requête POST à la méthode firewalls.insert. Remplacez PROJECT_ID par l'ID de votre projet Google Cloud.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/firewalls

{
 "name": "fw-allow-health-check",
 "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network",
 "priority": 1000,
 "sourceRanges": [
   "130.211.0.0/22",
   "35.191.0.0/16"
 ],
 "targetTags": [
   "allow-health-check"
 ],
 "allowed": [
   {
     "IPProtocol": "tcp"
   },
   {
     "IPProtocol": "udp"
   },
   {
     "IPProtocol": "icmp"
   }
 ],
 "direction": "INGRESS",
 "logConfig": {
   "enable": false
 },
 "disabled": false
}

Créer des VM de backend et des groupes d'instances

À cette étape, vous allez créer les VM de backend et les groupes d'instances non gérés :

  • Le groupe d'instances ig-a dans us-west1-a est un backend principal avec deux VM :
    • vm-a1
    • vm-a2
  • Le groupe d'instances ig-c dans us-west1-c est un backend de basculement avec deux VM :
    • vm-c1
    • vm-c2

Le backend principal et le backend de basculement sont placés dans des zones distinctes pour plus de clarté et pour gérer le basculement si une zone tombe panne.

Les VM principales et les VM de secours sont configurées pour exécuter un serveur Web Apache sur les ports TCP 80 et 443. Une adresse IP interne est attribuée à chaque VM dans le sous-réseau lb-subnet pour l'accès client et une adresse IP externe (publique) éphémère pour l'accès SSH. Pour plus d'informations sur la suppression des adresses IP externes, consultez la section Supprimer les adresses IP externes des VM de backend.

Par défaut, Apache est configuré pour se lier à n’importe quelle adresse IP. Les équilibreurs de charge réseau passthrough internes transmettent les paquets en conservant l'adresse IP de destination.

Vérifiez que le logiciel serveur exécuté sur les VM principales et les VM de secours écoute sur l'adresse IP de la règle de transfert interne de l'équilibreur de charge. Si vous configurez plusieurs règles de transfert internes, assurez-vous que votre logiciel écoute l'adresse IP interne associée à chacune d'elles. L'adresse IP de destination d'un paquet distribué à une VM de backend par un équilibreur de charge passthrough interne est l'adresse IP interne de la règle de transfert.

Pour des raisons de simplicité, toutes les VM principales et les VM de secours exécutent Debian GNU/Linux 10.

Console

Créer des VM de backend

  1. Dans Google Cloud Console, accédez à la page Instances de VM.

    Accéder à la page "Instances de VM"

  2. Répétez les étapes ci-dessous pour créer quatre VM, en utilisant les combinaisons de noms et de zones suivantes :

    • Nom : vm-a1, zone : us-west1-a
    • Nom : vm-a2, zone : us-west1-a
    • Nom : vm-c1, zone : us-west1-c
    • Nom : vm-c2, zone : us-west1-c
  3. Cliquez sur Créer une instance.

  4. Définissez le Nom comme indiqué à l'étape 2.

  5. Dans le champ Région, choisissez us-west1, puis sélectionnez une zone comme indiqué à l'étape 2.

  6. Dans la section Disque de démarrage, assurez-vous que l'image sélectionnée est Debian GNU/Linux 10 (buster). Si nécessaire, cliquez sur Sélectionner pour modifier l'image.

  7. Cliquez sur Options avancées.

  8. Cliquez sur Mise en réseau et configurez les champs suivants :

    1. Pour Tags réseau, saisissez allow-health-check et allow-ssh.
    2. Pour Interfaces réseau, sélectionnez l'option suivante :
      • Réseau : lb-network
      • Sous-réseau : lb-subnet
  9. Cliquez sur Gestion. Saisissez le script suivant dans le champ Script de démarrage. Le contenu du script est identique pour les quatre VM :

    #! /bin/bash
    apt-get update
    apt-get install apache2 -y
    a2ensite default-ssl
    a2enmod ssl
    vm_hostname="$(curl -H "Metadata-Flavor:Google" \
    http://metadata.google.internal/computeMetadata/v1/instance/name)"
    echo "Page served from: $vm_hostname" | \
    tee /var/www/html/index.html
    systemctl restart apache2
    
  10. Cliquez sur Create (Créer).

Créer des groupes d'instances

  1. Dans la console Google Cloud, accédez à la page Groupes d'instances.

    Accéder à la page "Groupes d'instances"

  2. Répétez les étapes ci-dessous pour créer deux groupes d'instances non gérés, comportant chacun deux VM, à l'aide des combinaisons suivantes :

    • Groupe d'instances : ig-a, zone : us-west1-a, VM : vm-a1 et vm-a2
    • Groupe d'instances : ig-c, zone : us-west1-c, VM : vm-c1 et vm-c2
  3. Cliquez sur Créer un groupe d'instances.

  4. Cliquez sur Nouveau groupe d'instances non géré.

  5. Définissez le Nom comme indiqué à l'étape 2.

  6. Dans la section Emplacement, sélectionnez us-west1 pour la région, puis choisissez une zone comme indiqué à l'étape 2.

  7. Pour Réseau, saisissez la valeur suivante : lb-network.

  8. Pour Sous-réseau, saisissez la valeur suivante : lb-subnet.

  9. Dans la section Instances de VM, ajoutez les VM comme indiqué à l'étape 2.

  10. Cliquez sur Create (Créer).

gcloud

  1. Créez quatre VM en exécutant la commande suivante quatre fois, en utilisant ces quatre combinaisons pour VM_NAME et ZONE. Le contenu du script est identique pour les quatre VM.

    • VM_NAME : vm-a1 et ZONE : us-west1-a
    • VM_NAME : vm-a2 et ZONE : us-west1-a
    • VM_NAME : vm-c1 et ZONE : us-west1-c
    • VM_NAME : vm-c2 et ZONE : us-west1-c
    gcloud compute instances create VM_NAME \
        --zone=ZONE \
        --image-family=debian-10 \
        --image-project=debian-cloud \
        --tags=allow-ssh,allow-health-check \
        --subnet=lb-subnet \
        --metadata=startup-script='#! /bin/bash
          apt-get update
          apt-get install apache2 -y
          a2ensite default-ssl
          a2enmod ssl
          vm_hostname="$(curl -H "Metadata-Flavor:Google" \
          http://metadata.google.internal/computeMetadata/v1/instance/name)"
          echo "Page served from: $vm_hostname" | \
          tee /var/www/html/index.html
          systemctl restart apache2'
    
  2. Créez les deux groupes d'instances non gérés dans chaque zone :

    gcloud compute instance-groups unmanaged create ig-a \
        --zone=us-west1-a
    gcloud compute instance-groups unmanaged create ig-c \
        --zone=us-west1-c
    
  3. Ajoutez les VM aux groupes d'instances appropriés :

    gcloud compute instance-groups unmanaged add-instances ig-a \
        --zone=us-west1-a \
        --instances=vm-a1,vm-a2
    gcloud compute instance-groups unmanaged add-instances ig-c \
        --zone=us-west1-c \
        --instances=vm-c1,vm-c2
    

API

Créez quatre VM de backend en envoyant quatre requêtes POST à la méthode instances.insert :

Pour les quatre VM, utilisez les noms et zones de VM suivants :

  • VM_NAME : vm-a1 et ZONE : us-west1-a
  • VM_NAME : vm-a2 et ZONE : us-west1-a
  • VM_NAME : vm-c1 et ZONE : us-west1-c
  • VM_NAME : vm-c2 et ZONE : us-west1-c

Remplacez l'élément suivant :

  • PROJECT_ID : ID de votre projet
  • ZONE : la zone de l'instance.
  • DEBIAN_IMAGE_NAME : nom de l'image Debian pour l'instance. Vous pouvez obtenir la valeur DEBIAN_IMAGE_NAME actuelle en exécutant la commande gcloud suivante :

    gcloud compute images list \
     --filter="family=debian-10"
    

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances

{
 "name": "VM_NAME",
 "tags": {
   "items": [
     "allow-health-check",
     "allow-ssh"
   ]
 },
 "machineType": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/machineTypes/e2-standard-2",
 "canIpForward": false,
 "networkInterfaces": [
   {
     "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network",
     "subnetwork": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/subnetworks/lb-subnet",
     "accessConfigs": [
       {
         "type": "ONE_TO_ONE_NAT",
         "name": "external-nat",
         "networkTier": "PREMIUM"
       }
     ]
   }
 ],
 "disks": [
   {
     "type": "PERSISTENT",
     "boot": true,
     "mode": "READ_WRITE",
     "autoDelete": true,
     "deviceName": "VM_NAME",
     "initializeParams": {
       "sourceImage": "projects/debian-cloud/global/images/DEBIAN_IMAGE_NAME",
       "diskType": "projects/PROJECT_ID/zones/ZONE/diskTypes/pd-standard",
       "diskSizeGb": "10"
     }
   }
 ],
 "metadata": {
   "items": [
     {
       "key": "startup-script",
       "value": "#! /bin/bash\napt-get update\napt-get install apache2 -y\na2ensite default-ssl\na2enmod ssl\nvm_hostname=\"$(curl -H \"Metadata-Flavor:Google\" \\\nhttp://metadata.google.internal/computeMetadata/v1/instance/name)\"\necho \"Page served from: $vm_hostname\" | \\\ntee /var/www/html/index.html\nsystemctl restart apache2"
     }
   ]
 },
 "scheduling": {
   "preemptible": false
 },
 "deletionProtection": false
}

Créez deux groupes d'instances en envoyant une requête POST à la méthode instanceGroups.insert. Remplacez PROJECT_ID par l'ID de votre projet Google Cloud.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-a/instanceGroups

{
 "name": "ig-a",
 "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network",
 "subnetwork": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/subnetworks/lb-subnet"
}

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-c/instanceGroups

{
 "name": "ig-c",
 "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network",
 "subnetwork": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/subnetworks/lb-subnet"
}

Ajoutez des instances à chaque groupe d'instances en envoyant une requête POST à la méthode instanceGroups.addInstances. Remplacez PROJECT_ID par l'ID de votre projet Google Cloud.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-a/instanceGroups/ig-a/addInstances

{
 "instances": [
   {
     "instance": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-a/instances/vm-a1",
     "instance": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-a/instances/vm-a2"
   }
 ]
}

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-c/instanceGroups/ig-c/addInstances

{
 "instances": [
   {
     "instance": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-c/instances/vm-c1",
     "instance": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-c/instances/vm-c2"
   }
 ]
}

Créer une VM cliente

Cet exemple crée une VM cliente (vm-client) dans la même région que l'équilibreur de charge. Le client est utilisé pour illustrer le fonctionnement du basculement.

Console

  1. Dans la console Google Cloud, accédez à la page Instances de VM.

    Accéder à la page "Instances de VM"

  2. Cliquez sur Créer une instance.

  3. Définissez le paramètre Nom sur vm-client.

  4. Définissez le paramètre Zone sur us-west1-a.

  5. Cliquez sur Options avancées.

  6. Cliquez sur Mise en réseau et configurez les champs suivants :

    1. Pour Tags réseau, saisissez allow-ssh.
    2. Pour Interfaces réseau, sélectionnez l'option suivante :
      • Réseau : lb-network
      • Sous-réseau : lb-subnet
  7. Cliquez sur Créer.

gcloud

La VM cliente peut se trouver dans n'importe quelle zone de la même région que l'équilibreur de charge, et utiliser n'importe quel sous-réseau de cette région. Dans cet exemple, le client se situe dans la zone us-west1-a et utilise le même sous-réseau que les VM principales et les VM de secours.

gcloud compute instances create vm-client \
    --zone=us-west1-a \
    --image-family=debian-10 \
    --image-project=debian-cloud \
    --tags=allow-ssh \
    --subnet=lb-subnet

API

Envoyez une requête POST à la méthode instances.insert.

Remplacez l'élément suivant :

  • PROJECT_ID : ID de votre projet.
  • DEBIAN_IMAGE_NAME : nom de l'image Debian pour l'instance. Vous pouvez obtenir la valeur DEBIAN_IMAGE_NAME actuelle en exécutant la commande gcloud suivante :

    gcloud compute images list \
     --filter="family=debian-10"
    

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-a/instances

{
 "name": "vm-client",
 "tags": {
   "items": [
     "allow-ssh"
   ]
 },
 "machineType": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-a/machineTypes/e2-standard-2",
 "canIpForward": false,
 "networkInterfaces": [
   {
     "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network",
     "subnetwork": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/subnetworks/lb-subnet",
     "accessConfigs": [
       {
         "type": "ONE_TO_ONE_NAT",
         "name": "external-nat",
         "networkTier": "PREMIUM"
       }
     ]
   }
 ],
 "disks": [
   {
     "type": "PERSISTENT",
     "boot": true,
     "mode": "READ_WRITE",
     "autoDelete": true,
     "deviceName": "vm-client",
     "initializeParams": {
       "sourceImage": "projects/debian-cloud/global/images/DEBIAN_IMAGE_NAME",
       "diskType": "projects/PROJECT_ID/zones/us-west1-a/diskTypes/pd-standard",
       "diskSizeGb": "10"
     }
   }
 ],
 "scheduling": {
   "preemptible": false
 },
 "deletionProtection": false
}

Configurer les composants de l'équilibreur de charge

Ces étapes permettent de configurer tous les composants de l'équilibreur de charge passthrough interne, en commençant par la vérification d'état et le service de backend, puis en passant aux composants d'interface :

  • Vérification de l'état : cet exemple utilise la vérification d'état HTTP qui recherche simplement une réponse HTTP 200 (OK). Pour plus d'informations, consultez la section sur les vérifications d'état de la présentation de l'équilibreur de charge réseau passthrough interne.

  • Service de backend : étant donné que l'exemple transmet le trafic HTTP via l'équilibreur de charge, la configuration spécifie TCP, et non UDP. Pour illustrer le basculement, ce service de backend a un taux de basculement de 0.75.

  • Règle de transfert : cet exemple crée une seule règle de transfert interne.

  • Adresse IP interne : dans cet exemple, nous indiquons une adresse IP interne, 10.1.2.99, lors de la création de la règle de transfert.

Console

Démarrer la configuration

  1. Dans Google Cloud Console, accédez à la page Équilibrage de charge.

    Accéder à la page "Équilibrage de charge"

  2. Cliquez sur Créer un équilibreur de charge.
  3. Sous Type d'équilibreur de charge, sélectionnez Équilibreur de charge réseau (TCP/UDP/SSL), puis cliquez sur Suivant.
  4. Pour Proxy ou passthrough, sélectionnez Équilibreur de charge passthrough, puis cliquez sur Suivant.
  5. Pour Public ou interne, sélectionnez Interne, puis cliquez sur Suivant.
  6. Cliquez sur Configurer.

Configuration de base

  1. Définissez le paramètre Nom sur be-ilb.
  2. Définissez Région sur us-west1.
  3. Définissez le paramètre Réseau sur lb-network.
  4. Cliquez sur Configuration du backend et apportez les modifications suivantes :
    1. Sous Backends, dans la section Nouvel élément, sélectionnez le groupe d'instances ig-a. Vérifiez que la case Utiliser ce groupe d'instances comme groupe de basculement pour la sauvegarde n'est pas cochée. Cliquez sur OK.
    2. Cliquez sur Ajouter le backend. Dans la section Nouvel élément qui s'affiche, sélectionnez le groupe d'instances ig-c. Cochez la case Utiliser ce groupe d'instances comme groupe de basculement pour la sauvegarde. Cliquez sur OK.
    3. Sous Vérification d'état, sélectionnez Créer une autre vérification d'état, saisissez les informations suivantes, puis cliquez sur Enregistrer et continuer :
      • Nom : hc-http-80
      • Protocole : HTTP
      • Port : 80
      • Protocole de proxy : NONE
      • Chemin de requête : / Notez que lorsque vous créez un équilibreur de charge à l'aide de la console Google Cloud, la vérification de l'état est globale. Si vous souhaitez créer une vérification de l'état régionale, utilisez gcloud ou l'API.
    4. Cliquez sur Configurations avancées. Dans la section Stratégie de basculement, configurez les paramètres suivants :
      • Taux de basculement : 0.75
      • Cochez la case Activer le drainage de connexion en basculement.
    5. Vérifiez qu'une coche bleue apparaît à côté de Configuration du backend avant de continuer. Répétez cette étape si ce n'est pas le cas.
  5. Cliquez sur Configuration du frontend. Dans la section Nouveaux IP et port frontend, apportez les modifications suivantes :
    1. Nom : fr-ilb
    2. Sous-réseau : ilb-subnet
    3. Dans Adresse IP interne, sélectionnez Réserver une adresse IP statique interne, saisissez les informations suivantes, puis cliquez sur Réserver :
      • Nom : ip-ilb
      • Adresse IP statique : Laissez-moi choisir
      • Adresse IP personnalisée : 10.1.2.99
    4. Ports : sélectionnez Unique et saisissez 80 pour le numéro de port.
    5. Vérifiez qu'une coche bleue apparaît à côté de Configuration du frontend avant de continuer. Reprenez la procédure depuis le début si ce n'est pas le cas.
  6. Cliquez sur Vérifier et finaliser. Vérifiez vos paramètres.
  7. Cliquez sur Create (Créer).

gcloud

  1. Créez une vérification d'état HTTP pour tester la connectivité TCP aux VM sur le port 80.

    gcloud compute health-checks create http hc-http-80 \
        --region=us-west1 \
        --port=80
    
  2. Créez le service de backend pour le trafic HTTP :

    gcloud compute backend-services create be-ilb \
        --load-balancing-scheme=internal \
        --protocol=tcp \
        --region=us-west1 \
        --health-checks=hc-http-80 \
        --health-checks-region=us-west1 \
        --failover-ratio 0.75
    
  3. Ajoutez le backend principal au service de backend :

    gcloud compute backend-services add-backend be-ilb \
        --region=us-west1 \
        --instance-group=ig-a \
        --instance-group-zone=us-west1-a
    
  4. Ajoutez le backend de basculement au service de backend :

    gcloud compute backend-services add-backend be-ilb \
        --region=us-west1 \
        --instance-group=ig-c \
        --instance-group-zone=us-west1-c \
        --failover
    
  5. Créez une règle de transfert pour le service de backend. Lorsque vous créez la règle de transfert, indiquez 10.1.2.99 pour l'adresse IP interne dans le sous-réseau.

    gcloud compute forwarding-rules create fr-ilb \
        --region=us-west1 \
        --load-balancing-scheme=internal \
        --network=lb-network \
        --subnet=lb-subnet \
        --address=10.1.2.99 \
        --ip-protocol=TCP \
        --ports=80 \
        --backend-service=be-ilb \
        --backend-service-region=us-west1
    

API

Créez la vérification d'état en envoyant une requête POST à la méthode regionHealthChecks.insert. Remplacez PROJECT_ID par l'ID du projet.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/regionHealthChecks

{
"name": "hc-http-80",
"type": "HTTP",
"httpHealthCheck": {
  "port": 80
}
}

Créez le service de backend régional en envoyant une requête POST à la méthode regionBackendServices.insert. Remplacez PROJECT_ID par l'ID du projet.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/backendServices

{
"name": "be-ilb",
"backends": [
  {
    "group": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-a/instanceGroups/ig-a",
    "balancingMode": "CONNECTION"
  },
  {
    "group": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-c/instanceGroups/ig-c",
    "balancingMode": "CONNECTION"
    "failover": true
  }
],
"failoverPolicy": {
  "failoverRatio": 0.75
},
"healthChecks": [
  "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/healthChecks/hc-http-80"
],
"loadBalancingScheme": "INTERNAL",
"connectionDraining": {
  "drainingTimeoutSec": 0
 }
}

Créez la règle de transfert en envoyant une requête POST à la méthode forwardingRules.insert. Remplacez PROJECT_ID par l'ID du projet.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/forwardingRules

{
"name": "fr-ilb",
"IPAddress": "10.1.2.99",
"IPProtocol": "TCP",
"ports": [
  "80", "8008", "8080", "8088"
],
"loadBalancingScheme": "INTERNAL",
"subnetwork": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/subnetworks/lb-subnet",
"network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network",
"backendService": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/backendServices/be-ilb",
"networkTier": "PREMIUM"
}

Test

Ces tests vous montrent comment valider la configuration de votre équilibreur de charge et en savoir plus sur son comportement attendu.

Procédure de test client

Cette procédure contacte l'équilibreur de charge à partir de la VM cliente. Suivez cette procédure pour effectuer les autres tests.

  1. Connectez-vous à l'instance de VM cliente.

    gcloud compute ssh vm-client --zone=us-west1-a
    
  2. Envoyez une requête Web à l'équilibreur de charge à l'aide de curl pour contacter son adresse IP.

    curl http://10.1.2.99
    
  3. Notez le texte renvoyé par la commande curl. Le nom de la VM de backend qui génère la réponse est affiché dans ce texte, par exemple : Page served from: vm-a1.

Test de l'état initial

Une fois que vous avez configuré l'exemple d'équilibreur de charge, les quatre VM de backend doivent être opérationnelles :

  • Les deux VM principales, vm-a1 et vm-a2
  • Les deux VM de secours, vm-c1 et vm-c2

Suivez la procédure de test client. Répétez la deuxième étape plusieurs fois. Le comportement attendu est que le trafic soit desservi par les deux VM principales, vm-a1 et vm-a2, car elles sont toutes deux opérationnelles. Vous devriez voir chaque VM principale fournir une réponse une fois environ la moitié du temps, car aucune affinité de session n'a été configurée pour cet équilibreur de charge.

Test du basculement

Ce test simule l'échec de vm-a1 afin que vous puissiez observer le comportement de basculement.

  1. Connectez-vous à la VM vm-a1.

    gcloud compute ssh vm-a1 --zone=us-west1-a
    
  2. Arrêtez le serveur Web Apache. Au bout de dix secondes, Google Cloud considère cette VM comme étant non opérationnelle. (La vérification d'état hc-http-80 que vous avez créée dans la configuration utilise l'intervalle entre deux tests par défaut de cinq secondes et le seuil non opérationnel de deux vérifications consécutives en échec.)

    sudo apachectl stop
    
  3. Suivez la procédure de test client. Répétez la deuxième étape plusieurs fois. Le comportement attendu est que le trafic soit desservi par les deux VM de secours, vm-c1 et vm-c2. Étant donné qu'une seule VM principale, vm-a2, est opérationnelle, le ratio entre les VM principales opérationnelles et le total des VM principales est de 0.5. Ce nombre est inférieur au seuil de basculement défini sur 0.75. Google Cloud a donc reconfiguré le pool actif de l'équilibreur de charge pour utiliser les VM de secours. Vous devriez voir chaque VM de secours fournir une réponse environ la moitié du temps tant qu'aucune affinité de session n'a été configurée pour cet équilibreur de charge.

Test de la restauration

Ce test simule la restauration en redémarrant le serveur Apache sur vm-a1.

  1. Connectez-vous à la VM vm-a1.

    gcloud compute ssh vm-a1 --zone=us-west1-a
    
  2. Démarrez le serveur Web Apache et attendez 10 secondes.

    sudo apachectl start
    
  3. Suivez la procédure de test client. Répétez la deuxième étape plusieurs fois. Le comportement attendu est que le trafic soit desservi par les deux VM principales, vm-a1 et vm-a2. Les VM principales étant opérationnelles, le rapport entre les VM principales et opérationnelles est de 1.0, supérieur au seuil de basculement de 0.75. Google Cloud a donc configuré le pool actif pour réutiliser les VM principales.

Ajouter d'autres VM de backend

Cette section élargit l'exemple de configuration en ajoutant des VM principales et des VM de secours à l'équilibreur de charge. Pour cela, deux autres groupes d'instances backend sont créés afin de démontrer que vous pouvez répartir les VM principales et les VM de secours entre plusieurs zones de la même région :

  • Un troisième groupe d'instances, ig-d dans us-west1-c, sert de backend principal avec deux VM :
    • vm-d1
    • vm-d2
  • Un quatrième groupe d'instances, ig-b dans us-west1-a, sert de backend de basculement avec deux VM :
    • vm-b1
    • vm-b2

L'architecture modifiée de cet exemple se présente comme suit :

Basculement de l'équilibreur de charge réseau passthrough interne multizone
Basculement de l'équilibreur de charge réseau passthrough interne multizone (cliquez pour agrandir).

Créer des VM et des groupes d'instances supplémentaires

Pour créer des VM principales et des VM de secours supplémentaires ainsi que des groupes d'instances non gérés correspondants, procédez comme suit.

Console

Créer des VM de backend

  1. Dans Google Cloud Console, accédez à la page Instances de VM.

    Accéder à la page "Instances de VM"

  2. Répétez les étapes ci-dessous pour créer quatre VM, en utilisant les combinaisons de noms et de zones suivantes :

    • Nom : vm-b1, zone : us-west1-a
    • Nom : vm-b2, zone : us-west1-a
    • Nom : vm-d1, zone : us-west1-c
    • Nom : vm-d2, zone : us-west1-c
  3. Cliquez sur Créer une instance.

  4. Définissez le Nom comme indiqué à l'étape 2.

  5. Dans le champ Région, choisissez us-west1, puis sélectionnez une zone comme indiqué à l'étape 2.

  6. Dans la section Disque de démarrage, assurez-vous que l'image sélectionnée est Debian GNU/Linux 10 (buster). Si nécessaire, cliquez sur Sélectionner pour modifier l'image.

  7. Cliquez sur Options avancées et apportez les modifications suivantes :

    • Cliquez sur Mise en réseau et ajoutez les tags réseau suivants : allow-ssh et allow-health-check.
    • Cliquez sur le bouton de modification sous Interfaces réseau, apportez les modifications suivantes, puis cliquez sur OK :
      • Réseau : lb-network
      • Sous-réseau : lb-subnet
      • Adresse IP interne principale : éphémère (automatique)
      • Adresse IP externe : Éphémère
    • Cliquez sur Gestion. Dans le champ Script de démarrage, copiez et collez le contenu de script suivant. Le contenu du script est identique pour les quatre VM :

      #! /bin/bash
      apt-get update
      apt-get install apache2 -y
      a2ensite default-ssl
      a2enmod ssl
      vm_hostname="$(curl -H "Metadata-Flavor:Google" \
      http://metadata.google.internal/computeMetadata/v1/instance/name)"
      echo "Page served from: $vm_hostname" | \
      tee /var/www/html/index.html
      systemctl restart apache2
      
  8. Cliquez sur Create (Créer).

Créer des groupes d'instances

  1. Dans la console Google Cloud, accédez à la page Groupes d'instances.

    Accéder à la page "Groupes d'instances"

  2. Répétez les étapes ci-dessous pour créer deux groupes d'instances non gérés, comportant chacun deux VM, à l'aide des combinaisons suivantes.

    • Groupe d'instances : ig-b, zone : us-west1-a, VM : vm-b1 et vm-b2
    • Groupe d'instances : ig-d, zone : us-west1-c, VM : vm-d1 et vm-d2
  3. Cliquez sur Créer un groupe d'instances.

  4. Cliquez sur Nouveau groupe d'instances non géré.

  5. Définissez le Nom comme indiqué à l'étape 2.

  6. Dans la section Emplacement, sélectionnez us-west1 pour la région, puis choisissez une zone comme indiqué à l'étape 2.

  7. Pour Réseau, saisissez la valeur suivante : lb-network.

  8. Pour Sous-réseau, saisissez la valeur suivante : lb-subnet.

  9. Dans la section Instances de VM, ajoutez les VM comme indiqué à l'étape 2.

  10. Cliquez sur Create (Créer).

gcloud

  1. Créez quatre VM en exécutant la commande suivante quatre fois, en utilisant ces quatre combinaisons pour VM_NAME et ZONE. Le contenu du script est identique pour les quatre VM.

    • VM_NAME : vm-b1 et ZONE : us-west1-a
    • VM_NAME : vm-b2 et ZONE : us-west1-a
    • VM_NAME : vm-d1 et ZONE : us-west1-c
    • VM_NAME : vm-d2 et ZONE : us-west1-c
    gcloud compute instances create VM_NAME \
        --zone=ZONE \
        --image-family=debian-10 \
        --image-project=debian-cloud \
        --tags=allow-ssh,allow-health-check \
        --subnet=lb-subnet \
        --metadata=startup-script='#! /bin/bash
          apt-get update
          apt-get install apache2 -y
          a2ensite default-ssl
          a2enmod ssl
          vm_hostname="$(curl -H "Metadata-Flavor:Google" \
          http://metadata.google.internal/computeMetadata/v1/instance/name)"
          echo "Page served from: $vm_hostname" | \
          tee /var/www/html/index.html
          systemctl restart apache2'
    
  2. Créez les deux groupes d'instances non gérés dans chaque zone :

    gcloud compute instance-groups unmanaged create ig-b \
        --zone=us-west1-a
    gcloud compute instance-groups unmanaged create ig-d \
        --zone=us-west1-c
    
  3. Ajoutez les VM aux groupes d'instances appropriés :

    gcloud compute instance-groups unmanaged add-instances ig-b \
        --zone=us-west1-a \
        --instances=vm-b1,vm-b2
    gcloud compute instance-groups unmanaged add-instances ig-d \
        --zone=us-west1-c \
        --instances=vm-d1,vm-d2
    

API

Créez quatre VM de backend en envoyant quatre requêtes POST à la méthode instances.insert :

Pour les quatre VM, utilisez les noms et zones de VM suivants :

  • VM_NAME : vm-b1 et ZONE : us-west1-a
  • VM_NAME : vm-b2 et ZONE : us-west1-a
  • VM_NAME : vm-d1 et ZONE : us-west1-c
  • VM_NAME : vm-d2 et ZONE : us-west1-c

Remplacez l'élément suivant :

  • PROJECT_ID : ID de votre projet.
  • DEBIAN_IMAGE_NAME : nom de l'image Debian pour l'instance. Vous pouvez obtenir la valeur DEBIAN_IMAGE_NAME actuelle en exécutant la commande gcloud suivante :

    gcloud compute images list \
     --filter="family=debian-10"
    

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances

{
 "name": "VM_NAME",
 "tags": {
   "items": [
     "allow-health-check",
     "allow-ssh"
   ]
 },
 "machineType": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/machineTypes/e2-standard-2",
 "canIpForward": false,
 "networkInterfaces": [
   {
     "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network",
     "subnetwork": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/subnetworks/lb-subnet",
     "accessConfigs": [
       {
         "type": "ONE_TO_ONE_NAT",
         "name": "external-nat",
         "networkTier": "PREMIUM"
       }
     ]
   }
 ],
 "disks": [
   {
     "type": "PERSISTENT",
     "boot": true,
     "mode": "READ_WRITE",
     "autoDelete": true,
     "deviceName": "VM_NAME",
     "initializeParams": {
       "sourceImage": "projects/debian-cloud/global/images/DEBIAN_IMAGE_NAME",
       "diskType": "projects/PROJECT_ID/zones/ZONE/diskTypes/pd-standard",
       "diskSizeGb": "10"
     }
   }
 ],
 "metadata": {
   "items": [
     {
       "key": "startup-script",
       "value": "#! /bin/bash\napt-get update\napt-get install apache2 -y\na2ensite default-ssl\na2enmod ssl\nvm_hostname=\"$(curl -H \"Metadata-Flavor:Google\" \\\nhttp://metadata.google.internal/computeMetadata/v1/instance/name)\"\necho \"Page served from: $vm_hostname\" | \\\ntee /var/www/html/index.html\nsystemctl restart apache2"
     }
   ]
 },
 "scheduling": {
   "preemptible": false
 },
 "deletionProtection": false
}

Créez deux groupes d'instances en envoyant une requête POST à la méthode instanceGroups.insert. Remplacez PROJECT_ID par l'ID du projet.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-a/instanceGroups

{
 "name": "ig-b",
 "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network",
 "subnetwork": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/subnetworks/lb-subnet"
}

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-c/instanceGroups

{
 "name": "ig-d",
 "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network",
 "subnetwork": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/subnetworks/lb-subnet"
}

Ajoutez des instances à chaque groupe d'instances en envoyant une requête POST à la méthode instanceGroups.addInstances. Remplacez PROJECT_ID par l'ID du projet.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-a/instanceGroups/ig-b/addInstances

{
 "instances": [
   {
     "instance": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-a/instances/vm-b1",
     "instance": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-a/instances/vm-b2"
   }
 ]
}

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-c/instanceGroups/ig-d/addInstances

{
 "instances": [
   {
     "instance": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-c/instances/vm-d1",
     "instance": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-c/instances/vm-d2"
   }
 ]
}

Ajouter un backend principal

Vous pouvez utiliser cette procédure comme modèle pour ajouter un groupe d'instances non géré au service de backend d'un équilibreur de charge réseau passthrough en tant que backend principal. Pour l'exemple de configuration, cette procédure explique comment ajouter le groupe d'instances ig-d en tant que backend principal à l'équilibreur de charge be-ilb.

Console

  1. Dans la console Google Cloud, accédez à la page Équilibrage de charge.

    Accéder à la page "Équilibrage de charge"

  2. Dans l'onglet Équilibreurs de charge, cliquez sur le nom d'un équilibreur de charge TCP ou UDP interne (dans cet exemple, be-ilb).

  3. Cliquez sur Modifier .

  4. Dans Configuration du backend, cliquez sur Ajouter un backend et sélectionnez un groupe d'instances non géré (dans cet exemple, ig-d).

  5. Vérifiez que la case Utiliser ce groupe d'instances comme groupe de basculement pour la sauvegarde n'est pas cochée.

  6. Cliquez sur Terminé, puis sur Mettre à jour.

gcloud

Utilisez la commande gcloud suivante pour ajouter un backend principal au service de backend d'un équilibreur de charge réseau passthrough interne.

gcloud compute backend-services add-backend BACKEND_SERVICE_NAME \
   --instance-group INSTANCE_GROUP_NAME \
   --instance-group-zone INSTANCE_GROUP_ZONE \
   --region REGION

Remplacez les éléments suivants :

  • BACKEND_SERVICE_NAME : nom du service de backend de l'équilibreur de charge. Pour l'exemple, utilisez be-ilb.
  • INSTANCE_GROUP_NAME : nom du groupe d'instances à ajouter en tant que backend principal. Pour l'exemple, utilisez ig-d.
  • INSTANCE_GROUP_ZONE est la zone dans laquelle le groupe d'instances est défini. Pour l'exemple, utilisez us-west1-c.
  • REGION : la région de l'équilibreur de charge. Pour l'exemple, utilisez us-west1.

API

Ajouter un backend de basculement à un service de backend existant avec la méthode regionBackendServices.patch.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/backendServices/BACKEND_SERVICE_NAME

{
  "backends":
  [
    {
      "balancingMode": "connection",
      "failover": false,
      "group": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/INSTANCE_GROUP_ZONE/instanceGroups/INSTANCE_GROUP_NAME"
    }
  ]
}

Remplacez l'élément suivant :

  • PROJECT_ID : ID de votre projet.
  • REGION : la région de l'équilibreur de charge. Pour l'exemple, utilisez us-west1.
  • BACKEND_SERVICE_NAME : nom du service de backend de l'équilibreur de charge. Pour l'exemple, utilisez be-ilb.
  • INSTANCE_GROUP_NAME : nom du groupe d'instances à ajouter en tant que backend principal. Pour l'exemple, utilisez ig-d.
  • INSTANCE_GROUP_ZONE : la zone dans laquelle le groupe d'instances est défini. Pour l'exemple, utilisez us-west1-c.

Ajouter un backend de basculement

Vous pouvez utiliser cette procédure comme modèle pour ajouter un groupe d'instances non géré au service de backend d'un équilibreur de charge réseau passthrough interne existant en tant que backend de basculement. Pour l'exemple de configuration, cette procédure explique comment ajouter le groupe d'instances ig-b en tant que backend de basculement à l'équilibreur de charge be-ilb.

Console

  1. Dans la console Google Cloud, accédez à la page Équilibrage de charge.

    Accéder à la page "Équilibrage de charge"

  2. Dans l'onglet Équilibreurs de charge, cliquez sur le nom d'un équilibreur de charge existant de type TCP/UDP (interne) (dans cet exemple, be-ilb).

  3. Cliquez sur Modifier .

  4. Dans Configuration du backend, cliquez sur Ajouter un backend et sélectionnez un groupe d'instances non géré (dans cet exemple, ig-b).

  5. Cochez la case Utiliser ce groupe d'instances comme groupe de basculement pour la sauvegarde.

  6. Cliquez sur Terminé, puis sur Mettre à jour.

gcloud

Utilisez la commande gcloud suivante pour ajouter un backend de basculement au service de backend d'un équilibreur de charge réseau passthrough interne.

gcloud compute backend-services add-backend BACKEND_SERVICE_NAME \
   --instance-group INSTANCE_GROUP_NAME \
   --instance-group-zone INSTANCE_GROUP_ZONE \
   --region REGION \
   --failover

Remplacez les éléments suivants :

  • BACKEND_SERVICE_NAME : nom du service de backend de l'équilibreur de charge. Pour l'exemple, utilisez be-ilb.
  • INSTANCE_GROUP_NAME : nom du groupe d'instances à ajouter en tant que backend principal. Pour l'exemple, utilisez ig-b.
  • INSTANCE_GROUP_ZONE est la zone dans laquelle le groupe d'instances est défini. Pour l'exemple, utilisez us-west1-a.
  • REGION est la région de l'équilibreur de charge. Pour l'exemple, utilisez us-west1.

API

Ajouter un backend de basculement à un service de backend existant avec la méthode regionBackendServices.patch.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/backendServices/BACKEND_SERVICE_NAME

{
  "backends": 
  [
    {
      "balancingMode": "connection",
      "failover": true,
      "group": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/INSTANCE_GROUP_ZONE/instanceGroups/INSTANCE_GROUP_NAME"
    }
  ]
}

Remplacez l'élément suivant :

  • PROJECT_ID : ID de votre projet.
  • BACKEND_SERVICE_NAME : nom du service de backend de l'équilibreur de charge. Pour l'exemple, utilisez be-ilb.
  • INSTANCE_GROUP_NAME : nom du groupe d'instances à ajouter en tant que backend principal. Pour l'exemple, utilisez ig-b.
  • INSTANCE_GROUP_ZONE est la zone dans laquelle le groupe d'instances est défini. Pour l'exemple, utilisez us-west1-a.
  • REGION : la région de l'équilibreur de charge. Pour l'exemple, utilisez us-west1.

Convertir un backend principal ou un backend de basculement

Vous pouvez convertir un backend principal en backend de basculement, ou inversement, sans avoir à supprimer le groupe d'instances du service de backend de l'équilibreur de charge passthrough interne.

Console

  1. Dans la console Google Cloud, accédez à la page Équilibrage de charge.

    Accéder à la page "Équilibrage de charge"

  2. Dans l'onglet Équilibreurs de charge, cliquez sur le nom d'un équilibreur de charge existant de type TCP/UDP (interne).

  3. Cliquez sur Modifier .

  4. Dans Configuration du backend, cliquez sur le nom de l'un des groupes d'instances du backend. Puis :

    • Pour créer un backend de basculement, cochez Utiliser ce groupe d'instances comme groupe de basculement pour la sauvegarde.
    • Pour créer un backend principal, décochez la case Utiliser ce groupe d'instances comme groupe de basculement pour la sauvegarde.
  5. Cliquez sur Terminé, puis sur Mettre à jour.

gcloud

Utilisez la commande gcloud suivante pour convertir un backend principal existant en backend de basculement :

gcloud compute backend-services update-backend BACKEND_SERVICE_NAME \
   --instance-group INSTANCE_GROUP_NAME \
   --instance-group-zone INSTANCE_GROUP_ZONE \
   --region REGION \
   --failover

Utilisez la commande gcloud suivante pour convertir un backend de basculement existant en backend principal :

gcloud compute backend-services update-backend BACKEND_SERVICE_NAME \
   --instance-group INSTANCE_GROUP_NAME \
   --instance-group-zone INSTANCE_GROUP_ZONE \
   --region REGION \
   --no-failover

Remplacez l'élément suivant :

  • BACKEND_SERVICE_NAME : nom du service de backend de l'équilibreur de charge
  • INSTANCE_GROUP_NAME : nom du groupe d'instances à ajouter en tant que backend principal
  • INSTANCE_GROUP_ZONE : la zone dans laquelle le groupe d'instances est défini
  • REGION : la région de l'équilibreur de charge

API

Convertissez un backend principal en backend de basculement, ou inversement, à l'aide de la méthode regionBackendServices.patch.

Pour convertir un backend principal en backend de basculement, procédez comme suit :

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/backendServices/BACKEND_SERVICE_NAME

{
  "backends": 
  [
    {
      "failover": true,
      "group": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/INSTANCE_GROUP_ZONE/instanceGroups/INSTANCE_GROUP_NAME"
    }
  ]
}

Pour convertir un backend de basculement en backend principal, procédez comme suit :

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/backendServices/BACKEND_SERVICE_NAME

{
  "backends": 
  [
    {
      "failover": false,
      "group": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/INSTANCE_GROUP_ZONE/instanceGroups/INSTANCE_GROUP_NAME"
    }
  ],
}

Remplacez l'élément suivant :

  • PROJECT_ID : ID de votre projet.
  • BACKEND_SERVICE_NAME : nom du service de backend de l'équilibreur de charge
  • INSTANCE_GROUP_NAME : nom du groupe d'instances à ajouter en tant que backend principal
  • INSTANCE_GROUP_ZONE : la zone dans laquelle le groupe d'instances est défini
  • REGION : la région de l'équilibreur de charge

Configurer les règles de basculement

Cette section décrit comment gérer une règle de basculement pour le service de backend d'un équilibreur de charge réseau passthrough interne. Une règle de basculement comprend les éléments suivants :

  • Taux de basculement
  • Suppression du trafic lorsqu'aucune VM de backend n'est opérationnelle
  • Drainage de connexion en basculement

Pour plus d'informations sur les paramètres d'une règle de basculement, consultez les pages suivantes :

Définir une règle de basculement

Les instructions suivantes décrivent comment définir la règle de basculement pour un équilibreur de charge réseau passthrough interne existant.

Console

Pour définir une stratégie de basculement à l'aide de la console Google Cloud, vous devez disposer d'au moins un backend de basculement.

  1. Dans la console Google Cloud, accédez à la page Équilibrage de charge.

    Accéder à la page "Équilibrage de charge"

  2. Dans l'onglet Équilibreurs de charge, cliquez sur le nom d'un équilibreur de charge existant de type TCP/UDP (interne).

  3. Cliquez sur Modifier .

  4. Vérifiez que vous disposez d'au moins un backend de basculement. La case Utiliser ce groupe d'instances comme groupe de basculement pour la sauvegarde doit être cochée pour au moins un des backends de l'équilibreur de charge.

  5. Cliquez sur Configurations avancées.

    • Sous Règle de basculement, définissez le Taux de basculement sur une valeur comprise entre 0.0 et 1.0, inclus.
    • Cochez la case Activer la suppression du trafic si vous souhaitez supprimer le trafic lorsqu'aucune VM active ni aucune VM de secours n'est opérationnelle.
    • Cochez la case Activer le drainage des connexions en basculement si vous souhaitez interrompre rapidement les connexions pendant le basculement.
  6. Cliquez sur Vérification et finalisation, puis sur Mettre à jour.

gcloud

Pour définir une stratégie de basculement à l'aide de gCloud CLI, mettez à jour le service de backend de l'équilibreur de charge :

gcloud compute backend-services update BACKEND_SERVICE_NAME \
   --region REGION \
   --failover-ratio FAILOVER_RATIO \
   --drop-traffic-if-unhealthy \
   --no-connection-drain-on-failover

Remplacez les éléments suivants :

  • BACKEND_SERVICE_NAME : nom du service de backend de l'équilibreur de charge. Pour l'exemple, utilisez be-ilb.
  • REGION : la région de l'équilibreur de charge. Pour l'exemple, utilisez us-west1.
  • FAILOVER_RATIO : taux de basculement. Les valeurs possibles sont comprises entre 0.0 et 1.0, inclus. Pour l'exemple, utilisez 0.75.
  • --drop-traffic-if-unhealthy donne à l'équilibreur de charge l'ordre d'interrompre le trafic lorsqu'aucune VM principale ni aucune VM de secours n'est opérationnelle. Remplacez cette valeur par --no-drop-traffic-if-unhealthy si vous souhaitez répartir le trafic entre toutes les VM principales lorsqu'aucune VM de backend n'est opérationnelle.
  • --no-connection-drain-on-failover donne à l'équilibreur de charge l'ordre d'interrompre rapidement les connexions TCP existantes pendant le basculement. Utilisez --connection-drain-on-failover pour activer le drainage de connexion lors du basculement.

API

Utilisez la méthode regionBackendServices.patch pour définir la stratégie de basculement.

PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/backendServices/BACKEND_SERVICE_NAME

{
  "failoverPolicy":
  {
    "failoverRatio": FAILOVER_RATIO,
    "dropTrafficIfUnhealthy": [true|false],
    "disableConnectionDrainOnFailover": [true|false]
  }
}

Remplacez l'élément suivant :

  • PROJECT_ID : ID de votre projet.
  • REGION : la région de l'équilibreur de charge
  • BACKEND_SERVICE_NAME : nom du service de backend de l'équilibreur de charge
  • FAILOVER_RATIO : taux de basculement. Les valeurs possibles sont comprises entre 0.0 et 1.0, inclus.
  • Définir dropTrafficIfUnhealthy sur true donne à l'équilibreur de charge l'ordre d'interrompre le trafic lorsqu'aucune VM principale, ni aucune VM de secours n'est opérationnelle. Définissez cette valeur sur false si vous souhaitez répartir le trafic entre toutes les VM principales lorsqu'aucune VM de backend n'est opérationnelle.
  • Définir disableConnectionDrainOnFailover sur true donne à l'équilibreur de charge l'ordre d'interrompre rapidement les connexions TCP existantes pendant le basculement. Définissez cette valeur sur false pour activer le drainage de connexion lors du basculement.

Afficher une règle de basculement

Les instructions suivantes décrivent comment afficher la règle de basculement pour un équilibreur de charge réseau passthrough interne.

Console

La console Google Cloud affiche les paramètres de la stratégie de basculement lorsque vous modifiez un équilibreur de charge réseau passthrough interne. Pour obtenir des instructions, consultez la section Définir une règle de basculement.

gcloud

Pour répertorier les paramètres de la stratégie de basculement à l'aide de gCloud CLI, exécutez la commande ci-dessous. Les paramètres non définis dans une règle de basculement utilisent les valeurs de règles de basculement par défaut.

gcloud compute backend-services describe BACKEND_SERVICE_NAME \
   --region REGION \
   --format="get(failoverPolicy)"

Remplacez l'élément suivant :

  • BACKEND_SERVICE_NAME : nom du service de backend de l'équilibreur de charge
  • REGION : la région de l'équilibreur de charge

API

Utilisez la méthode regionBackendServices.get pour afficher la stratégie de basculement.

La réponse à la requête API affiche la règle de basculement. Voici un exemple :

GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/backendServices/BACKEND_SERVICE_NAME

Remplacez l'élément suivant :

  • PROJECT_ID : ID de votre projet.
  • REGION : la région de l'équilibreur de charge
  • BACKEND_SERVICE_NAME : nom du service de backend de l'équilibreur de charge
{
...
"failoverPolicy": {
  "disableConnectionDrainOnFailover": false,
  "dropTrafficIfUnhealthy": false,
  "failoverRatio": 0.75
...
}

Étapes suivantes