Utiliser la fonctionnalité de poids sur un membre du Load Balancer

Objectif

Ce guide explique comment utiliser la fonctionnalité de poids pour supprimer temporairement un membre du Load Balancer de la réception du trafic à des fins de maintenance.

Utilisation de la fonction de pondération

Octavia prend en charge la configuration du poids des membres de 0 à 256.

Info

Le poids d'un membre détermine la portion des requêtes ou des connexions qu'il traite par rapport aux autres membres du pool. Un poids plus élevé signifie qu'il recevra plus de trafic. Par exemple, un membre avec un poids de 10 reçoit cinq fois plus de trafic qu'un membre avec un poids de 2.

Le poids doit être un nombre compris entre 1 et 256. Une valeur de 0 signifie que le membre ne reçoit pas de nouvelles connexions mais continue à traiter les connexions existantes.

En définissant le poids sur 0, le membre est effectivement retiré du pool de trafic, ce qui vous permet d'effectuer des mises à niveau ou des opérations de maintenance sans interruption de service.

Prérequis

En pratique


Accès à l'espace client OVHcloud

  • Lien direct : Projets Public Cloud
  • Pour accéder à vos services : Public Cloud > Sélectionnez votre projet

Étape 1 - Créer un Load Balancer avec deux membres

Utilisez le référentiel suivant pour créer un Load Balancer avec deux membres :

Vérifiez que les deux membres reçoivent du trafic en exécutant ce script :

#!/bin/sh

while true; do
  curl http://<FIP>/
  sleep 1
done

Les réponses des deux membres doivent être alternées :

<html><head><title>Load Balanced Member 1</title></head><body><h1>You hit your OVHCloud load balancer member #1 !</h1></body></html>
<html><head><title>Load Balanced Member 0</title></head><body><h1>You hit your OVHCloud load balancer member #0 !</h1></body></html>

Étape 2 - Définir le poids d'un membre sur 0

API OVHcloud
Horizon
CLI

Connectez-vous à l’interface APIv6 d’OVHcloud en utilisant ce guide de premiers pas avec l’API OVHcloud.

Si l'identifiant du projet est inconnu, les appels d'API ci-dessous permettent de le récupérer.

Cet appel permet de récupérer la liste des projets:

GET/cloud/project

Cet appel identifie le projet via le champ « description ».

L'appel ci-dessous permet de récupérer l'identifiant du pool. Complétez les champs avec les informations précédemment obtenues :

  • serviceName : ID du projet Public Cloud sous la forme d'une chaîne de 32 caractères.
  • regionName : nom de votre région.

Vous pouvez laisser le champ « loadbalancerId » vide afin d'obtenir tous les pools créés dans la région spécifiée.

L'appel ci-dessous permet de récupérer l'identifiant du membre (member), complétez les champs avec les informations précédemment obtenues :

  • serviceName : ID du projet Public Cloud sous la forme d'une chaîne de 32 caractères.
  • regionName : nom de votre région.
  • poolId : ID du pool sous la forme d'une chaîne de 32 caractères.

Vous pouvez mettre à jour un membre du pool avec l'appel API suivant :

Remplissez les champs avec les informations précédemment obtenues :

  • serviceName : ID du projet Public Cloud sous la forme d'une chaîne de 32 caractères.
  • regionName : nom de votre région.
  • poolId : ID du pool sous la forme d'une chaîne de 32 caractères.
  • memberId : ID de membre sous forme de chaîne de 32 caractères.
  • weight : Définissez le poids sur 0.

Cliquez sur Execute.

public-cloud

Étape 3 - Vérifier le statut du membre

Après avoir défini le poids du membre sur 0, son statut passe de ONLINE à DRAINING.

Info

Il est important de noter que dans le système actuel, le membre restera dans l'état DRAINING même après que tout le trafic ait été vidé.

Cela peut être déroutant car certains utilisateurs s'attendent à un statut final de DRAINED une fois que tout le trafic a été redirigé. Cependant, le système ne passe pas automatiquement à DRAINED.

  • DRAINING signifie simplement que le membre ne reçoit plus de trafic, et non pas qu'il draine toujours activement le trafic.
  • L'état DRAINED n'est pas encore pris en charge par l'API OpenStack actuelle.

Si avoir un statut final DRAINED est critique pour vos opérations, il est recommandé de soumettre une demande de fonctionnalité à OVHcloud pour cette fonctionnalité lors d'une prochaine mise à jour. Cependant, cela ne sera possible qu'une fois cette fonctionnalité prise en charge par OpenStack.

API OVHcloud
Horizon
CLI
Terraform

Étape 4 - Confirmer que le trafic est dirigé vers le membre actif

Le membre dont le poids est égal à 0 aura un état de fonctionnement (Operating Status) Draining. Exécutez à nouveau le script de test :

#!/bin/sh

while true; do
  curl http://<FIP>/
  sleep 1
done

Vous ne devriez maintenant voir que les réponses de member_1 :

<html><head><title>Load Balanced Member 1</title></head><body><h1>You hit your OVHCloud load balancer member #1 !</h1></body></html>

Étape 5 - Effectuer la maintenance

Maintenant que member_0 ne reçoit plus de trafic, vous pouvez effectuer en toute sécurité des tâches de maintenance ou de mise à niveau.

Étape 6 - Restaurer le trafic vers le membre

Une fois la maintenance terminée, réglez le poids de member_0 sur sa valeur d'origine (par exemple, 1) :

API OVHcloud
Horizon
CLI
Terraform

Vous pouvez mettre à jour un membre du pool avec l'appel API suivant :

Remplissez les champs avec les informations précédemment obtenues :

  • serviceName : ID du projet Public Cloud sous la forme d'une chaîne de 32 caractères.
  • regionName : nom de votre région.
  • poolId : ID du pool sous la forme d'une chaîne de 32 caractères.
  • memberId : ID de membre sous forme de chaîne de 32 caractères.
  • weight : Définissez le poids sur 1.

Cliquez sur Execute.

public-cloud

Étape 7 - Vérifier que les deux membres reçoivent bien le trafic

Réutilisez le script :

#!/bin/sh
while true; do
curl http://<FIP>/
sleep 1
done

Vous devriez voir des réponses alternées provenant des deux membres :

<html><head><title>Load Balanced Member 1</title></head><body><h1>You hit your OVHCloud load balancer member #1 !</h1></body></html>
<html><head><title>Load Balanced Member 0</title></head><body><h1>You hit your OVHCloud load balancer member #0 !</h1></body></html>

Aller plus loin

Rejoignez notre communauté d'utilisateurs.

Cette page vous a-t-elle aidé ?