Qu’est-ce que l’équilibrage de charge?

introduction

L'équilibrage de charge est un composant clé des infrastructures à haute disponibilité couramment utilisées pour améliorer les performances et la fiabilité des sites Web, des applications, des bases de données et d'autres services en répartissant la charge de travail sur plusieurs serveurs.

Une infrastructure Web sans équilibrage de charge pourrait ressembler à ceci:

web_server

Dans cet exemple, l'utilisateur se connecte directement au serveur Web, àyourdomain.com. Si ce serveur Web unique tombe en panne, l'utilisateur ne pourra plus accéder au site Web. En outre, si de nombreux utilisateurs tentent d'accéder au serveur simultanément et qu'il est incapable de gérer la charge, ils risquent de connaître un temps de chargement lent ou de ne pas pouvoir se connecter du tout.

Ce point de défaillance unique peut être atténué en introduisant un équilibreur de charge et au moins un serveur Web supplémentaire sur le backend. En règle générale, tous les serveurs dorsaux fourniront un contenu identique afin que les utilisateurs reçoivent un contenu cohérent quel que soit le serveur qui répond.

Diagram 01: Load Balancers / Top-to-bottom

Dans l'exemple illustré ci-dessus, l'utilisateur accède à l'équilibreur de charge, qui transfère la demande de l'utilisateur à un serveur principal, qui répond ensuite directement à la demande de l'utilisateur. Dans ce scénario, le seul point d'échec est désormais l'équilibreur de charge lui-même. Cela peut être atténué en introduisant un deuxième équilibreur de charge, mais avant de commencer, examinons le fonctionnement de ces derniers.

Quel type de trafic peut gérer les équilibreurs de charge?

Les administrateurs de l'équilibreur de charge créent des règles de transfert pour quatre types de trafic principaux:

  • HTTP - L'équilibrage HTTP standard dirige les requêtes en fonction des mécanismes HTTP standard. L'équilibreur de charge définit les en-têtesX-Forwarded-For,X-Forwarded-Proto etX-Forwarded-Port pour donner aux backends des informations sur la demande d'origine.

  • HTTPS - L'équilibrage HTTPS fonctionne de la même manière que l'équilibrage HTTP, avec l'ajout du chiffrement. Le chiffrement est géré de deux manières: soit avecSSL passthrough qui maintient le chiffrement jusqu'au backend, soit avecSSL termination qui place la charge de déchiffrement sur l'équilibreur de charge mais envoie le trafic non chiffré au backend .

  • TCP - Pour les applications qui n'utilisent pas HTTP ou HTTPS, le trafic TCP peut également être équilibré. Par exemple, le trafic vers un cluster de base de données peut être réparti sur tous les serveurs.

  • UDP - Plus récemment, certains équilibreurs de charge ont ajouté la prise en charge des protocoles Internet de base d'équilibrage de charge comme DNS et syslogd qui utilisent UDP.

Ces règles de transfert définiront le protocole et le port sur l'équilibreur de charge lui-même et les mapperont sur le protocole et le port que l'équilibreur de charge utilisera pour acheminer le trafic vers le backend.

Comment l'équilibreur de charge choisit-il le serveur principal?

Les équilibreurs de charge choisissent le serveur auquel transférer une demande en fonction de la combinaison de deux facteurs. Ils s’assureront d’abord que tous les serveurs qu’ils peuvent choisir répondent effectivement aux demandes, puis utiliseront une règle préconfigurée pour effectuer leur sélection parmi ce pool en bon état.

Bilans de santé

Les équilibreurs de charge ne doivent transférer le trafic que vers des serveurs principaux «sains». Pour contrôler la santé d'un serveur principal, des contrôles de santé tentent régulièrement de se connecter aux serveurs principaux en utilisant le protocole et le port définis par les règles de transfert pour s'assurer que les serveurs sont à l'écoute. Si un serveur échoue à une vérification d'intégrité et ne peut donc pas répondre aux demandes, il est automatiquement supprimé du pool et le trafic ne lui est pas transféré jusqu'à ce qu'il réponde aux vérifications d'intégrité.

Algorithmes d'équilibrage de charge

L'algorithme d'équilibrage de charge utilisé détermine le serveur sélectionné sur le serveur principal. Quelques-uns des algorithmes couramment utilisés sont:

Round Robin - Round Robin signifie que les serveurs seront sélectionnés de manière séquentielle. L'équilibreur de charge sélectionnera le premier serveur de sa liste pour la première demande, puis descendra dans l'ordre, en commençant par le haut, à la fin.

Least Connections - Moins de connexions signifie que l'équilibreur de charge sélectionnera le serveur avec le moins de connexions et est recommandé lorsque le trafic entraîne des sessions plus longues.

Source - Avec l'algorithme Source, l'équilibreur de charge sélectionnera le serveur à utiliser en fonction d'un hachage de l'adresse IP source de la requête, telle que l'adresse IP du visiteur. Cette méthode garantit qu'un utilisateur particulier se connectera systématiquement au même serveur.

Les algorithmes disponibles pour les administrateurs varient en fonction de la technologie d’équilibrage de charge spécifique utilisée.

Comment les équilibreurs de charge gèrent-ils l'état?

Certaines applications nécessitent qu'un utilisateur continue à se connecter au même serveur principal. Un algorithme source crée une affinité basée sur les informations IP du client. Une autre façon d'y parvenir au niveau de l'application Web consiste à utilisersticky sessions, où l'équilibreur de charge définit un cookie et toutes les demandes de cette session sont dirigées vers le même serveur physique.

Equilibreurs de charge redondants

Pour supprimer l’équilibreur de charge en tant que point de défaillance unique, un deuxième équilibreur de charge peut être connecté au premier pour former un cluster, chacun surveillant l’intégrité des autres. Chacun est également capable de détecter et de récupérer les pannes.

Diagram 02: Cluster / Distributed

En cas de défaillance de l’équilibreur de charge principal, DNS doit amener les utilisateurs au deuxième équilibreur de charge. Étant donné que les modifications DNS peuvent prendre un temps considérable à se propager sur Internet et à rendre ce basculement automatique, de nombreux administrateurs utiliseront des systèmes qui permettent un remappage d'adresse IP flexible, tels quefloating IPs. Le remappage d'adresse IP à la demande élimine les problèmes de propagation et de mise en cache inhérents aux modifications DNS en fournissant une adresse IP statique qui peut être facilement remappée en cas de besoin. Le nom de domaine peut rester associé à la même adresse IP, tandis que l'adresse IP elle-même est déplacée entre les serveurs.

Voici à quoi pourrait ressembler une infrastructure hautement disponible utilisant des adresses IP flottantes:

Diagram 03: Floating IPs

Related