Rubrique précédente: CommutateursRubrique suivante: L3LB - Equilibreur de charge TCP/UDP


HALB - Equilibreur de charge HTTP

Dernière version : 3.1.2-1

HALB - Equilibreur de charge HTTP en fonction de la session

Aperçu rapide

Catalogue

System (Système)

Catégorie

Commutateurs

Volumes d'utilisateur

non

Min. mémoire

96M

SE

Linux

Contraintes

non

Présentation

HALB est un commutateur qui permet de répartir la charge de travail entre plusieurs serveurs Web du même type ou de types différents.. HALB est basé sur un package de logiciels d'équilibrage de charge HAProxy TCP/HTTP qui est conçu pour être extrêmement rapide et consommer très peu de ressources.

HALB exécute des fonctions d'équilibrage de charge à l'aide de plusieurs algorithmes. Il effectue un équilibrage de charge simple par tourniquet en répartissant uniformément la charge entre les serveurs principaux. Il prend également en charge les sessions persistantes en reliant le client à un serveur principal particulier à l'aide de l'adresse IP source de la requête en tant que clé. Etant donné qu'il utilise des cookies de session, toute nouvelle session qui n'a pas de cookies de session est distribuée selon l'algorithme du tourniquet. HALB prend en charge les sessions avec plusieurs cookies et modifie et/ou suit uniquement les cookies nécessaires, en laissant les autres intacts. Vous pouvez relier une session ou un client spécifique à un serveur Web principal ou à une application donnée à l'aide de l'association de cookies. Les cookies existants peuvent être modifiés de façon transparente par HALB pour les clients qui ne prennent pas en charge les requêtes avec plusieurs cookies.

