Comment équilibrer la charge du site entre GCP et AWS à l'aide de Cloudflare ?
Explorez comment tirer parti de l'équilibreur de charge Cloudflare (LB) pour optimiser la distribution du trafic entre les infrastructures AWS (Amazon Web Services) et GCP (Google Cloud Platform).
La majorité des applications web ont recours à la répartition de charge entre différents serveurs ou services, souvent au sein du même centre de données.
Néanmoins, pour les applications critiques nécessitant une disponibilité ininterrompue à l'échelle mondiale, un équilibreur de charge basé sur le cloud devient indispensable.
Il ne s'agit pas uniquement de disponibilité, mais également de répondre à divers besoins spécifiques tels que :
- La mise en place d'architectures actif-passif ou actif-actif entre les centres de données.
- L'implémentation de plans de reprise après sinistre efficaces.
- L'optimisation de la latence en exploitant plusieurs centres de données pour répondre aux requêtes depuis l'emplacement géographique le plus proche.
- Les exigences de conformité.
Cloudflare propose des solutions d'équilibrage de charge à la fois locales et globales, permettant de rediriger le trafic vers plusieurs centres de données de manière intelligente.
Voici quelques-unes des fonctionnalités clés de l'équilibreur de charge Cloudflare :
- Intégration de vérifications d'état pour une détection rapide et la mise hors ligne des serveurs défaillants.
- Déclenchement automatique du basculement vers un autre serveur en cas d'échec des vérifications d'état.
- Réduction de la latence en acheminant les requêtes vers le serveur le plus proche géographiquement.
- Prise en charge des protocoles DNS, HTTP(S), TCP et UDP.
- Maintien de la persistance de session, assurant que les requêtes sont dirigées vers le même serveur pour une expérience utilisateur cohérente.
Vous pouvez configurer tous ces paramètres via le tableau de bord Cloudflare ou l'API.
Bien que les instructions suivantes soient applicables à l'équilibrage de charge sur diverses plateformes cloud comme Azure, DigitalOcean, ou encore Alibaba Cloud, nous allons ici nous concentrer sur un exemple concret avec GCP et AWS.
Détails de la configuration AWS et GCP
Pour cette démonstration, j'ai déployé un serveur sur les plateformes GCP et AWS, avec les configurations suivantes :
- Installation de Nginx.
- Création d'un fichier index.html contenant un texte distinctif pour identifier le serveur d'origine de chaque page.
- Démarrage de Nginx, permettant l'accès à la page depuis les deux serveurs.
À présent, passons à Cloudflare pour configurer l'équilibrage de charge.
Activation de l'équilibreur de charge Cloudflare
J'utiliserai un nom de domaine (bloggerflare.com) disponible pour cet exercice.
Note importante : L'équilibreur de charge de Cloudflare n'est pas un service gratuit. Les tarifs démarrent à 5 $ par mois.
Je pars du principe que vous avez déjà un compte Cloudflare. Si ce n'est pas le cas, vous pouvez en créer un et ajouter votre domaine, comme je l'ai expliqué dans un précédent article.
- Connectez-vous à Cloudflare et sélectionnez le domaine sur lequel vous souhaitez activer l'équilibrage.
- Naviguez vers l'onglet "Trafic" et activez la fonctionnalité "Équilibrage de charge".
- Configurez les options en fonction de vos besoins. Je vais opter pour une configuration minimale pour cette démonstration.
Si vous souhaitez que les requêtes soient acheminées vers le serveur le plus proche de l'utilisateur, activez l'option de routage géographique.
- Confirmez votre abonnement et activez le service.
Comme vous pouvez le constater, le service est accessible à partir de 5 $ par mois, avec deux serveurs d'origine et un intervalle de vérification de l'état d'une minute.
Les coûts d'infrastructure sont désormais très abordables. Il y a quelques années, auriez-vous imaginé pouvoir bénéficier d'un équilibreur de charge dans le cloud pour un tel prix ?
Ceci indique que l'équilibreur de charge Cloudflare est activé et prêt à être configuré.
Création de l'équilibreur de charge Cloudflare
Après quelques secondes pour confirmer l'abonnement, vous serez redirigé vers la page "Trafic".
- Cliquez sur "Créer un équilibreur de charge".
- Saisissez le nom de domaine sur lequel vous souhaitez configurer l'équilibrage.
- Développez l'option "Affinité de session" et sélectionnez "Par cookie Cloudflare" si vous souhaitez activer la persistance de session.
- Nommez le pool, qui correspond aux serveurs d'origine (les serveurs vers lesquels le trafic sera dirigé).
- Ensuite, configurez une vérification d'état.
Les vérifications d'état sont cruciales. Cloudflare cessera d'envoyer du trafic vers un serveur d'origine si les vérifications d'état échouent.
- Si votre serveur d'origine écoute sur le port 80, sélectionnez HTTP ; si c'est le port 443, sélectionnez HTTPS.
Cloudflare vous permet également de configurer des paramètres de vérification d'état avancés tels que :
- La méthode HTTP (GET ou HEAD).
- Le code d'état HTTP attendu.
- La validation de contenu dans le corps de la réponse.
- Le nombre de tentatives avant qu'un serveur ne soit considéré comme sain ou défaillant.
- La validation du nom d'en-tête.
Enfin, enregistrez la configuration et déployez-la.
- L'équilibreur de charge effectuera une vérification de l'état. En quelques secondes, vous devriez voir que l'état est "Sain".
Parfait ! L'équilibreur de charge Cloudflare est désormais configuré pour accepter le trafic et le transférer vers les serveurs d'origine.
Test de l'équilibreur de charge
Effectuons un test simple pour vérifier que tout fonctionne correctement.
- Commencez par accéder à votre domaine.
Excellent !
L'équilibreur de charge a acheminé la requête vers la machine virtuelle Google Cloud et a reçu la réponse. Je peux voir la requête dans les logs de Nginx.
162.158.167.174 - - [19/Dec/2017:10:25:41 +0000] "GET / HTTP/1.1" 304 0 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.84 Safari/537.36"
- Je vais maintenant arrêter Nginx sur GCP et accéder de nouveau à la page.
- Et voilà. La page demandée est maintenant servie depuis le serveur AWS.
Je peux voir que l'équilibreur de charge a mis hors service le membre du pool GCP.
Par défaut, l'adresse IP de Cloudflare sera visible dans les journaux d'accès de Nginx. Si vous souhaitez rétablir l'adresse IP du client, vous pouvez consulter ce guide.
Conclusion
La mise en place d'un équilibreur de charge Cloudflare est simple et rapide, prenant moins de 15 minutes. Si vous recherchez une solution de haute disponibilité entre plusieurs centres de données ou serveurs d'origine, n'hésitez pas à l'essayer pour constater par vous-même son efficacité.
Avez-vous apprécié cet article ? N'hésitez pas à le partager !