HAProxy signifie proxy haute disponibilité. Écrit en C, il s'agit d'un équilibreur de charge TCP/HTTP gratuit et open-source et d'une solution de proxy pour les applications basées sur TCP et HTTP. HAProxy est utilisé pour améliorer les performances d'un environnement de serveur en répartissant la charge de travail sur plusieurs serveurs.
HAProxy permet à une application de redémarrer automatiquement ou de rediriger le travail vers un autre serveur en cas de panne. Cet équilibreur de charge puissant, performant, fiable et sécurisé est le plus utilisé et a été spécialement conçu pour les sites Web à très fort trafic.
Dans ce tutoriel, nous allons vous montrer comment configurer un équilibreur de charge haute disponibilité avec HAProxy sur CentOS 8.
Prérequis
- Trois nouveaux VPS CentOS 8 sur la plate-forme cloud Atlantic.Net
- Un mot de passe root configuré sur chaque VPS
Pour ce didacticiel, nous utiliserons la configuration suivante :
Serveur HAProxy : – nom d'hôte :haproxy IP :192.168.0.10
Serveur Web 1 :- nom d'hôte :web1 IP :192.168.0.11
Serveur Web 2 :- nom d'hôte :web2 IP :192.168.0.12
Étape 1 - Créer un serveur cloud Atlantic.Net
Tout d'abord, connectez-vous à votre serveur Atlantic.Net Cloud. Créez un nouveau serveur en choisissant CentOS 8 comme système d'exploitation avec au moins 1 Go de RAM. Connectez-vous à votre serveur cloud via SSH et connectez-vous à l'aide des informations d'identification mises en évidence en haut de la page.
Une fois que vous êtes connecté à votre serveur CentOS 8, exécutez la commande suivante pour mettre à jour votre système de base avec les derniers packages disponibles.
dnf update -y
Étape 2 - Installer et configurer Nginx
Remarque :Effectuez cette étape sur WebServer 1 et WebServer2
Tout d'abord, vous devrez installer le serveur Web Nginx sur les instances web1 et web2.
Vous pouvez installer Nginx en exécutant la commande suivante :
dnf install nginx -y
Une fois Nginx installé, démarrez le service Nginx et activez-le pour qu'il démarre au démarrage sur les deux instances :
systemctl start nginx systemctl enable nginx
Ensuite, modifiez le index.html fichier sur chaque instance.
Modifier index.html fichier sur web1 instance avec la commande suivante :
echo "This is My First Nginx Web Server" > /usr/share/nginx/html/index.html
Modifier index.html fichier sur web2 instance avec la commande suivante :
echo "This is My Second Nginx Web Server" > /usr/share/nginx/html/index.html
Enregistrez et fermez le fichier lorsque vous avez terminé.
Étape 3 - Installer et configurer HAProxy
Remarque :Effectuez cette étape sur le serveur HAProxy
Tout d'abord, installez HAProxy sur l'instance du serveur haproxy avec la commande suivante :
dnf install haproxy -y
Une fois l'installation terminée, sauvegardez le fichier de configuration par défaut d'haproxy :
mv /etc/haproxy/haproxy.cfg /etc/haproxy/haproxy.cfg-bak
Le fichier de configuration est divisé en quatre sections principales.
- paramètres globaux : Utilisé pour définir des paramètres à l'échelle du processus.
- par défaut : Utilisé pour définir les paramètres par défaut pour toutes les autres sections.
- interface : Utilisé pour définir comment HAProxy est accessible en externe pour permettre l'accès au backend.
- back-end : Utilisé pour définir un ensemble de serveurs auxquels le proxy se connectera pour transférer les connexions entrantes.
Créez ensuite un nouveau fichier de configuration haproxy à l'aide de la commande suivante :
nano /etc/haproxy/haproxy.cfg
Ajoutez les lignes suivantes qui correspondent à votre infrastructure :
#————————————————————————
global log 127.0.0.1 local2 chroot /var/lib/haproxy pidfile /var/run/haproxy.pid maxconn 4000 user haproxy group haproxy daemon
# activer le socket stats unix
stats socket /var/lib/haproxy/stats
# utiliser des politiques de chiffrement à l'échelle du système
ssl-default-bind-ciphers PROFILE=SYSTEM ssl-default-server-ciphers PROFILE=SYSTEM
#————————————————————————
defaults mode http log global option httplog option dontlognull option http-server-close option forwardfor except 127.0.0.0/8 option redispatch retries 3 timeout http-request 10s timeout queue 1m timeout connect 10s timeout client 1m timeout server 1m timeout http-keep-alive 10s timeout check 10s maxconn 3000
#————————————————————————
# interface principale qui proxyse les backends
#————————————————————————
frontend haproxy_balancer # define the name of the frontend. bind 192.168.0.10:80 # IP address of HAProxy server option http-server-close option forwardfor stats uri /haproxy?stats # Specify the HAProxy status page. default_backend webservers
#————————————————————————
# équilibrage à tour de rôle entre les différents backends
#————————————————————————
serveurs web backend # Spécifiez un nom pour identifier une application
mode http balance roundrobin # defines the roundrobin load balancer scheduling algorithm option httpchk HEAD / HTTP/1.1\r\nHost:\ localhost server nginx-web1 192.168.0.11:80 check # IP address of the first backend server server nginx-web2 192.168.0.12:80 check # IP address of the second backend server
Remarque :Assurez-vous de modifier l'adresse IP ci-dessus avec l'adresse IP correspondant à la configuration de votre serveur
Enregistrez et fermez le fichier lorsque vous avez terminé. Ensuite, vérifiez le fichier de configuration haproxy pour toute erreur avec la commande suivante :
haproxy -c -f /etc/haproxy/haproxy.cfg
Vous devriez obtenir le résultat suivant :
Configuration file is valid
Enfin, démarrez le service haproxy et activez-le au démarrage avec la commande suivante :
systemctl start haproxy systemctl enable haproxy
Vous pouvez également vérifier haproxy avec la commande suivante :
systemctl status haproxy
Vous devriez obtenir le résultat suivant :
haproxy.service - HAProxy Load Balancer
Loaded: loaded (/usr/lib/systemd/system/haproxy.service; disabled; vendor preset: disabled) Active: active (running) since Fri 2020-04-24 02:14:55 EDT; 5min ago Process: 1371 ExecStartPre=/usr/sbin/haproxy -f $CONFIG -c -q (code=exited, status=0/SUCCESS) Main PID: 1373 (haproxy) Tasks: 2 (limit: 6087) Memory: 2.8M CGroup: /system.slice/haproxy.service ├─1373 /usr/sbin/haproxy -Ws -f /etc/haproxy/haproxy.cfg -p /run/haproxy.pid └─1374 /usr/sbin/haproxy -Ws -f /etc/haproxy/haproxy.cfg -p /run/haproxy.pid Apr 24 02:14:55 haproxy systemd[1]: Starting HAProxy Load Balancer... Apr 24 02:14:55 haproxy systemd[1]: Started HAProxy Load Balancer.
Étape 4 - Configurer la journalisation HAProxy
La journalisation HAProxy vous permet de voir les statistiques de chaque connexion à vos serveurs Web principaux.
Vous pouvez configurer rsyslog en éditant le fichier /etc/rsyslog.conf :
nano /etc/rsyslog.conf
Décommentez la ligne suivante :
module(load="imudp") input(type="imudp" port="514")
Enregistrez et fermez le fichier lorsque vous avez terminé. Ensuite, vous devrez configurer un serveur rsyslog pour recevoir et traiter les messages du journal HAProxy.
Pour ce faire, créez un nouveau fichier de configuration haproxy.conf :
nano /etc/rsyslog.d/haproxy.conf
Ajoutez les lignes suivantes :
local2.=info /var/log/haproxy-access.log local2.notice /var/log/haproxy-info.log
Enregistrez et fermez le fichier lorsque vous avez terminé. Ensuite, redémarrez le service rsyslog et activez-le pour qu'il démarre au démarrage avec la commande suivante :
systemctl restart rsyslog systemctl enable rsyslog
Étape 5 :Tester l'équilibrage de charge HAProxy
À ce stade, HAProxy est installé et configuré. Il est temps de tester si l'équilibrage de charge fonctionne ou non.
Ouvrez votre navigateur Web et saisissez votre IP HAProxy http://192.168.0.10. Vous devriez voir le contenu de votre premier serveur Web Nginx dans l'écran suivant :
Ensuite, actualisez la page Web. Vous devriez voir le contenu de votre deuxième serveur Web Nginx dans l'écran suivant :
Vous pouvez afficher l'état de haproxy à l'aide de l'URL http://192.168.0.10/haproxy?stats. Vous devriez voir la santé de vos serveurs, les taux de requêtes actuels, les temps de réponse et d'autres mesures dans l'écran suivant :
Conclusion
Dans le guide ci-dessus, nous avons appris à configurer un équilibreur de charge haute disponibilité avec HAProxy sur CentOS 8. Vous pouvez désormais facilement concevoir et configurer l'équilibrage de charge en fonction de votre infrastructure informatique et des exigences de l'application ; essayez-le sur l'hébergement VPS d'Atlantic.Net.