HALB surveille en permanence l'état de contrôle de l'intégrité de tous les serveurs Web principaux. Les contrôles de l'état d'intégrité réalisés par HALB peuvent inclure un simple test de connexion TCP ou une requête HTTP plus complexe (spécifiée sur le périmètre d'HALB). En cas de panne serveur détectée par HALB à l'aide de la méthode de contrôle de l'intégrité paramétrée, HALB bascule le trafic vers un serveur alternatif. En cas de reprise éventuelle du serveur ayant échoué, HALB peut faire rebasculer le trafic sur le serveur récupéré.

HALB présente une interface de service Web sur son terminal ctl. Cette interface permet aux utilisateurs d'activer/de désactiver facilement les terminaux de sortie out1 - out8 et de récupérer l'état de tous les terminaux. Ceci s'avère utile en cas d'échec d'un système principal (p.ex. au niveau d'une base de données ou d'une appliance de stockage), lorsque l'application proprement dite peut désactiver automatiquement le trafic vers un ensemble spécifique de serveurs. Dans ce cas, HALB n'est lui-même pas capable de détecter ce type d'échec. Il appartient donc à l'application de détecter l'échec et de désactiver l'ensemble correspondant de serveurs principaux.

HALB conserve des statistiques détaillées y compris l'état du serveur principal, le nombre de requêtes traitées par serveur, le nombre d'erreurs, etc. Le terminal mon fournit des statistiques et le terminal ui (qui se présente comme une interface utilisateur graphique accessible via un navigateur) fournit également des compteurs distincts.

HALB est conçu pour être extrêmement rapide en utilisant très peu de ressources. Dans des conditions normales, HALB consomme environ 25 Ko de mémoire par session ou 1 Go pour 40 000 sessions simultanées et traite jusqu'à 6000 demandes par seconde.

Ressources

Ressource

Minimum

Maximum

Valeur par défaut

UC

0.1

16

0.4

Mémoire

96 Mo

32 Go

96 Mo

Bande passante

1 Mbit/s

2 Gbits/s

250 Mbits/s

La quantité de mémoire allouée à HALB n'a pas d'influence sur le débit ou le temps de réponse. HALB est une appliance liée à l'UC/à la bande passante.

Terminaux

name

dir

protocol

description

in

in

HTTP

Entrée commune. Les requêtes TCP envoyées au terminal in sont dirigées vers l'une des sorties, à l'aide de la sélection par tourniquet ou des informations de session basées sur la source.

ui

in

HTTP

Traite les requêtes HTTP provenant des clients Web. Traite les protocoles HTTP/1.1 et 1.0.

ctl

in

HTTP

Terminal de contrôle utilisé pour l'activation/la désactivation des sorties et pour la récupération de l'état des terminaux de sortie.

out1-out8

sortie

Indifférent

Sorties équilibrées. Toutes ces sorties peuvent rester non connectées ; le trafic est réparti uniquement entre les sorties connectées et activées. Par défaut, tous les terminaux sont activés.

MON

sortie

CCE

Permet d'envoyer des statistiques de performances et d'utilisation des ressources.

Propriétés

Propriétés générales

name

type

description

mode

Chaîne

Spécifie le mode de fonctionnement et une façon d'utiliser le cookie de session nommé pour l'identification de session. Les valeurs valides sont les suivantes :
passive - le cookie n'est pas modifié. Une valeur de cookie donnée doit toujours être unique et la même valeur ne doit jamais être utilisée par un autre serveur.
sync - La chaîne de cookie dans la réponse HTTP d'un serveur est modifiée pour le rendre unique pour le terminal dont la réponse est venue (en ajoutant un ID de terminal de 4 caractères dans la valeur de cookie). L'ID de terminal est supprimé avant qu'une requête soit transmise à un serveur sur l'un des terminaux outX. Au lieu d'insérer l'ID de terminal, le mappage entre des valeurs de cookie et les terminaux de sortie est le même que lorsque la propriété est définie sur passive, à savoir, la valeur de cookie entière est comparée.
insert - L'équilibreur de charge proprement dit insère un cookie dans les réponses renvoyées au client sur le terminal in, de sorte que lorsque le client envoie les requêtes suivantes avec ce cookie, elles sont dirigées vers le même serveur que la première requête de ce client. Le cookie inséré par HALB ne contient pas de date d'expiration, ce qui signifie qu'il ne doit pas être enregistré de façon permanente par le logiciel client.
source - L'adresse IP source de la requête permet de relier la session à un serveur Web principal spécifique. La propriété de cookie est ignorée.
Valeur par défaut : passive.

cookie_name

Chaîne

Nom du cookie utilisé pour identifier une session. Pour les modes passifs (passive et sync - voir la propriété de mode ci-dessous), il s'agit du nom du cookie utilisé par les serveurs principaux connectés aux sorties out1 - out8 pour identifier des sessions clientes. Pour le mode insert, il s'agit du nom du cookie que HALB doit insérer dans les réponses HTTP afin que chaque client soit "collé" à un seul serveur. Si cette propriété est définie sur la valeur vide, aucun suivi de session n'est effectué et toutes les requêtes sont distribuées simplement à la façon d'un tourniquet. Ignoré pour le mode source.
Valeur par défaut : (vide).

cookie_check_length

Entier

Définit le nombre d'octets de la valeur du cookie utilisés comme clé unique en mode de fonctionnement passif pour correspondre à la session du serveur Web principal. Une valeur par défaut de 10 suffit généralement pour toutes les applications Java et PHP courantes. Cette valeur doit toujours être égale ou inférieure à la longueur de la valeur de cookie.
Valeur par défaut : 10.

max_connections

nombre entier

Nombre maximum de connexions actives simultanément gérées par l'équilibreur de charge. Lorsque ce nombre est atteint, les nouvelles connexions sont toujours acceptées, mais leur traitement est différé jusqu'à la fermeture d'une autre connexion. Au démarrage, HALB détermine automatiquement le nombre maximum de connexions en fonction de la mémoire disponible, le compare à la valeur de cette propriété et utilise la valeur la plus basse. Si cette propriété est égale à 0, la valeur calculée est utilisée. Veuillez noter que ni la mémoire disponible ni aucun paramètre explicite de cette propriété n'exerce d'effet direct sur le débit de l'équilibreur de charge ou son taux de requêtes maximum. Définir un petit nombre (ou une faible quantité de mémoire) n'affecte la réponse que si les serveurs principaux effectuent de longues opérations pour chaque requête (par exemple, des recherches dans la base de données) faisant en sorte que de nombreuses requêtes restent ouvertes simultanément.
Valeur par défaut : 0

backup_outputs

Chaîne

Liste de sorties séparées par des virgules ou des points (out1 - out8) considérée comme sauvegarde. Le trafic est dirigé vers les serveurs de sauvegarde uniquement si tous les serveurs principaux sont indisponibles. Ces serveurs de sauvegarde ont pour objectif d'avertir les clients d'un problème ou de les rediriger au lieu de renvoyer des erreurs à partir d'un serveur principal indisponible ou arrivé à expiration.
Valeur par défaut : (vide).

Propriétés de délai d'expiration

name

type

description

timeout

nombre entier

Délai d'expiration des sessions inactives (exprimé en secondes). Si la valeur définie est zéro, les sessions inactives n'expirent pas. Si la valeur est définie sur une valeur non nulle, les sessions inactives sont redémarrées à l'expiration du délai d'inactivité et les requêtes ayant le cookie "forgotten" sont traitées comme si elles n'avaient aucun cookie et dirigées vers un serveur aléatoire, à l'aide de la méthode de tourniquet habituelle. Cette propriété est uniquement valide en mode passif et est ignorée pour tous les autres modes.
Valeur par défaut : 0

client_timeout

Entier

Délai d'expiration en secondes pour l'attente d'une requête client après avoir établi la connexion.
Valeur par défaut : 150.

server_timeout

Entier

Délai d'expiration en secondes pour l'attente d'une réponse d'un serveur Web principal après avoir établi la connexion.
Valeur par défaut : 150.

conn_timeout

Entier

Délai d'expiration en secondes pour l'établissement d'une connexion TCP. Ce délai inclut les contrôles de l'intégrité. Une attention toute particulière doit être accordée à ce paramètre, car en cas de charge élevée, les contrôles d'intégrité expirent en raison d'une valeur insuffisamment petite, HALB commence à désactiver des sorties. Il est déconseillé de le définir en dessous de 20 secondes.
Valeur par défaut : 20.

Propriétés de contrôle de l'intégrité

name

type

description

healthcheck_url

Chaîne

URL utilisée pour effectuer le contrôle de l'intégrité des serveurs Web principaux dans les méthodes de contrôle de l'intégrité http_get et http_head. Il peut s'agir d'une URL complète (http://host.name/file/to/check/for.php) ou d'un chemin d'accès relatif (/file/to/check/for.php). Si l'adresse spécifiée est une URL, HALB utilise le protocole HTTP/1.1 pendant l'exécution des contrôles d'intégrité à l'aide du nom d'hôte extrait d'UR, dans un en-tête "Host:". Elle permet l'utilisation d'hôtes virtuels. Si l'adresse spécifiée est un chemin d'accès relatif, HALB utilise le protocole HTTP/1.0 et vérifie le document spécifié par cette propriété. Si cette propriété est vide, HALB vérifie la présence de la racine par défaut "/" à l'aide du protocole HTTP/1.0.
Valeur par défaut : (vide).

healthcheck_agent

Chaîne

Chaîne utilisée comme identificateur d'agent pour les méthodes de contrôle de l'intégrité http_get et http_head. Si la chaîne est vide, HALB-health-check est utilisé.
Valeur par défaut : (vide).

healthcheck_method

Chaîne

Méthode utilisée pour le contrôle de l'intégrité des serveurs Web principaux.
tcp_connect - HALB se connecte au port 80 du serveur Web. Si la connexion est correctement établie, HALB suppose que le serveur Web est fonctionnel. Cette méthode est la plus rapide et est celle qui nécessite le moins de ressources.
http_head - HALB utilise la méthode HEAD pour demander le document spécifié par la propriété healthcheck_url. Cette méthode est plus lente que tcp_connect, requiert davantage de ressources sur HALB et sur le serveur Web, mais est plus fiable. Un code d'état 2xx ou 3xx, reçu d'un serveur Web, valide le serveur comme étant opérationnel.
http_get - HALB utilise la méthode GET pour demander le document spécifié par la propriété healthcheck_url. Cette méthode est plus lente et requiert davantage de ressources, mais est la plus fiable. Un code d'état 2xx ou 3xx, reçu d'un serveur Web, valide le serveur comme étant opérationnel. Si la propriété healthcheck_regexp est définie, HALB télécharge le document et tous les en-têtes HTTP ainsi que le code d'état du serveur et vérifie la présence de correspondances avec la valeur healthcheck_regexp. Si une correspondance est trouvée, le serveur principal est considéré comme fonctionnel ou est désactivé si aucune correspondance n'a été trouvée.
Valeur par défaut : tcp_connect.

healthcheck_regexp

Chaîne

Chaîne de test utilisée avec le mode de contrôle de l'intégrité http_get. Des valeurs courtes ou communes (p. ex. OK) généreront probablement des faux positifs. Cette chaîne est une expression régulière Perl. Vous trouverez davantage d'informations sur les expressions régulières Perl ici.
Valeur par défaut : (vide).

healthcheck_interval

Entier

Intervalle (exprimé en secondes) entre les contrôles d'intégrité des serveurs Web principaux.
Valeur par défaut : 20 secondes.

Propriétés de l'interface utilisateur/de service Web

name

type

description

username

Chaîne

Nom d'utilisateur pour accéder à l'interface utilisateur graphique d'HALB via le terminal ui. Si aucune valeur n'est spécifiée, aucune authentification n'est effectuée.
Valeur par défaut : (vide).

password

Chaîne

Mot de passe pour accéder à l'interface utilisateur graphique d'HALB via le terminal ui. Le mot de passe est ignoré si le nom d'utilisateur est vide.
Valeur par défaut : (vide).

ctl_port

Entier

Port utilisé pour accéder à l'interface de contrôle de service Web via le terminal ctl.
Valeur par défaut : 80

ui_port

Entier

Port utilisé pour accéder à l'interface utilisateur graphique des statistiques d'exécution d'HALB via le terminal ui.
Valeur par défaut : 80

Compteurs personnalisés

L'appliance HALB signale les compteurs personnalisés suivants via le terminal mon.

Les compteurs suivants appartiennent au groupe de compteurs HALB. X représente une valeur de 1 à 8.

Nom du compteur

Description

outX_status

Etat du terminal de sortie outX : 0 - activé et opérationnel, 1 - activé et inactif, 100 - déconnecté.

outX_queue

Nombre de requêtes mises en file d'attente pour le terminal outX.

outX_queue_max

Nombre maximum historique de requêtes mises en file d'attente simultanément pour le terminal outX.

outX_sessions_active

Nombre de sessions actives pour le terminal outX.

outX_sessions_max

Nombre maximum de sessions actives simultanément pour le terminal outX.

outX_sessions_total

Nombre de sessions terminées pour le terminal outX.

outX_errors

Nombre d'échecs de contrôle d'intégrité pour le terminal outX.

file d'attente

Longueur actuelle de la file d'attente, cumulée pour out1 - out8.

queue_max

Nombre maximum historique de requêtes mises en file d'attente simultanément, cumulées pour out1 - out8.

sessions_active

Nombre de sessions actives, cumulées pour out1 - out8.

sessions_max

Nombre maximum historique de sessions actives, cumulées pour out1 - out8.

sessions_total

Nombre de sessions terminées, cumulées pour out1 - out8.

erreurs

Nombre total d'échecs de contrôle d'intégrité, cumulés pour out1 - out8.

Performances

Taux de requêtes

HALB achemine pas moins de 6000 transactions (paires requête/réponse) par seconde, en fonction de la taille de document et de la bande passante réseau disponible.

Débit des données

HALB achemine pas moins de 15 Mo/seconde.

Connexions simultanées

HALB prend en charge pas moins de 2000 requêtes en suspens simultanément, (une requête en suspens étant une connexion TCP ouverte à partir du client, sur laquelle une ou plusieurs requêtes HTTP en cours ne sont pas terminées). Le nombre maximum de connexions simultanées dépend de la quantité de mémoire disponible et peut atteindre 40 000. HALB a été testé pour prendre en charge plus de 15000 transferts actifs simultanés.

Messages d'erreur

En cas d'échec de démarrage de l'appliance, les erreurs suivantes peuvent être consignées dans le journal système :

Message d'erreur

Description

Error: unable to determine appliance memory configuration, please contact CA Technologies support.

HALB n'est pas parvenu à détecter la quantité de mémoire disponible. Contactez le support technique de CA.

Error: failed to create the HAProxy config file, please contact CA Technologies support.

HALB n'a pas pu créer le fichier de configuration HAProxy. Contactez le support technique de CA..

Error: failed to determine number of available CPUs, please contact CA Technologies support.

HALB n'est pas parvenu à détecter la quantité d'UC disponible. Contactez le support technique de CA.

Error: the healthcheck_url, when specified as an URL, must begin with http:// and contain a full path to the document (ex: http://host.name.domain/file/to/check/for.html).

La valeur de la propriété healthcheck_url est incorrecte. Elle doit commencer par http:// et contenir un chemin complet, ex. : http://host.name.domain/file/to/check/for.html

Error: unknown health check method healthcheck_method specified.

La valeur de la propriété healthcheck_method est incorrecte. La valeur doit être l'une des suivanes : tcp_connect, http_head ou http_get

Error: invalid operation mode specified

Le mode spécifié n'est pas valide. Le mode doit être l'un des suivants : passive, sync, insert or source

Error: ui_port value must be between 1 and 65535.

La valeur de u_port doit être supérieure à 1 et inférieure à 65535.

Error: ctl_port value must be between 1 and 65535.

la valeur de ctl_port doit être supérieure à 1 et inférieure à 65535.

Error: failed to start HALB, please see '/var/log/appliance/log' log file for details.

Une erreur système s'est produite au démarrage de HALB. Contactez le support technique de CA.

Error: failed to initialize the control web service interface, please contact CA Technologies support.

Une erreur système s'est produite lors de l'initialisation de l'interface de services Web de contrôle fournie sur le terminal ctl. Contactez le support technique de CA.

Error: failed to initialize statistics reporting, please contact CA Technologies support.

Une erreur système s'est produite lors de l'initialisation de la génération des rapports de statistiques. Contactez le support technique de CA.

Error: failed to initialize the user interface terminal, please contact CA Technologies support.

Une erreur système s'est produite lors de l'initialisation de l'interface utilisateur graphique fournie sur le terminal ui. Contactez le support technique de CA.

Error: failed to initialize external health checker, please contact CA Technologies support.

Une erreur s'est produite au démarrage de l'outil de contrôle de l'intégrité prenant en charge les expressions régulières. Contactez le support technique de CA.

Présentation

Le terminal ctl fournit une interface de services Web de contrôle (sur le port configuré) permettant d'activer et de désactiver les terminaux de sortie (out1 - out8) et de récupérer l'état actuel des terminaux.

Protocole

Le protocole utilise uniquement la méthode GET HTTP, puisqu'il offre seulement une fonctionnalité de lecture. Ainsi, tous les types de requêtes de protocole pris en charge peuvent être définis au moyen de leur URI et de la structure de sortie. Les caractères considérés comme spéciaux pour l'URI doivent être échappés à l'aide de la norme de codage standard %.

Toutes les URL prises en charge sont décrites ci-dessous :

Appels de contrôle

Désactivation des terminaux de sortie

Il existe deux formes distinctes d'appel de contrôle de désactivation, selon la manière dont le terminal de sortie est identifié :

Requête : /api/disable?channel=out3 (désactive le terminal de sortie out3)

Requête : /api/disable?10.11.12.13 (désactive le terminal de sortie connecté au serveur Web qui a pour adresse IP 10.11.12.13)

Réponse :

HALB renvoie la structure suivante avec un code d'état et éventuellement un message d'état :

{
   "status" :
   {
   "code" : code_value,
   "message" : "status_message"
   }
}

Les valeurs de code d'état possibles sont répertoriées ci-dessous :

Valeur de code

Description

0

L'opération a réussi ; le terminal a été désactivé.

10

L'opération a échoué ; la configuration HALB n'a pas été modifiée. Causes les plus probables : le terminal est déjà désactivé ou l'adresse IP spécifiée n'est pas valide.

100

Une erreur s'est produite lors du traitement de la requête. Pour plus d'informations, reportez-vous au message d'état.

Activation des terminaux de sortie

Il existe deux formes distinctes d'appel de contrôle d'activation, selon la manière dont le terminal de sortie est identifié :

Requête : /api/enable?channel=out3 (active le terminal de sortie out3)

Requête : /api/enable?10.11.12.13 (active le terminal de sortie connecté au serveur Web qui a pour adresse IP 10.11.12.13)

Réponse :

HALB renvoie la structure suivante avec un code d'état et éventuellement un message d'état :

{
   "status" :
   {
   "code" : code_value,
   "message" : "status_message"
   }
}

Les valeurs de code d'état possibles sont répertoriées ci-dessous :

Valeur de code

Description

0

L'opération a réussi ; le terminal a été activé.

10

L'opération a échoué ; la configuration HALB n'a pas été modifiée. Causes les plus probables : le terminal est déjà activé ou l'adresse IP spécifiée n'est pas valide.

100

Une erreur s'est produite lors du traitement de la requête. Pour plus d'informations, reportez-vous au message d'état.

Récupération de l'état des terminaux de sortie

Requête : /API/statut (renvoie l'état de tous les terminaux de sortie)

Réponse :

HALB renvoie la structure suivante avec un code d'état et éventuellement un message d'état :

{
   "status" :
   {
   "code" : code_value,
   "message" : "status_message",
   "terminal_id" : "terminal_state",
   "terminal_id" : "terminal_state",
   ...
   }
}

L'état est uniquement renvoyé pour tous les terminaux connectés. L'état des terminaux désactivés et déconnectés n'est pas signalé.

Les valeurs de code d'état possibles sont répertoriées ci-dessous :

Valeur de code

Description

0

L'opération a réussi.

100

Une erreur s'est produite lors du traitement de la requête. Pour plus d'informations, reportez-vous au message d'état.

Les valeurs de terminal possibles sont out1 - out8.

Les valeurs d'état possibles sont les suivantes :

Valeur d'état

Description

up

Le terminal est connecté et actif.

down

Le terminal est inactif. Le serveur Web connecté à ce terminal est arrêté ou n'est pas parvenu à effectuer le contrôle de l'intégrité de HALB.

Exemple d'état de terminaux de sortie :

{
   "status" :
   {
   "code" : 0,
   "message": "",
   "out1": "up",
   "out2": "up",
   "out3": "down",
   "out4": "up"   
   }
}
Interface utilisateur graphique Web

HALB propose une interface utilisateur graphique de statistiques à l'aide du terminal ui. Diverses informations d'exécution sont disponibles par le biais de cette interface utilisateur graphique :

Parameter

Description

nbcproc

Nombre d'UC disponibles pour HALB.

uptime

Durée de disponibilité d'HALB.

system limits

Limites de ressource imposées sur HALB par le système d'exploitation.

memmax

Mémoire disponible maximum pour HALB.

ulimit-n

Quantité maximum de fichiers ouverts simultanément. Les sockets réseau sont considérés comme des fichiers.

maxsock

Quantité maximum de sockets ouverts simultanément.

maxconn

Quantité maximum de connexions simultanées. Une fois ce nombre atteint, toutes les nouvelles connexions sont mises en file d'attente.

current conns

Nombre actuel de connexions actives.

Statut du serveur

Etat d'un serveur principal. UP - le serveur est fonctionnel, DOWN - le serveur n'est pas fonctionnel.

Queue Curr.

Longueur actuelle de la file d'attente des requêtes du serveur principal.

Queue Max.

La longueur maximale de la file d'attente atteinte du serveur principal au démarrage d'HALB.

Sessions Curr.

Numéro de sessions actives simultanément.

Sessions Max.

Le nombre maximum atteint de sessions actives simultanément.

Sessions Cumul.

Nombre total de sessions terminées.

Errors Conn.

Nombre d'erreurs qui se sont produites lors de la connexion à un serveur principal.

Errors Resp.

Nombre d'erreurs 5xx signalées par le serveur principal.

Contrôle d'erreurs

Nombre de contrôles d'intégrité ayant échoué pour un serveur principal.

Errors Down

Nombre de fois où le serveur d'arrière-plan est passé de l'état UP à DOWN.

Equilibrage de charge d'applications à contenu dynamique lentes

Si votre application doit effectuer de nombreux calculs pour produire chaque page, elle ne peut bien entendu servir simultanément qu'un nombre limité de clients. Toutefois, si la source de données est suffisamment rapide ou peut être répliquée et traitées à partir de plusieurs serveurs, HALB peut être utilisé pour augmenter le nombre de connexions à traiter simultanément. Un exemple typique peut être le traitement des cartes d'une base de données de cartographie. La base de données est lue rapidement, mais chaque chargement de page requiert que la carte se présente comme un fichier image.

Le diagramme suivant indique comment vous pouvez utiliser HALB pour employer plusieurs UC afin de traiter le même contenu, en fournissant une réponse plus rapide en cas de charge importante.

Configuration pour un serveur conservant les sessions - Bugzilla

Les exemples de configuration ne reprennent que les propriétés définies sur des valeurs autres que celles par défaut.

Propriété

Valeur

Notes

cookie_name

Bugzilla_logincookie

Il s'agit du nom utilisé par Bugzilla pour son cookie de connexion.

mode

passive

Bugzilla publie des cookies uniques pour chaque combinaison nom d'utilisateur/adresse IP. Par conséquent, deux instances de bugzilla connectées à la même base de données ne renvoient jamais le même cookie. Le mode passif le plus simple peut de cette manière être utilisé en toute sécurité. Pour d'autres types de serveur, le paramètre sync peut être plus approprié.

Equilibrage de charge avec affinité pour des serveurs sans session à l'aide de cookies

Pour les serveurs sans session, mais qui gardent des données mises en cache et ne peuvent pas bénéficier d'un client dirigé systématiquement dirigé vers le même serveur, la surveillance de cookie passive ne fonctionne pas étant donné l'absence de cookie à surveiller. Le mode insert est utilisé dans ce cas, comme dans ce tableau :

Propriété

Valeur

Notes

cookie_name

session_id

Nom arbitraire. Veillez toutefois à ce qu'il ne corresponde pas à un nom utilisé par les serveurs à d'autres fins.

mode

insert

HALB insère un cookie défini : en-tête

Equilibrage de charge avec contrôle de l'intégrité de l'infrastructure

La réussite d'un contrôle de l'intégrité d'un serveur Web principal ne garantit pas que les données renvoyées sont valides ou que la base de données dont elles dépendent sont toujours fonctionnelles. Une fonctionnalité qui permet à HALB de se distinguer est sa capacité de contrôler l'intégrité non seulement de façon conventionnelle (par une simple connexion au port 80 d'un serveur Web), mais également par le biais de méthodes plus avancées telles que http_head et http_get. Utilisée à bon escient, cette capacité aide à assurer la disponibilité non seulement des serveurs Web principaux, mais également leurs dépendances ainsi que leurs serveurs de base de données, d'application et de stockage. Dans cet exemple, deux fonctionnalités de contrôle de l'intégrité d'HALB sont utilisées. D'abord, un fichier spécial health_check.php est créé et son URL complète est spécifiée dans la propriété healthcheck_url. Lorsqu'il accède à ce fichier, il évalue la disponibilité de la base de données, de l'application ou des serveurs NAS et renvoie un document d'état contenant le texte ALL_SERVICES_ARE_OK. Cette valeur est spécifiée dans la propriété healthcheck_regexp.

HALB vérifie toutes les sorties (out1 - out8) avec les requêtes HTTP/1.1 GET en utilisant le site dans l'en-tête Host: HTTP et le fichier /health_check.php en tant qu'URL de document. Ces valeurs sont extraites de la propriété de healthcheck_url (http://site/health_check.php). Dans le document contenant des extraits de chaque serveur principal, HALB recherche la valeur de la propriété healthcheck_regexp (ALL_SERVICES_ARE_OK). Si cette ligne est trouvée, le serveur est considéré comme étant fonctionnel/opérationnel. Dans le cas contraire, le terminal de sortie est désactivé. Si la sortie est désactivée et que le contrôle de l'intégrité d'HALB réussit par la suite, la sortie est réactivée.

Lorsqu'aucun hôte virtuel n'est utilisé ou que le serveur principal ne prend pas en charge le protocole HTTP/1.1, la propriété healthcheck_url peut être spécifiée dans un format simple (/health_check.php). Dans ce cas, HALB utilise le protocole HTTP/1.0 et ne spécifie pas l'en-tête Host: HTTP.

Propriété

Value (Valeur)

Commentaires

healthcheck_mode

http_get

HALB utilise le mode de contrôle de l'intégrité http_get.

healthcheck_url

http://site/health_check.php

URL vérifiée par HALB.

healthcheck_regexp

ALL_SERVICES_ARE_OK

 

Utilisation de serveurs de sauvegarde

Les serveurs de sauvegarde sont utilisés lorsque tous les serveurs principaux sont indisponibles. Un message pertinent ou une page de redirection doivent être fournis au client, au lieu d'erreurs ou de délais d'expiration. Dans l'exemple suivant, la sauvegarde de serveur est configurée en dernier recours, en fournissant uniquement une page statique indiquant aux clients qu'une maintenance technique est en cours. Lorsque les quatre serveurs srv1 - srv4 sont hors service, le contenu de la sauvegarde du serveur est traité.

Propriété

Valeur

Notes

backup_outputs

out8

 

Utilisation de l'interface de services Web de contrôle

L'interface de service Web de contrôle permet d'activer/de désactiver les terminaux de sortie d'HALB soit de façon dynamique, soit de façon programmée. Vous pouvez également l'utiliser pour récupérer l'état actuel de tous les terminaux de sortie. Cette interface est fournie via le terminal ctl d'HALB.

Le diagramme suivant affiche un environnement en cluster avec plusieurs serveurs Web et de base de données. Chaque serveur Web et de base de données a une connexion réactive au terminal ctl d'HALB. Si un serveur Web détecte un problème avec une base de données, la connectivité ou les performances, il peut désactiver le terminal de sortie correspondant, en ordonnant à HALB d'arrêter de diriger le trafic vers le serveur Web. De même, un serveur de base de données peut désactiver les terminaux de sortie d'HALB, en désactivant ainsi tout le trafic entrant. Une fois le problème résolu, les terminaux de sortie peuvent être réactivés.

Notes

Logiciels Open Source et tiers utilisés au sein de l'appliance

HALB utilise les packages Open Source tiers suivants en plus des packages Open Source tiers utilisés par sa classe de base LUX6.

Logiciel

Version

Modifié

Licence

Notes

haproxy

1.4.9

Non

GPLv2

page d'accueil

php-thttpd

2.25b

Non

BSD

N/D