Dernière version : 2.0.2-1

|
Aperçu rapide |
|
|
Catalogue |
Système |
|
Catégorie |
Commutateurs |
|
Volumes d'utilisateur |
non |
|
Min. mémoire |
96M |
|
SE |
Linux |
|
Contraintes |
non |
L3LB est un commutateur qui permet de distribuer les sessions TCP/UDP entrantes à des serveurs du même type ou de types différents. La fonctionnalité d'équilibrage de charge de TCP est basé sur le package logiciel d'équilibrage de charge HAProxy TCP/HTT. L'équilibrage de charge UDP est quant à lui basé sur Netfilter.
L3LB équilibre la charge du trafic entrant à l'aide de plusieurs algorithmes différents. Pour le trafic TCP, L3LB effectue un équilibrage de charge simple par tourniquet, répartissant la charge entre les serveurs principaux. Pour TCP, L3LB prend également en charge des 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é. Pour le trafic UDP, L3LB utilise l'algorithme du tourniquet. (Il s'agit du seul algorithme disponible pour le trafic UDP.)
L3LB surveille en permanence l'état d'intégrité de tous les serveurs principaux. En mode TCP, les contrôles d'état de l'intégrité effectués par L3LB consistent en une simple vérification de la connexion TCP. En cas de panne serveur détectée par L3LB à l'aide de la méthode de contrôle de l'intégrité paramétrée, L3LB bascule le trafic vers un serveur alternatif. En cas de reprise éventuelle du serveur ayant échoué, L3LB peut faire rebasculer le trafic sur le serveur récupéré. Pour le mode UDP, une commande ICMP PING est utilisée pour vérifier la disponibilité d'un serveur principal.
L3LB 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, L3LB 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.
L3LB est conçu pour être extrêmement rapide en utilisant très peu de ressources. Dans des conditions normales, L3LB 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.
|
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 à L3LB n'a pas d'influence sur le débit ou le temps de réponse. L3LB est une appliance liée à l'UC/à la bande passante.
|
name |
dir |
Protocole |
description |
|
in |
in |
Indifférent |
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. |
|
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 générales
|
name |
type |
description |
|
mode |
Chaîne |
Spécifie le mode de fonctionnement. Les valeurs valides sont les suivantes : |
|
ports |
Chaîne |
Liste de ports ou plages de ports séparés par des virgules ou des espaces que L3LB transfère aux serveurs principaux. Les plages de ports sont spécifiées au format port_inférieur:port_supérieur avec deux-points ou un tiret comme séparateur. Exemple : 80,81,90-99 110:120 140 141. Le trafic reçu sur un port non spécifié est abandonné. |
|
max_connections |
nombre entier |
Nombre maximum de connexions actives simultanément que L3LB peut gérer. 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 de l'appliance, L3LB 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. 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. Cette propriété est uniquement valide pour les modes de fonctionnement tcp_roundrobin et tcp_source. |
|
backup_outputs |
Chaîne |
Liste de sorties séparées par des virgules ou des points (out1 - out8) considérée comme serveurs de sauvegarde. Les plages de sortie (out1-out3) ne sont pas prises en charge. 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 de serveurs arrivés à expiration. Exemple : out1,out2,out3. Si aucune valeur n'est spécifiée, aucun serveur de sauvegarde n'est utilisé. |
Propriétés de contrôle de l'intégrité
Un TCP simple se connecte au premier port spécifié dans la propriété ports. Il est utilisé pour les modes de fonctionnement tcp_roundrobin et tcp_source. La commande ICMP ping est toujours utilisée avec le mode de fonctionnement udp_roundrobin.
|
name |
type |
description |
|
healthcheck_interval |
Entier |
Intervalle (exprimé en secondes) entre les contrôles de l'intégrité. Aucun contrôle de l'intégrité n'est effectué si cette propriété est 0. |
Propriétés de délai d'expiration
Ces propriétés sont uniquement valides pour les modes de fonctionnement tcp_roundrobin et tcp_source.
|
name |
type |
description |
|
client_timeout |
Entier |
Délai d'expiration en secondes pour l'attente d'une requête client après avoir établi la connexion. |
|
server_timeout |
Entier |
Délai d'expiration en secondes pour l'attente d'une réponse d'un serveur principal après avoir établi la connexion. |
|
conn_timeout |
Entier |
Délai d'expiration en secondes pour l'établissement d'une connexion TCP dans L3LB via l'un de ses terminaux (contrôles de l'intégrité inclus). Notez que lorsque L3LB subit une charge réseau importante, les contrôles de l'intégrité peuvent expirer lorsque ce paramètre est défini sur une valeur très basse. (Dans ces cas L3LB commencera à désactiver les sorties, ce qui peut donner lieu à un comportement inattendu de l'application). Il est déconseillé de définir cette propriété sur une valeur inférieure à 20 secondes. |
Propriétés de l'interface de service Web
|
name |
type |
description |
|
ctl_port |
Entier |
Port utilisé pour accéder à l'interface de contrôle de service Web via le terminal ctl. |
L'appliance L3LB signale les compteurs personnalisés suivants via le terminal mon.
Les compteurs suivants appartiennent au groupe de compteurs L3LB. 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. Ce nombre n'est pas indiqué lorsque vous êtes en mode udp_roundrobin. |
|
outX_queue_max |
Nombre maximum historique de requêtes mises en file d'attente simultanément pour le terminal outX. Ce nombre n'est pas indiqué lorsque vous êtes en mode udp_roundrobin. |
|
outX_sessions |
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. Ce nombre n'est pas indiqué lorsque vous êtes en mode udp_roundrobin. |
|
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. Ce nombre n'est pas indiqué lorsque vous êtes en mode udp_roundrobin. |
|
queue_max |
Nombre maximum historique de requêtes mises en file d'attente simultanément, cumulées pour out1 - out8. Ce nombre n'est pas indiqué lorsque vous êtes en mode udp_roundrobin. |
|
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. Ce nombre n'est pas indiqué lorsque vous êtes en mode udp_roundrobin. |
|
erreurs |
Nombre total d'échecs de contrôle d'intégrité, cumulés pour out1 - out8. |
Taux de requêtes
L3LB 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
L3LB achemine pas moins de 15 Mo/seconde.
Connexions simultanées
L3LB 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 TCP sont en cours mais pas terminées). Le nombre maximum de connexions simultanées dépend de la quantité de mémoire disponible et peut atteindre 40 000. L3LB a été testé pour prendre en charge plus de 15000 transferts actifs simultanés.
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. |
L3LB 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. |
L3LB 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. |
L3LB n'est pas parvenu à détecter la quantité d'UC disponible. Contactez le support technique de CA. |
|
Error: invalid operation mode specified |
Le mode spécifié n'est pas valide. Le mode doit être l'un des suivants : tcp_roundrobin, tcp_source ou udp_roundrobin |
|
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 L3LB, please see '/var/log/appliance/log' log file for details. |
Une erreur système s'est produite au démarrage de L3LB. 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. |
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.
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 %.
Tous les URI pris en charge sont décrits ci-dessous :
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 :
L3LB 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 L3LB 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. |
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 :
L3LB 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 L3LB 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. |
Requête : /API/statut (renvoie l'état de tous les terminaux de sortie)
Réponse :
L3LB 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 L3LB. |
Exemple d'état de terminaux de sortie :
{
"status" :
{
"code" : 0,
"message": "",
"out1": "up",
"out2": "up",
"out3": "down",
"out4": "up"
}
Le courrier électronique est devenu une partie importante des processus métier de nos jours. Fès lors, les clusters de messagerie Web doivent être disponibles 24 heures/24, 7 jours sur 7. L'exemple suivant illustre comment HALB et L3LB peuvent être utilisés ensemble pour équilibrer la charge et augmenter la disponibilité des serveurs webmail et SMTP. En cas d'échec, les serveurs peuvent désactiver les sorties d'HALB ou de L3LB via l'interface ctl. Le mode L3LB tcp_roundrobin est utilisé dans ce cas.

Un site Web moderne sert rarement uniquement du contenu statique. Habituellement, le traitement côté serveur se produit côté serveur. Ce diagramme d'exemple démontre une façon d'équilibrer la charge pour fournir un accès ininterrompu d'un cluster de serveurs Web à un plusieurs serveurs d'applications ; Apache Tomcat dans ce cas. Le mode de fonctionnement tcp_source aide à assurer l'adéquation du serveur Web pour la prise en charge de session du serveur d'applications.

Les protocoles VoIP courants utilisent UDP comme protocole principal. L'équilibrage de charge de ce trafic est une tâche cruciale pour la mise à l'échelle d'un cluster VoIP. Dans cet exemple, le mode de fonctionnement udp_roundrobin est utilisé.

Logiciels Open Source et tiers utilisés au sein de l'appliance
L3LB utilise les packages Open Source tiers suivants en plus des packages Open Source tiers utilisés par sa classe de base LUX5.
|
Logiciel |
Version |
Modifié |
Licence |
Commentaires |
|
haproxy |
1.2.18 |
Non |
GPLv2 |
page d'accueil |
|
libxml2 |
2.6.26 |
Non |
MIT |
N/D |
|
php-thttpd |
2.25b |
Non |
BSD |
N/D |
|
libipt_statistic |
1.3.5-1.2.1 |
Non |
GPLv2 |
page d'accueil |
|
iptables |
1.3.5-1.2.1 |
Non |
GPLv2 |
page d'accueil |
L'image d'appliance LUX5 est utilisée comme classe de base pour l'appliance L3LB.
Aucun redimensionnement du disque n'est nécessaire, L3LB utilise les valeurs par défaut définies pour la classe de base LUX5.
Le logiciel L3LB est installé dans la sous-arborescence /appliance.
Les packages standard suivants (du miroir officiel) sont installés :
Par ailleurs, les packages personnalisés suivants sont installés (sources incluses).
Contenu du répertoire de version :
Image d'appliance exportée :
Sources
Tests (Reportez-vous au plan de test CatSwitchesL3LBTp et aux notes de parution CatSwitchesL3LBRelNotes) :
L3LB utilise un seul service d'arrière-plan - L'équilibreur de charge HAProxy TCP/HTTP (http://haproxy.1wt.eu). Pour les besoins de l'équilibrage de charge tcp, seul le mode de fonctionnement TCP est activé.
Plusieurs écouteurs et serveurs principaux sont définis dans le fichier de configuration haproxy.cfg qui est créé par le script appliance.sh au démarrage de l'appliance, à l'aide des valeurs de propriétés configurées. Un écouteur est créé pour le terminal in et est utilisé pour tout le trafic du réseau entrant dont la charge doit être équilibrée. Un autre écouteur est créé sur l'interface utilisateur afin d'exporter les statistiques de l'interface utilisateur graphique vers l'utilisateur. Un écouteur supplémentaire est créé sur l'interface de bouclage interne lo0 afin d'extraire les statistiques d'exécution et de les signaler via le terminal mon. Chaque terminal outX connecté est défini en tant que serveur principal pour acheminer le trafic entrant.
L'écouteur sur le terminal d'entrée reçoit une requête HTTP et selon son mode de fonctionnement, modifie le cookie en passif, d'insertion et de synchronisation. La requête est ensuite envoyée à l'un des serveurs principaux. Si une session existe pour cette requête, elle est envoyée au même serveur principal que pour toutes les requêtes précédentes. S'il n'existe aucune session existante pour cette requête, le serveur d'arrière-plan est sélectionné par tourniquet. Il se peut que la réponse du serveur soit de nouveau modifiée et renvoyée au client.
Le fichier de configuration pour HAProxy est généré au démarrage par le script d'initialisation appliance.sh . il utilise les propriétés définies dans le fichier /etc/applogic.sh et les utilise pour créer un fichier de configuration /appliance/haproxy.cfg. Plusieurs propriétés supplémentaires calculées à l'heure de début sont écrites dans le fichier de configuration (adresse ulimit-n, nbproc, bind).
La journalisation des requêtes est désactivée dans L3LB. Seules les erreurs critiques sont signalées dans le journal système, les autres erreurs ne sont pas consignées.
Commentaires
Logiciels Open Source et tiers utilisés au sein de l'appliance
L3LB utilise les packages Open Source tiers suivants en plus des packages Open Source tiers utilisés par sa classe de base LUX5.
|
Logiciel |
Version |
Modifié |
Licence |
Commentaires |
|
haproxy |
1.4.9 |
Non |
GPLv2 |
page d'accueil |
|
php-thttpd |
2.25b |
Non |
BSD |
N/D |
|
libipt_statistic |
1.3.5-1.2.1 |
Non |
GPLv2 |
page d'accueil |
|
iptables |
1.3.5-5.3.el5_4 |
Non |
GPLv2 |
page d'accueil |
| Copyright © 2012 CA. Tous droits réservés. |
|