Pour équilibrer le charge, vous avez deux options : mettre à l’échelle ou monter en charge.
Si vous faites partie d’une équipe de développement de logiciels ou travaillez dans DevOps, vous avez sans doute déjà entendu l’expression « You build it, you run it », inventée par Werner Vogels, le CTO d’Amazon, en 2016. Cette attitude domine l’Approche DevOps.
Les applications modernes répondent à des millions de requêtes d’utilisateurs dans différentes régions géographiques du monde. Il est indispensable que les équipes trouvent un moyen efficace de répartir les charges de travail sur les serveurs afin de maximiser la vitesse et l’utilisation de la capacité.
Dans cet article, vous apprendrez comment fonctionne l’équilibrage de charge dans le cloud, en particulier sur Google Cloud Platform (GCP), et quels équilibreurs de charge sont disponibles pour vous.
L’un des principaux objectifs de l’équilibrage de charge dans le cloud est d’empêcher les serveurs de tomber en panne ou d’être surchargés.
Les équilibreurs de charge peuvent être matériels ou logiciels. Ceux qui sont basés sur le matériel sont en effet du matériel physique, essentiellement des systèmes (boîtiers) dédiés dont le but principal est d’équilibrer le flux d’informations entre les serveurs. En revanche, les équilibreurs de charge logiciels s’exécutent sur des systèmes d’exploitation et du matériel standard comme les PC et les ordinateurs de bureau.
Alors que les équilibreurs de charge matériels nécessitent des appliances propriétaires rack-and-sack, les équilibreurs logiciels sont installés sur des machines virtuelles et des serveurs x86 standard.
En général, les équilibreurs de charge basés sur le matériel nécessitent que vous fournissiez suffisamment d’équilibreurs pour répondre aux demandes croissantes de trafic réseau. Cela implique que plusieurs équilibreurs de charge devront rester inactifs jusqu’à ce qu’il y ait une augmentation du trafic réseau, par exemple, le Black Friday.
Pourquoi équilibrer la charge ?
Le nombre de requêtes qu’un seul ordinateur peut traiter à un moment donné est limité. Face à une augmentation soudaine des demandes, votre application se chargera plus lentement, le réseau expirera et votre serveur va sans doute craquer. Vous avez deux options : mettre à l’échelle ou monter en charge.
Si vous faites une mise à l’échelle (échelle verticale), vous augmentez la capacité d’une seule machine existante en ajoutant plus de stockage (disque) ou de puissance de traitement (RAM, CPU) selon les besoins à la demande. Mais la mise à l’échelle a une limite. Vous arriverez à un point où vous ne pourrez plus ajouter de RAM ou de processeurs.
Une meilleure stratégie consiste à monter en charge (échelle horizontale). Cela implique la répartition des charges sur autant de serveurs que nécessaire pour gérer la charge de travail. Dans ce cas, il n’y a pas de limite pour ajouter plus de machines physiques à un pool de ressources existant.
Quels sont les avantages ?
Les avantages de l’équilibrage de charge sont les suivants :
Empêche la surcharge du serveur réseau
Lorsque vous utilisez des équilibreurs de charge dans le cloud, vous pouvez répartir votre charge de travail entre plusieurs serveurs, unités réseau, centres de données et fournisseurs cloud. Cela vous permet d’éviter efficacement la surcharge du serveur réseau pendant les pics de trafic.
Haute disponibilité
Le concept de la haute disponibilité signifie que l’ensemble de votre système ne sera pas arrêté chaque fois qu’un composant du système tombe en panne. Vous pouvez utiliser des équilibreurs de charge pour rediriger les requêtes vers des nœuds sains en cas d’échec.
Meilleure utilisation des ressources
L’équilibrage de charge est centré sur le principe de répartition efficace des charges de travail entre les centres de données et via plusieurs ressources, telles que des disques, des serveurs, des clusters ou des ordinateurs. Il maximise le débit, optimise l’utilisation des ressources disponibles, évite la surcharge d’une seule ressource et minimise le temps de réponse.
Empêche une seule ressource d’échouer
Les équilibreurs de charge sont capables de détecter les nœuds défectueux dans votre cluster grâce aux diverses techniques algorithmiques et de vérification de l’état. En cas de panne, les charges peuvent être transférées vers un autre nœud sans affecter vos utilisateurs. Cela vous laisse le temps de résoudre le problème plutôt que de le traiter comme une urgence.
Équilibrage de charge sur Google Cloud Platform (GCP)
Une question courante que se posent les entreprises ayant choisi Google Cloud Platform comme leur fournisseur cloud préféré est la suivante : quelles offres d’équilibrage de charge sont disponibles sur GCP pour équilibrer efficacement leur charge de travail ? Dans cette section, je vais répondre à cette question en approfondissant l’équilibrage de charge sur GCP.
De nombreux sites Web à fort trafic servent aujourd’hui des centaines (voire des millions) de requêtes de clients/utilisateurs de façon simultanée. Ils renvoient les données d’application, la vidéo, les images ou le texte corrects, le tout de manière fiable et rapide.
En général, nous obtenons des erreurs de délai de connexion et des temps d’attente plus longs lorsqu’un backend d’application ne peut pas évoluer efficacement à mesure que le trafic réseau augmente.
Logiquement, on peut dire que l’ajout de serveurs backend pourrait résoudre le problème de trafic, mais l’utilisation efficace des ressources devient le prochain problème auquel il faut faire face. A ce titre, il faut considérer certaines choses, telles que la répartition efficace du trafic vers les serveurs backend en fonction de la capacité et de la manière d’arrêter d’envoyer du trafic vers un serveur backend défectueux.
C’est là qu’intervient l’équilibrage de charge GCP.
Les équilibreurs de charge sont des services gérés sur GCP qui distribuent le trafic sur plusieurs instances de votre application. GCP assure la gestion des frais généraux opérationnels et réduit le risque d’avoir une application non fonctionnelle, lente ou surchargée.
Examinons les différents types d’équilibrage de charge sur GCP.
Équilibrage de charge mondial (GLB)
L’équilibrage de charge mondial (GLB) est une pratique qui consiste à répartir le trafic entre les ressources des serveurs connectés situés dans différentes régions géographiques. Il répartit ainsi votre charge de travail à l’échelle mondiale au lieu de l’avoir dans un seul centre de données.
Les utilisateurs d’applications modernes sont partout dans le monde, et plus votre application est éloignée de vos utilisateurs, plus il faut du temps pour transmettre des données dans les deux sens. Un pool de serveurs à l’échelle mondiale avec un équilibreur de charge mondial garantit que vos utilisateurs peuvent se connecter à des serveurs géographiquement proches d’eux.
Les équilibreurs de charge mondiaux offrent des avantages améliorés en matière de gestion du trafic et de reprise après sinistre pour optimiser les performances d’une application. Vous pouvez considérer les services GLB comme des systèmes qui équilibrent la charge entre les unités de mises à l’échelle, les points de terminaison et les tampons d’application, hébergés dans plusieurs zones/régions géographiques. Contrairement à Azure et AWS, les équilibreurs de charge mondiaux GCP peuvent être utilisés pour gérer les ressources déployées dans plusieurs régions sans avoir besoin d’une configuration d’appairage de réseau et d’un VPN complexe.
(Remarque : Lorsque vous utilisez les équilibreurs de charge mondiaux de GCP, optez pour le niveau premium des niveaux de service réseau.)
Équilibrage de charge régional
Celui-ci vous permet de répartir votre charge de travail à travers un pool de serveurs qui sont situés dans la même région. Certaines entreprises servent des clients dans des régions spécifiques. Il s’agit peut-être d’une niche de marché spécifique à un pays particulier. Mais leur charge de travail peut être supérieure à ce qu’un seul serveur peut gérer. Ces entreprises peuvent en effet posséder une flotte de serveurs dans une région proche de leurs clients pour faire face à la charge de travail.
C’est là que l’équilibreur de charge régional entre en jeu. Il permet d’équilibrer la charge entre les clusters, les conteneurs ou les machines virtuelles dans une seule région.
Équilibrage de charge externe (ELB)
L’équilibrage de charge externe prend en charge les groupes d’instances ou de points de terminaison du réseau zonal (NEG), les NEG sans serveur, les NEG Internet et les buckets dans Cloud Storage. Vous pouvez utiliser ELB pour prendre en charge les services au niveau de l’application, du Web et de la base de données.
En outre, l’équilibrage de charge externe prend en charge l’équilibrage de charge basé sur le contenu et celui entre plusieurs régions que vous pouvez configurer via le niveau Premium. Les deux services utiliseront des services backend différents, chacun avec des NEG et des groupes d’instances backend dans plusieurs régions. Lorsque vous utilisez le niveau Premium, l’équilibreur de charge externe affiche également la même adresse IP externe mondiale à partir de divers points de présence et achemine le trafic vers le front end Google le plus proche.
Équilibrage de charge interne (ILB)
Grâce à l’équilibrage de charge interne, il est possible d’exécuter vos applications avec une adresse IP interne. En outre, vous pouvez disperser le trafic HTTP/HTTPs vers votre application backend hébergée sur Google Compute Engine (GCE) ou Google Kubernetes Engine (GKE).
L’équilibreur de charge interne est en effet un service géré qui est accessible uniquement sur une adresse IP interne et dans la région choisie de votre réseau Virtual Private Cloud. Vous pouvez l’utiliser pour acheminer et équilibrer le trafic de charge vers vos machines virtuelles. À un niveau élevé, les équilibreurs de charge internes se composent d’un ou de plusieurs services backends auxquels l’équilibreur de charge transfère le trafic ainsi que d’une adresse IP interne à laquelle les clients envoient le trafic.
Les équilibreurs de charge internes utilisent un mappage d’URL ainsi que des vérifications de l’état afin de fournir le service d’équilibrage de charge. Ils servent d’outils essentiels pour améliorer les applications héritées. En outre, ils prennent en charge les applications Web et les services au niveau de la base de données.
Équilibrage de charge TCP/SSL
Avec l’équilibrage de charge TCP/SSL, vous pouvez répartir le trafic TCP sur un pool d’instances de machines virtuelles qui se situent dans une région Compute Engine. En outre, il est possible d’utiliser les équilibreurs de charge TCP/SSL pour arrêter les connexions SSL (TSL) utilisateur au niveau de la couche d’équilibrage de charge. Les protocoles TCP ou SSL vont équilibrer les connexions entre vos instances backend.
Vous pouvez déployer des équilibreurs de charge TCP/SSL à l’échelle mondiale et les utiliser pour gérer la surcharge du trafic non HTTP(s) et TCP sur des ports spécifiques et connus. Lorsque vous disposez de plusieurs services dans différentes régions, un équilibreur de charge TCP/SSL détecte l’emplacement le plus proche avec une capacité de manière automatique et dirige votre trafic en conséquence. Lorsque vous utilisez des équilibreurs de charge TCP/SSL sur GCP, assurez-vous d’utiliser le niveau premium des niveaux de service réseau. Autrement, l’équilibrage de charge va devenir un service régional où tous vos backends doivent être situés dans la région utilisée par la règle de transfert et l’adresse IP externe de l’équilibreur de charge.
Équilibrage de charge proxy TCP
L’équilibrage de charge proxy TCP (TCP Proxy Load Balancing ou TPLB) est un service d’équilibrage mondial qui s’adapte au trafic non-HTTP ininterrompu. Il est implémenté sur Google Front Ends (GFEs) qui sont distribués dans le monde et fournit un flux de paquets fiable et vérifié vers de nombreuses adresses IP qui ne peuvent pas être facilement perdues ou corrompues.
Vous pouvez utiliser l’équilibreur de charge proxy TCP pour mettre fin à votre session TCP client et également transférer le trafic vers vos instances de machine virtuelle à l’aide de SSL ou TCP. Ces instances peuvent se trouver dans différentes régions. Ainsi, l’équilibreur va diriger le trafic vers la région la plus proche avec la capacité la plus élevée. Lorsque vous utilisez des équilibreurs de charge proxy TCP, vous ne pouvez avoir qu’un seul service backend, qui peut avoir plusieurs backends dans de nombreuses régions. Les composants des équilibreurs de charge TCP sont les règles/adresses de transfert ainsi que les proxys cibles.
L’équilibrage de charge TCP peut être utilisé chaque fois que vous avez un trafic TCP et que vous n’avez pas besoin de déchargement SSL.
Créer votre premier équilibreur de charge sur GCP
Dans cette section, vous allez apprendre à créer un équilibreur de charge sur GCP.
Pour une charge de travail de production, vous devez gérer et provisionner vos ressources via un code lisible par machine comme Terraform plutôt que via le navigateur Web. Mais pour simplifier les choses, les équilibreurs de charge dans cet exemple seront provisionnés à partir de GCP.
(Remarque : Pour accéder à GCP, vous devez disposer d’un compte Google. Vous pouvez cliquer sur ce lien pour en créer un.)
Voici les détails :
1ʳᵉ étape : créer un groupe d’instances
- Connectez-vous au tableau de bord GCP, cliquez sur « Compute Engine », puis sur « Groupes d’instances ».
- Une fois Compute Engine prêt, cliquez sur « Créer un groupe d’instances ».
- Saisissez le nom et la description, ensuite sélectionnez la zone (vous pouvez utiliser une ou plusieurs zones) et la région. Créez un modèle d’instance et cliquez sur « Créer ».
2ᵉ étape : Créer un équilibreur de charge HTTP(s)
- Pour créer l’équilibreur de charge HTTP(s), accédez à « Services réseau » et cliquez sur « Équilibrage de charge », ensuite sur « Créer un équilibreur de charge ».
- Cliquez sur le bouton « Démarrer la configuration » qui se trouve sous l’option d’équilibrage de charge HTTP(s).
- Sélectionnez la première option et cliquez sur « Continuer ». L’équilibreur de charge HTTP(s) va gérer la distribution du trafic des applications Web d’Internet vers vos machines virtuelles.
Définissez les configurations Backend et Frontend.
- Saisissez le nom de l’équilibreur de charge, puis sélectionnez la configuration du backend.
- Remplissez les informations nécessaires et créez une vérification de l’état.
La prochaine étape consiste à créer le service backend. La vérification de l’état permet de garantir que Compute Engine achemine le trafic uniquement vers des instances saines et existantes.
Voir les images ci-dessous :
- Cliquez sur « Règles d’hôte et de chemin d’accès » et confirmez que le service backend que vous avez créé est sélectionné.
- Pour créer une configuration Frontend, cliquez sur « Configuration Frontend » et saisissez le nom.
- Cliquez sur la case Adresse IP pour réserver une nouvelle adresse IP statique, puis sur « Ajouter une adresse IP et un port frontend ».
- Cliquez sur l’onglet « Vérifier et terminer » pour confirmer que tout est vérifié. Si la configuration est bonne, vous pouvez simplement appuyer sur le bouton « Créer ».
Félicitations ! Vous avez maintenant terminé de créer votre premier équilibreur de charge sur GCP.
Remarque : vous pouvez cliquer sur l’équilibreur de charge que vous avez créé pour afficher ses détails (comme indiqué ci-dessous).