HaProxy est utilisé par des sites populaires tels que Tumblr, GitHub et StackOverflow. Dans ce guide, nous vous expliquerons l'installation de HAProxy dans une configuration de serveurs Web alimentés à l'aide de Nginx.
Configuration du laboratoire
3 instances de serveurs CentOS 7 comme indiqué
Nom d'hôte Adresses IPload_balancer 3.17.12.132
server_01 3.19.229.234
server_02 3.17.9.217
Étape 1 : modifiez le fichier /etc/hosts pour l'équilibreur de charge
Pour commencer, connectez-vous au système d'équilibrage de charge et modifiez le fichier /etc/hosts pour inclure les noms d'hôte et les adresses IP des deux serveurs Web, comme indiqué
$ vim /etc/hosts3.19.229.234 serveur_01
3.17.9.217 serveur-02
Une fois cela fait, enregistrez les modifications et quittez le fichier de configuration.
Rendez-vous maintenant sur chacun des serveurs Web et mettez à jour le /etc/hôtes fichier avec l'adresse IP et le nom d'hôte de l'équilibreur de charge
3.17.12.132 équilibreur de chargeEnsuite, confirmez que vous pouvez envoyer un ping à l'équilibreur de charge à partir du serveur_01
Et de même depuis server_02
Assurez-vous également que vous pouvez effectuer un ping sur les serveurs à partir de l'équilibreur de charge.
Parfait ! tous les serveurs peuvent communiquer avec l'équilibreur de charge!
Étape 2 : Installer et configurer le proxy HA sur l'équilibreur de charge
Étant donné que le proxy HA est facilement disponible à partir du référentiel officiel CentOS, nous allons l'installer à l'aide du gestionnaire de packages yum ou dnf.
Mais comme toujours, mettez d'abord le système à jour
# miam mise à jourEnsuite, installez HA Proxy comme indiqué
# miam installer haproxy
Une fois l'installation réussie, accédez au répertoire haproxy.
# cd /etc/haproxyLes meilleures pratiques nous obligent à sauvegarder tout fichier de configuration avant d'apporter des modifications. Alors sauvegardez le happroxy.cfg fichier en le renommant.
# mv haproxy.cfg haproxy.cfg.bakEnsuite, continuez et ouvrez le fichier de configuration
vim haproxy.cfgAssurez-vous de faire la modification comme indiqué
#---------------------------------------------------------------------# Paramètres globaux
#---------------------------------------------------------------------
global
journal 127.0.0.1 local2 #Configuration du journal
chroot /var/lib/haproxy
pidfile /var/run/haproxy.pid
maxconn 4000
user haproxy #Haproxy exécuté sous l'utilisateur et le groupe "haproxy"
groupe happroxy
démon
# activer le socket unix des statistiques
socket de statistiques /var/lib/haproxy/stats
#---------------------------------------------------------------------
# valeurs par défaut communes que toutes les sections « listen » et « backend » seront
# utiliser si non désigné dans leur bloc
#---------------------------------------------------------------------
valeurs par défaut
mode http
log global
option httplog
option dontlognull
option http-server-close
option forwardfor sauf 127.0.0.0/8
option réexpédition
nouvelles tentatives 3
délai d'attente http-requête 10 s
file d'attente de délai d'attente 1 minute
délai d'attente de connexion 10 s
client de délai d'attente 1 minute
serveur de délai d'attente 1 minute
délai d'attente http-keep-alive 10s
vérification du délai d'attente 10 s
maxconn 3000
#---------------------------------------------------------------------
#HAProxy Monitoring Config
#---------------------------------------------------------------------
listen haproxy3-monitoring *:8080 #Haproxy Monitoring s'exécute sur le port 8080
mode http
option avant pour
option httpfermer
les statistiques activent
stats show-légendes
actualisation des statistiques 5s
stats uri /stats #URL pour la surveillance HAProxy
stats royaume Haproxy\ Statistiques
stats auth Password123 : Password123#User et Password pour se connecter au tableau de bord de surveillance
stats admin si VRAI
default_backend app-main #Ceci est facultativement pour la surveillance du backend
#---------------------------------------------------------------------
# Configuration frontale
#---------------------------------------------------------------------
frontend principal
lier *:80
option http-server-close
option avant pour
default_backend app-main
#---------------------------------------------------------------------
# BackEnd round robin comme algorithme d'équilibre
#---------------------------------------------------------------------
application principale principale
balance roundrobin #Balance algorithm
option httpchk HEAD / HTTP/1.1\r\nHôte :\ hôte local
#Vérifiez que l'application serveur est opérationnelle et en bonne santé - 200 code d'état
serveur serveur_01 3.19.229.234:80 vérifier #Nginx1
serveur serveur_02 3.17.9.217:80 vérifier #Nginx2
Assurez-vous de modifier le nom d'hôte et les adresses IP des serveurs Web comme indiqué dans les deux dernières lignes. Enregistrez les modifications et quittez.
La prochaine étape sera de configurer Rsyslog pour pouvoir enregistrer les statistiques HAProxy.
# vim /etc/rsyslog.confAssurez-vous de décommenter les lignes ci-dessous pour autoriser les connexions UDP
$ModLoad imudp$UDPServerRun 514
Ensuite, continuez et créez un nouveau fichier de configuration happroxy.conf
# vim /etc/rsyslog.d/happroxy.confCollez les lignes suivantes, enregistrez et quittez
local2.=info /var/log/haproxy-access.log #Pour le journal d'accèslocal2.avis /var/log/haproxy-info.log #For Service Info - Backend, loadbalancer
Pour que les modifications prennent effet, redémarrez le démon rsyslog comme indiqué :
# systemctl redémarrer rsyslogPuis démarrez et activez HAProxy
# systemctl démarrer rsyslog# systemctl activer rsyslog
Vérifiez que HAProxy est en cours d'exécution
# systemctl status rsyslog
Étape 3 : Installez et configurez Nginx
Maintenant, la seule partie restante est l'installation de Nginx. Connectez-vous à chacun des serveurs et mettez d'abord à jour les packages système :
# miam mise à jourProchaine installation EPEL (Packages supplémentaires pour Enterprise Linux)
# miam installer epel-releasePour installer Nginx, exécutez la commande :
# miam installer nginxEnsuite, démarrez et activez Nginx
# systemctl démarrer nginx# systemctl activer nginx
Nous allons ensuite modifier l'index.html dans les deux cas afin de démontrer ou de simuler comment l'équilibreur de charge est capable de répartir le trafic Web sur les deux serveurs.
Pour le serveur_01
# echo "serveur_01. Hey ! Bienvenue sur le premier serveur Web" > index.htmlPour le serveur_02
# echo "serveur_02. Hey ! Bienvenue sur le deuxième serveur Web" > index.htmlPour que les modifications soient effectuées, redémarrez Nginx
# systemctl redémarrer nginxÉtape 4 : Tester si l'équilibreur de charge fonctionne
Nous sommes enfin au point où nous voulons voir si la configuration fonctionne. Connectez-vous donc à l'équilibreur de charge et exécutez la commande curl à plusieurs reprises
# boucle 3.17.12.132Vous devriez obtenir une sortie alternative sur le terminal indiquant la valeur de l'index.html de server_01 et server_02
Testons maintenant à l'aide d'un navigateur Web. Parcourir l'adresse IP de votre équilibreur de charge
http://load-balancer-IP-addressLa première page affichera le contenu de l'un des serveurs Web
Actualisez maintenant la page Web et vérifiez si elle affiche le contenu de l'autre serveur Web
Parfait ! L'équilibre de charge répartit le trafic IP de manière égale entre les deux serveurs Web !
Ceci conclut ce tutoriel sur la façon dont vous pouvez installer et configurer HAProxy sur CentOS 8. Vos commentaires seront très appréciés.