Introduction
La répartition de charge est un élément clé des infrastructures hautement disponibles 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.
A web infrastructure with no load balancing might look something like the following:
Dans cet exemple, l’utilisateur se connecte directement au serveur web, à l’adresse yourdomain.com. Si ce seul serveur web tombe en panne, l’utilisateur ne pourra plus accéder au site Web. De plus, si de nombreux utilisateurs essaient d’accéder au serveur simultanément et qu’il est incapable de gérer la charge, ils peuvent rencontrer des temps de chargement lents ou ne pas pouvoir se connecter du tout.
Ce point unique de défaillance peut être atténué en introduisant un répartiteur de charge et au moins un serveur web supplémentaire en backend. En général, tous les serveurs en backend fourniront un contenu identique afin que les utilisateurs reçoivent un contenu cohérent quel que soit le serveur qui répond.
Dans l’exemple illustré ci-dessus, l’utilisateur accède au répartiteur de charge, qui transmet la demande de l’utilisateur à un serveur en backend, qui répond ensuite directement à la demande de l’utilisateur. Dans ce scénario, le point unique de défaillance est maintenant le répartiteur de charge lui-même. Cela peut être atténué en introduisant un deuxième répartiteur de charge, mais avant d’en discuter, explorons le fonctionnement des répartiteurs de charge.
Quel type de trafic les équilibreurs de charge peuvent-ils gérer?
Les administrateurs des équilibreurs de charge créent des règles de transfert pour quatre principaux types de trafic :
- HTTP — L’équilibrage HTTP standard dirige les demandes en fonction des mécanismes HTTP standard. L’équilibreur de charge définit les en-têtes
X-Forwarded-For
,X-Forwarded-Proto
etX-Forwarded-Port
pour fournir aux arrière-plans 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 avec le transfert SSL qui maintient le chiffrement jusqu’au serveur de destination, soit avec la terminaison SSL qui place la charge de déchiffrement sur l’équilibreur de charge mais envoie le trafic non chiffré vers le serveur de destination.
- 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 bases 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 de l’équilibrage de protocoles Internet de base 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 router le trafic vers le serveur de destination.
Comment le répartiteur de charge choisit-il le serveur backend ?
Les répartiteurs de charge choisissent le serveur vers lequel transmettre une requête en fonction d’une combinaison de deux facteurs. Ils s’assurent d’abord que tout serveur qu’ils peuvent choisir répond correctement aux requêtes, puis utilisent une règle préconfigurée pour sélectionner parmi ce pool sain.
Vérifications de santé
Les répartiteurs de charge ne doivent transférer le trafic qu’aux serveurs backend « sains ». Pour surveiller la santé d’un serveur backend, des vérifications de santé tentent régulièrement de se connecter aux serveurs backend en utilisant le protocole et le port définis par les règles de transfert pour s’assurer que les serveurs écoutent. Si un serveur échoue à une vérification de santé et est donc incapable de répondre aux requêtes, il est automatiquement retiré du pool, et le trafic ne lui sera pas transféré tant qu’il ne répond pas à nouveau aux vérifications de santé.
Algorithmes de répartition de charge
L’algorithme d’équilibrage de charge utilisé détermine lequel des serveurs sains du back-end sera sélectionné. Quelques-uns des algorithmes couramment utilisés sont :
Round Robin — Round Robin signifie que les serveurs seront sélectionnés séquentiellement. L’équilibreur de charge sélectionnera le premier serveur de sa liste pour la première demande, puis descendra dans la liste dans l’ordre, recommençant en haut lorsqu’il atteint la fin.
Moins de connexions — 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 quel serveur utiliser en fonction d’un hachage de l’adresse IP source de la demande, comme 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 spécifique d’équilibrage de charge 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 back-end. Un algorithme Source crée une affinité basée sur les informations de l’adresse IP du client. Un autre moyen d’atteindre cela au niveau de l’application web est par le biais de sessions persistantes, 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.
Équilibreurs de charge redondants
Pour éliminer 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, où chacun surveille la santé des autres. Chacun est également capable de détecter les défaillances et de récupérer.
En cas de défaillance de l’équilibreur de charge principal, le DNS doit rediriger les utilisateurs vers le deuxième équilibreur de charge. Étant donné que les modifications DNS peuvent prendre un certain temps pour se propager sur Internet et pour rendre cette bascule automatique, de nombreux administrateurs utiliseront des systèmes permettant un remappage flexible des adresses IP, tel que les adresses IP réservées. 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 au 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 réservées :
Conclusion
Dans cet article, nous avons donné un aperçu des concepts d’équilibreur de charge et de leur fonctionnement en général. Pour en savoir plus sur les technologies d’équilibrage de charge spécifiques, vous voudrez peut-être consulter :
Service d’équilibrage de charge de DigitalOcean
- Comment créer votre premier équilibreur de charge DigitalOcean
- Comment configurer le transfert SSL en passant sur les équilibreurs de charge DigitalOcean
- Comment configurer la terminaison SSL sur les équilibreurs de charge DigitalOcean
- Comment équilibrer le trafic TCP avec les équilibreurs de charge DigitalOcean
HAProxy
- Une introduction à HAProxy et aux concepts d’équilibrage de charge
- Comment configurer des serveurs HAProxy hautement disponibles avec Keepalived et des adresses IP réservées sur Ubuntu 14.04
- Équilibrage de charge de WordPress avec HAProxy
Nginx
Source:
https://www.digitalocean.com/community/tutorials/what-is-load-balancing