Table des matières[Cacher][Montrer]
La disponibilité des applications n'a jamais été prise aussi au sérieux qu'aujourd'hui lorsque nous utilisons les applications pour plus que la simple communication, qu'elle soit personnelle ou professionnelle et lorsque les applications sont l'entreprise.
Les applications qui ne sont pas constamment en ligne ou qui sont instables perdent leurs utilisateurs et leur pertinence, et finissent par devenir obsolètes. C'est arrivé en un éclair. Parce qu'Internet ne dort jamais et fonctionne 24 heures sur 7, XNUMX jours sur XNUMX, la même idée doit s'appliquer aux applications.
L'évolutivité est essentielle pour ce faire et assurer la disponibilité des applications. L'équilibrage de charge est l'un des composants les plus importants pour garantir la disponibilité. Beaucoup de gens croient encore que l'équilibrage de charge peut être réalisé avec un simple script.
Cependant, ce n'est pas le cas. À lui seul, il permet d'accéder à des programmes partout dans le monde, à tout moment et depuis n'importe quel appareil.
Dans cet article, nous examinerons en profondeur l'équilibrage de charge, ses algorithmes et son lien avec les microservices, entre autres. Commençons!
Qu'est-ce que l'équilibrage de charge ?
À mesure que la demande pour un site Web ou une application commerciale augmente, un seul serveur sera bientôt incapable de gérer toute la charge. Les organisations répartissent la charge de travail sur de nombreux serveurs afin de satisfaire la demande. Cette méthode, appelée « équilibrage de charge », empêche un seul serveur d'être surchargé, ce qui peut le ralentir, abandonner des requêtes ou même planter.
L'équilibrage de charge distribue le trafic réseau de manière égale pour éviter les pannes dues à la surcharge des ressources. Les applications, sites Web, bases de données et autres ressources informatiques fonctionnent mieux et sont plus disponibles avec cette méthode. Cela aide également au traitement approprié et rapide des demandes des utilisateurs.
Du point de vue de l'utilisateur, l'équilibrage de charge sert d'intermédiaire invisible entre un client et un ensemble de serveurs, garantissant que les demandes de connexion ne sont pas abandonnées. Les applications, les sites Web, les bases de données et les services en ligne s'effondreraient très probablement si la demande devenait trop importante sans équilibrage de charge.
Des centaines de milliers de demandes d'utilisateurs peuvent être envoyées simultanément à un seul site Web à fort trafic. Plusieurs serveurs sont nécessaires pour remplir correctement les pages Web avec le contenu demandé, tel que le texte, les images, la vidéo et le streaming audio. L'équilibrage de charge est couramment utilisé dans les fermes de serveurs de sites Web à fort trafic, ainsi que dans les serveurs DNS, les bases de données et les sites FTP (File Transfer Protocol).
Si un seul serveur est surchargé, cela pourrait mal fonctionner ou même planter. Les équilibreurs de charge réduisent les risques de temps d'arrêt en répartissant les demandes des utilisateurs de manière égale entre un ensemble de serveurs. Si l'un des serveurs du groupe tombe en panne, le trafic est redirigé vers d'autres serveurs du groupe. Un équilibreur de charge ajoute automatiquement de nouveaux serveurs dans le processus de distribution du trafic lorsqu'ils sont ajoutés au pool de serveurs.
Comment fonctionne l'équilibrage de charge ?
Cela fonctionne comme suit:
- Lorsqu'un client reçoit une demande, par exemple via un navigateur ou une application, il tente de se connecter au serveur.
- Lorsqu'un équilibreur de charge reçoit une demande, il l'achemine vers l'un des serveurs d'un groupe de serveurs en fonction de modèles établis par l'algorithme (ou la batterie).
- Le serveur reçoit la demande de connexion et répond au client via l'équilibreur de charge.
- Lorsque l'équilibreur de charge reçoit la réponse, il fait correspondre l'adresse IP du client avec l'adresse IP du serveur sélectionné. Ensuite, la réponse est transmise avec le paquet.
- Le déchargement SSL est le processus de décryptage des données à l'aide du protocole de cryptage Security Socket Layer afin que les serveurs n'aient pas à le faire.
- Le processus est répété jusqu'à la fin de la session.
Méthodes d'équilibrage de charge
Pour sélectionner lequel des serveurs d'une batterie de serveurs reçoit la requête suivante, chaque technique d'équilibrage de charge utilise un ensemble de critères. Il existe cinq approches typiques pour l'équilibrage de charge :
- Round Robin: Il s'agit de l'approche par défaut, et elle fonctionne exactement comme elle le semble. L'équilibreur de charge distribue les demandes selon un schéma rotatif, en commençant par le premier serveur du groupe et en descendant vers le bas, où il attend d'être à nouveau appelé. Cette méthode garantit que chaque serveur gère à peu près le même nombre de connexions.
- Tournoi à la ronde pondéré: Cette approche attribue à chaque serveur un poids (ou préférence) généralement proportionnel à sa capacité. Plus un serveur reçoit de requêtes, plus le poids est élevé. Par exemple, un serveur avec une valeur de poids de deux reçoit deux fois plus de requêtes qu'un serveur avec une valeur de poids de un.
- Session collante: Cette approche, également connue sous le nom de persistance de session, connecte certains clients et serveurs pendant la durée d'une session. Pour établir le lien, l'équilibreur de charge utilise un cookie ou l'adresse IP de l'utilisateur pour identifier un attribut de l'utilisateur. Une fois la connexion établie, les requêtes de l'utilisateur sont dirigées vers le même serveur jusqu'à la fin de la session. Cela optimise les ressources réseau tout en améliorant l'expérience utilisateur.
- Les moindres connexions: Cette stratégie suppose que toutes les demandes entraînent une charge de serveur égale. Par conséquent, le serveur avec le plus petit nombre de requêtes reçoit la requête suivante.
- Hachage IP: Cet algorithme génère une clé de hachage unique basée sur les adresses IP source et de destination du client et du serveur. La clé sert à router la requête et permet de reprendre une connexion perdue avec le même serveur.
Matériel Vs. Équilibreurs de charge logiciels
Équilibreur de charge matérielle
Le matériel physique, tel qu'une appliance, constitue des équilibreurs de charge matérielle. Ceux-ci acheminent le trafic vers les serveurs en fonction de facteurs tels que le nombre de connexions existantes, l'utilisation du processeur et les performances du serveur. Les équilibreurs de charge matérielle ont un micrologiciel propriétaire qui doit être maintenu et mis à jour lorsque de nouvelles versions et des correctifs de sécurité sont disponibles.
Les équilibreurs de charge matériels offrent souvent des performances et un contrôle plus élevés, ainsi qu'un plus large éventail de fonctionnalités telles que l'authentification Kerberos et l'accélération matérielle SSL, mais ils nécessitent un certain niveau d'expertise en matière de gestion et de maintenance. Étant donné que les équilibreurs de charge matériels sont moins flexibles et évolutifs que les équilibreurs de charge logiciels, il existe une propension à surprovisionner les équilibreurs de charge matériels.
Équilibreur de charge logiciel
Les équilibreurs de charge logiciels sont généralement plus faciles à configurer que leurs homologues matériels. Ils sont également plus rentables et adaptables, et ils fonctionnent bien avec les environnements de développement de logiciels. La méthode logicielle vous permet de personnaliser l'équilibreur de charge en fonction des exigences exactes de votre environnement. La flexibilité accrue peut se faire au détriment du temps supplémentaire consacré à la configuration de l'équilibreur de charge.
Les équilibreurs logiciels vous offrent une plus grande flexibilité pour effectuer des modifications et des mises à jour que les équilibreurs matériels, qui ont une approche plus fermée. Les machines virtuelles prépackagées peuvent être utilisées comme équilibreurs de charge logiciels (VM). Les machines virtuelles vous feront gagner du temps de réglage, mais elles peuvent ne pas avoir toutes les fonctionnalités disponibles dans leurs homologues matériels.
Implémentation simple de l'équilibrage de charge
Nous utiliserons la bibliothèque Spring Cloud pour créer des applications qui se connectent à d'autres applications de manière équilibrée. Lors du traitement des demandes de service à distance, nous pouvons facilement construire un équilibrage de charge en utilisant la technique que nous aimons. Considérez le code suivant comme exemple. Nous allons commencer avec une application serveur de base.
Le serveur n'aura qu'un seul point de terminaison HTTP et sera exploité dans plusieurs instances. Ensuite, nous allons créer une application cliente qui utilise Load Balancer pour répartir les requêtes sur plusieurs instances de serveur.
Server
On commence par une base Botte de printemps application pour notre exemple de serveur :
Pour commencer, nous injectons une variable personnalisable appelée instance_ID. Cela nous aide à distinguer les nombreuses instances qui fonctionnent. Ensuite, nous créons un seul point de terminaison HTTP GET qui renvoie un message et un ID d'instance.
L'instance par défaut avec l'ID 1 fonctionnera sur le port 8080. Il suffit d'ajouter quelques paramètres de programme pour lancer une deuxième instance :
Client
Voyons maintenant le code client. C'est là qu'intervient Load Balancer, alors commençons par l'intégrer à notre application :
Ensuite, nous développons une implémentation de ServiceInstanceListSupplier. C'est l'une des interfaces les plus importantes de Load Balancer. Il spécifie comment nous localisons les instances de service accessibles.
Nous allons coder en dur deux instances distinctes de notre exemple de serveur dans notre exemple d'application. Ils s'exécutent sur le même système mais utilisent des ports distincts :
Créez une classe LoadBalancerConfiguration maintenant :
Cette classe n'a qu'un seul objectif : elle crée un générateur WebClient à charge équilibrée pour effectuer des requêtes à distance. Notre annotation utilise un nom fictif pour le service.
Cela est dû au fait que nous ne connaîtrons probablement pas à l'avance les noms d'hôte et les ports précis pour exécuter des instances. Par conséquent, nous utilisons un nom fictif comme espace réservé, et le framework remplacera les informations réelles lorsqu'il sélectionnera une instance en cours d'exécution.
Ensuite, créons une classe de configuration qui sera utilisée pour instancier notre offre d'instance de service. Notez que nous utilisons le même alias qu'auparavant :
Nous pouvons maintenant créer la véritable application client. Envoyons 10 requêtes au serveur d'exemple à l'aide du bean WebClient précédent :
Nous pouvons voir à partir de la sortie que nous équilibrons la charge entre deux instances distinctes :
Équilibrage de charge dans les microservices
L'architecture des microservices est utilisée par plusieurs entreprises, comme Netflix et Amazon, pour développer des applications métier sous la forme d'un ensemble de services faiblement connectés. La livraison hyperscale et continue pour les applications complexes n'est que deux des raisons du passage à cette architecture distribuée et faiblement connectée.
Les équipes de ces entreprises ont mis en place des stratégies Agile et DevOps afin de produire des applications plus rapidement et avec un taux d'échec inférieur aux méthodes traditionnelles. Cependant, vous devez trouver un équilibre entre la complexité de l'architecture distribuée et les exigences de l'application, les exigences d'échelle et les limites de temps de mise sur le marché.
Pendant de nombreuses années, les contrôleurs de livraison d'applications (ADC) ont été essentiels pour répondre aux exigences de niveau de service pour les applications d'entreprise hébergées sur site ou dans le cloud. Un client qui s'engage avec une application basée sur des microservices n'a pas besoin de connaître les instances qui la fournissent pour développer le client et les microservices indépendamment.
C'est précisément le découplage apporté par un reverse proxy ou un load balancer. Encore une fois, l'équilibrage de charge est la solution pour garantir que les microservices peuvent gérer la demande, la sécurité et la disponibilité.
Lorsque vous combinez l'équilibrage de charge nord-sud traditionnel entre les applications clientes et basées sur des microservices avec un déploiement est-ouest pour une évolutivité horizontale, vous obtenez un coup de pouce substantiel. L'objectif est de maintenir l'environnement sûr et réglementé requis par l'informatique sans sacrifier l'agilité de développement ou Automatisation DevOps exigences.
Avantages
L'équilibrage de charge offre divers avantages en améliorant l'utilisation des ressources, la livraison des données et le temps de réponse pour les sites Web et les applications à fort trafic, ainsi que les bases de données qui reçoivent un grand nombre de requêtes. L'équilibrage de charge garantit que les demandes des utilisateurs sont satisfaites rapidement et correctement dans les scénarios à fort trafic.
Ils évitent aux utilisateurs l'aggravation de devoir gérer des programmes et des ressources lents. L'équilibrage de charge permet également d'éviter les temps d'arrêt et de simplifier la sécurité, réduisant ainsi le risque de perte de productivité et de revenus pour votre entreprise.
- L'équilibrage de charge offre la possibilité d'ajouter et de supprimer des serveurs en fonction de la demande, en plus de gérer le trafic avec une efficacité optimale. Étant donné que le trafic est détourné vers d'autres serveurs pendant la maintenance, il est également possible d'entreprendre la maintenance du serveur sans perturber les utilisateurs.
- L'équilibrage de charge fournit une redondance intégrée en divisant le trafic entre un ensemble de serveurs. Vous pouvez immédiatement transférer la charge vers d'autres serveurs en cas de panne, ce qui minimise l'impact sur les utilisateurs.
- Si l'utilisation d'une application ou d'un site Web augmente, l'augmentation du trafic peut dégrader ses performances si elle n'est pas gérée efficacement. Avec l'équilibrage de charge, vous pouvez ajouter un serveur réel ou virtuel pour répondre à la demande sans perturber le service. L'équilibreur de charge identifie les nouveaux serveurs au fur et à mesure de leur mise en ligne et les intègre sans effort dans l'opération. Cette méthode est préférable à la migration d'un site Web d'un serveur surchargé vers un nouveau, qui implique souvent des temps d'arrêt.
Conclusion
L'équilibrage de charge est un élément essentiel des systèmes contemporains tolérants aux pannes. Nous pouvons simplement créer des applications qui distribuent les demandes à plusieurs instances de service en utilisant diverses approches d'équilibrage de charge. Les entreprises doivent prendre en charge des systèmes informatiques complexes afin de fournir des applications en toute sécurité.
La configuration, le déploiement et la maintenance des microservices interdomaines peuvent être sujets aux erreurs, coûteux et chronophages. Le service informatique doit utiliser les meilleures pratiques et technologies d'automatisation, de visibilité, d'analyse et d'orchestration compatibles avec leurs processus agiles et DevOps pour faciliter la configuration et la maintenance de ces microservices.
Soyez sympa! Laissez un commentaire