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

Base de connaissances

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


Icons/System/eye-open Created with Sketch. 27 vues 01.10.2025 Cloud / Network Gateway for Public Cloud

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.

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

É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

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:

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

Il existe deux façons d'accéder à l'interface Horizon :

Sélectionnez la région appropriée dans le menu déroulant en haut à gauche.

Dans l'onglet de gauche, cliquez sur l'onglet Network puis sur Load Balancers.

Cliquez sur le load balancer concerné.

Dans l'onglet, cliquez sur Pools puis sur le pool dans lequel se trouve le membre.

public-cloud

Dans l'onglet, cliquez sur Members puis sur Edit Member.

Mettre à jour le tableau de bord Openstack membre

Modifiez le poids (Weight) à 0, puis cliquer sur Update.

Update weight

Pour empêcher le trafic d'être routé vers un membre spécifique, définissez son poids sur 0 :

$ openstack loadbalancer member set --weight 0 <pool> <member_0>

É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.

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.

Pour vérifier l'état du membre, cliquez sur Network dans l'onglet de gauche puis sur Load Balancers.

Cliquez sur le load balancer concerné.

Dans l'onglet, cliquez sur Pools puis sur le pool dans lequel se trouve le membre.

Cliquez sur l'onglet Members :

Mettre à jour le poids

Vous pouvez vérifier l'état du membre à l'aide de la commande suivante :

$ openstack loadbalancer member list <pool_name>

Vous devriez voir :

---------------------------------------------------------------------------------------------------
id                                   name       provisioning_status  operating_status   weight
---------------------------------------------------------------------------------------------------
27cfe834-7fef-4548-b71b-fa0ce67222f8 member_1   ACTIVE               ONLINE             1
118756ba-2cae-4141-b9c2-8b18b120c8dc member_0   ACTIVE               DRAINING           0
---------------------------------------------------------------------------------------------------

Créez un fichier .tf pour gérer une ressource de membres V2 dans OpenStack. Par exemple :

resource "openstack_lb_monitor_v2" "monitor_1" {
 pool_id     = "<POOL_ID>"
 member {
 address       = "10.0.0.158"
 protocol_port = 8080
 weight = 0
 }

 member {
 address       = "10.0.0.200"
 protocol_port = 8080
 weight = 1
 }
}

Remplacez <POOL_ID> par l'ID de votre Pool. Pour plus de détails sur les options disponibles pour cette ressource, référez-vous à la documentation officielle pour la ressource openstack_lb_monitor_v2 sur le registre Terraform.

Application de la configuration

Pour appliquer votre configuration Terraform :

  • Exécutez terraform init pour initialiser le répertoire de travail Terraform.
  • Exécutez terraform apply pour appliquer les modifications définies dans votre configuration.

Vérification

Après avoir exécuté terraform apply, Terraform vous fournira un résumé des ressources créées, modifiées ou supprimées. Ceci confirme la création ou la mise à jour de votre moniteur d'intégrité.

É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) :

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

Connectez-vous à l'interface Horizon.

Sélectionnez la région appropriée dans le menu déroulant en haut à gauche.

Dans l'onglet de gauche, cliquez sur Network, puis sur Load Balancers.

Cliquez sur le load balancer concerné.

Dans l'onglet, cliquez sur Pools puis sur le pool dans lequel se trouve le membre.

Mettre à jour le tableau de bord Openstack membre

Cliquez sur l'onglet Members, puis sur Edit Member à côté du membre correspondant.

Update Member Openstack dashboard

Vous pouvez modifier le Poids (Weight) à 1 puis cliquer sur Update

public-cloud

Pour restaurer le trafic routé vers un membre spécifique, définissez son poids sur 1 :

$ openstack loadbalancer member set --weight 1 <pool> <member_0>

Créez un fichier .tf pour gérer une ressource de membres V2 dans OpenStack. Par exemple :

resource "openstack_lb_monitor_v2" "monitor_1" {
 pool_id     = "<POOL_ID>"
 member {
 address       = "10.0.0.158"
 protocol_port = 8080
 weight = 1
 }

 member {
 address       = "10.0.0.200"
 protocol_port = 8080
 weight = 1
 }
}

Remplacez <POOL_ID> par l'ID de votre Pool. Pour plus de détails sur les options disponibles pour cette ressource, référez-vous à la documentation officielle pour la ressource openstack_lb_monitor_v2 sur le registre Terraform.

Application de la configuration

Pour appliquer votre configuration Terraform :

  • Exécutez terraform init pour initialiser le répertoire de travail Terraform.
  • Exécutez terraform apply pour appliquer les modifications définies dans votre configuration.

Vérification

Après avoir exécuté terraform apply, Terraform vous fournira un résumé des ressources créées, modifiées ou supprimées. Cela confirme la création ou la mise à jour de votre Health Monitor.

É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.

Articles associés