Comment configurer Haproxy comme équilibreur de charge pour Nginx sur Centos 8
- 4460
- 1392
- Victor Charpentier
Pour garantir la disponibilité maximale des applications Web, l'évolutivité et les performances élevées, il est désormais courant de mettre en œuvre des technologies qui introduisent la redondance, telles que le clustering de serveurs et l'équilibrage de la charge. Par exemple, la configuration d'un groupe de serveurs qui exécutent tous les mêmes applications, puis déploient des équilibres de chargement devant eux pour distribuer le trafic.
Haproxy est une haute disponibilité open source, puissante, fiable, sécurisée et largement utilisée TCP / HTTP Balancer de chargement, serveur proxy et terminateur SSL / TLS construit pour des sites Web à très haut trafic. Il fonctionne bien sur Linux, Solaris, FreeBSD, Openbsd ainsi que les systèmes d'exploitation AIX.
Ce guide montre comment configurer un équilibreur de charge de haute disponibilité dédié avec Haproxy sur Centos 8 pour contrôler le trafic dans un groupe de Nginx serveurs Web. Il montre également comment configurer SSL / TLS résiliation Haproxy.
Conditions préalables:
Un total de 4 serveurs avec un minimum d'installation de CentOS 8.
Configuration de l'environnement de test
----------- Configuration du serveur Haproxy ----------- HA Proxy Server - Nom d'hôte: Haproxy-Server.Tecmint.lan; IP: 10.42.0.247 Domaine du site de test: www.Tecmint.lan ----------- Configuration des serveurs Web client ----------- Serveur Web # 1 - Nom d'hôte: Websrv1.Tecmint.lan; IP: 10.42.0.200 Web Server # 2 - Nom d'hôte: Websrv2.Tecmint.lan; IP: 10.42.0.21 serveur Web # 3 - Nom d'hôte: Websrv3.Tecmint.lan; IP: 10.42.0.34
Étape 1: Configuration du serveur NGINX HTTP sur les machines clients
1. Connectez-vous dans tous vos Centos 8 machines clients et installer le Nginx Serveur Web utilisant le gestionnaire de packages DNF comme indiqué.
# dnf installer nginx
2. Ensuite, commencez le Nginx Le service, pour l'instant, lui permettait de démarrer automatiquement au démarrage du système et de confirmer qu'il est opérationnel en vérifiant son statut, en utilisant les commandes SystemCTL (faites-le sur toutes les machines clients).
# systemctl start nginx # systemctl activer nginx # statut systemctl nginx
3. De plus, si le service Firewalld s'exécute sur toutes les machines clients (que vous pouvez vérifier en exécutant SystemCTL Start Firewalld), vous devez ajouter le Http et Https Les services dans la configuration du pare-feu pour permettre aux demandes de l'équilibreur de charge passe par le pare-feu Nginx serveurs Web. Puis recharger le pare-feu Service pour effectuer les nouvelles modifications (faites-le sur toutes les machines clients).
# Firewall-Cmd --zone = public --permanent --Add-Service = http # Firewall-Cmd --zone = public --permanent --add-Service = Https # Firewall-Cmd --reload
4. Ensuite, ouvrez un navigateur Web sur vos machines locales et testez si le Nginx L'installation fonctionne bien. Utilisez les IP du client pour naviguer, une fois que vous voyez le Nginx Page de test, cela signifie que le serveur Web installé sur la machine client fonctionne correctement.
Tester l'installation de Nginx sur toutes les machines client CentOS 85. Ensuite, nous devons créer des pages de test sur les machines clients que nous utiliserons plus tard pour tester le Haproxy installation.
----------- Serveur Web # 1 ----------- # cp / usr / share / nginx / html / index.html / usr / share / nginx / html / index.html.orig # echo "Affichage du site de WebSrv1.Tecmint.lan "> / usr / share / nginx / html / index.html ----------- Serveur Web n ° 2 ----------- # cp / usr / share / nginx / html / index.html / usr / share / nginx / html / index.html.orig # echo "Affichage du site à partir de Websrv2.Tecmint.lan "> / usr / share / nginx / html / index.html ----------- Serveur Web # 3 ----------- # cp / usr / share / nginx / html / index.html / usr / share / nginx / html / index.html.orig # echo "Affichage du site à partir de websrv3.Tecmint.lan "> / usr / share / nginx / html / index.html
Étape 2: Installation et configuration du serveur Haproxy sur Centos 8
6. Installez maintenant le Haproxy package sur le Haproxy serveur en exécutant la commande suivante.
# DNF Installer Haproxy
7. Ensuite, commencez le Haproxy Service, permettez-lui à de démarrer automatiquement au démarrage du système et à vérifier son statut.
# systemctl start haproxy # systemctl activer haproxy # statut systemctl status haproxyVérifiez le statut de haproxy dans les centos 8
8. Nous allons maintenant configurer le haproxy à l'aide du fichier de configuration suivant.
# vi / etc / haproxy / haproxy.CFG
Le fichier de configuration est divisé en quatre sections principales.
- paramètres globaux - Définit les paramètres à l'échelle du processus.
- par défaut - Cette section définit les paramètres par défaut pour toutes les autres sections après sa déclaration.
- l'extrémité avant - Cette section décrit un ensemble de prises d'écoute acceptant les connexions du client.
- Backend - Cette section décrit un ensemble de serveurs auxquels le proxy se connectera aux connexions entrantes.
Pour comprendre les options sous paramètres globaux et par défaut, Lisez la documentation Haproxy (lien fourni à la fin de l'article). Pour ce guide, nous utiliserons les valeurs par défaut.
Configuration de la journalisation haproxy
9. Haproxy Une fois la fois déployée, jouera un rôle important dans votre infrastructure informatique, la configuration de la journalisation est donc une exigence de base; Cela vous permet d'obtenir des informations sur chaque connexion à vos serveurs Web backend.
Le paramètre de journal (mis en évidence dans la capture d'écran suivante) Syslog serveur (tel que rsyslog la valeur par défaut dans CentOS) qui recevra des messages de journal. Plus d'un serveur peut être déclaré ici.
La configuration par défaut pointe vers le hôte local (127.0.0.1) et local2 est le code d'installation par défaut utilisé pour identifier les messages de journal haproxy sous rsyslog.
Paramètre de journal par défaut de Haproxydix. Ensuite, vous devez dire le rsyslog serveur comment recevoir et traiter Haproxy enregistrer les messages. Ouvrez le fichier de configuration RSYSLOG à / etc / rsyslog.confli ou créez un nouveau fichier dans le / etc / rsyslog.d Répertoire, par exemple / etc / rsyslog.d / haproxy.confli.
# vi / etc / rsyslog.d / haproxy.confli
Copiez et collez la configuration suivante pour collecter le journal avec UDP sur le port par défaut 514.
$ Modload iMudp $ udpServerAddress 127.0.0.1 $ udpserverrun 514
Ajoutez également ces lignes pour instruire rsyslog Pour écrire à deux fichiers journaux distincts en fonction de la gravité, où local2 Le code de l'installation est-il défini dans la configuration Haproxy ci-dessus.
local2.* / var / log / haproxy-trafic.journal local2.Avis / var / log / haproxy-admin.enregistrer
11. Enregistrez le fichier et fermez-le. Puis redémarrez le rsyslog Service pour appliquer les changements récents.
# systemctl redémarrer rsyslog
Configuration de Haproxy Front-end et back-end
12. Dans cette section, nous montrerons comment configurer les proxys frontaux et back-end. Retournez au Haproxy Fichier de configuration et modifier les sections frontales et backend par défaut comme suit. Nous n'entrerons pas dans une explication détaillée de chaque paramètre, vous pouvez toujours vous référer à la documentation officielle.
La configuration suivante définit un écouter Section utilisée pour servir le Statistiques de Haproxy page. Le lier Le paramètre attribue un auditeur à une adresse IP donnée (*
pour tous dans ce cas) et port (9000).
Les statistiques activer Le réglage permet la page statistique qui sera accessible en utilisant le Uri / statistiques (je.e http: // server_ip: 9000 / statistiques
).
Les statistiques authentification Le paramètre est utilisé pour ajouter une authentification de base lors de l'accès à la page (remplacer haproxy et [Protégé par e-mail] avec un nom d'utilisateur et un mot de passe de votre choix).
Écouter Stats Bind *: 9000 statistiques Activer les statistiques Hide-Version Statistiques URI / Statistiques Statistiques Admin si LocalHost Stats Auth Haproxy: [Protégé par e-mail]
13. La configuration suivante définit une section frontend appelée Tl (vous pouvez donner un nom de votre goût). Le mode Le paramètre définit le mode Haproxy fonctionne dans.
Le ACL (Liste de contrôle d'accès) Le paramètre est utilisé pour prendre une décision basée sur le contenu extrait de la demande. Dans cet exemple, la demande est considérée comme claire Http Si ce n'est pas fait SSL.
Puis le leader de set de la demande HTTP Le paramètre est utilisé pour ajouter un en-tête HTTP à la demande. Cela aide à informer Nginx que la demande initiale a été faite Http (ou via le port 80).
Le default_backend ou use_backend La directive définit les serveurs backend, dans ce cas, référencés par Tl_web_servers.
Noter que Haproxy retournera un "503 Erreur indisponible du service«Si une demande n'est pas acheminée par un use_backend ou default_backend directif.
Frontend tl bind *: 80 mode http acl http ssl_fc, pas http-request set-header x-fiwarded-protocol http si http default_backend tl_web_servers
14. Ensuite, nous devons définir une section backend où le équilibre Le réglage définit comment Haproxy Sélectionne les serveurs back-end pour traiter une demande si aucune méthode de persistance ne remplace cette sélection.
Le biscuit directive active cookie persévérance, il instruit Haproxy Pour envoyer un cookie nommé Serveur au client et pour l'associer au IDENTIFIANT du serveur qui a donné la réponse initiale.
Le serveur La directive est utilisée pour définir les serveurs en amont dans le format SEVER_NAME (e.g Websrv1), server_ip: port et options.
Une option clé est vérifier qui raconte Haproxy Pour continuer à vérifier la disponibilité d'un serveur et faire un rapport sur la page des statistiques.
Backend TL_WEB_SERVERS MODE HTTP Balance Roundrobin Option httpchk Head / Cookie ServerUid INSERT INDERRECT NOCACHE Server Websrv1 10.42.0.200: 80 Cookie Websrv1 Vérifier le serveur WebSrv2 10.42.0.21:80 Cookie Websrv2 Vérifier le serveur WebSrv3 10.42.0.34:80 Cookie Websrv3 Check
Commentez toutes les autres sections frontend et backend comme indiqué dans la capture d'écran qui suit. Enregistrez le fichier et fermez-le.
Configuration de Haproxy Front-end et back-end15. Redémarrez maintenant le Haproxy Service pour appliquer les nouvelles modifications.
# SystemCTL Redémarrer Haproxy
16. Ensuite, assurez-vous que le Http (port 80) et Https (port 433) Les services sont ouverts dans le pare-feu pour accepter les demandes des clients comme suit. Aussi, port ouvert 9000 dans le pare-feu pour accéder à la page des statistiques et recharger les paramètres du pare-feu.
# Firewall-Cmd --zone = public --permanent --Add-Service = HTTP # Firewall-Cmd --zone = public --permanent -add-Service = https # Firewall-Cmd --zone = public --permanent - -Add-Port = 9000 / TCP # Firewall-CMD - Reload
Étape 3: Test des statistiques de configuration et de visualisation de Haproxy
17. Maintenant il est temps de tester le Haprxoy installation. Sur la machine de bureau locale où vous accédez à tous les serveurs, ajoutez la ligne suivante dans le / etc / hôtes fichier pour nous permettre d'utiliser le domaine du site factice.
dix.42.0.247 www.Tecmint.lan
18. Ensuite, ouvrez un navigateur et naviguez à l'aide de l'adresse du serveur ou du domaine du site.
http: // 10.42.0.247 / ou http: // www.Tecmint.lan /Vérifier la configuration de l'haproxy
19. Pour accéder au Haproxy Page statistique, utilisez l'adresse suivante.
http: // 10.42.0.247: 9000 / statistiques
Ensuite, utilisez le nom d'utilisateur et le mot de passe que vous avez défini dans le fichier de configuration Haproxy (reportez-vous au paramètre Auth Stats).
Page de connexion des statistiques HaproxyAprès une connexion réussie, vous atterrirez au Haproxy Page de statistiques qui vous montre des métriques qui couvrent la santé de vos serveurs, les taux de demande actuels, les temps de réponse et bien plus encore.
Pour démontrer comment fonctionne le rapport d'état concernant les codes de couleur, nous avons mis l'un des serveurs back-end.
Rapport de statistiques HaproxyÉtape 4: Configuration de HTTPS dans Haproxy à l'aide d'un certificat SSL auto-signé
20. Dans cette dernière section, nous montrerons comment configurer SSL / TLS Pour sécuriser toutes les communications entre le serveur Haproxy et le client. Haproxy soutient quatre majeurs Https Modes de configuration, mais pour ce guide, nous utiliserons SSL / TLS déchargement.
Dans SSL / TLS mode de déchargement, Haproxy déchiffre le trafic sur le côté client et se connecte dans le trafic clair vers les serveurs backend.
Nous allons commencer par créer le certificat et clé Comme indiqué (répondez aux questions en conséquence sur la base des détails de votre entreprise pendant la création de certificat, comme souligné sur la capture d'écran).
# mkdir / etc / ssl / tecmint.LAN # CD / etc / ssl / tecmint.LAN / # OpenSSL REQ -X509 -NODES -DAYS 365 -NEWKEY RSA: 2048 -Keyout / etc / SSL / Tecmint.lan.clé -out / etc / ssl / tecmint.lan.CRT # CD / etc / ssl / tecmint.LAN / # CAT Tecmint.CRT Tecmint.Clé> Tecmint.pem # ls -lCréer un SSL pour Haproxy
21. Ensuite, ouvrez le Haproxy fichier de configuration (/ etc / haproxy / haproxy.CFG) et modifier la section frontale.
Frontend TL Bind *: 80 Bind *: 443 SSL CRT / ETC / SSL / Tecmint.LAN / Tecmint.schéma de redirection pem https si !SSL_FC MODE HTTP ACL HTTP SSL_FC, PAS ACL HTTPS SSL_FC HTTP-REQUEST SET-HEDER X-FORWARDED-PROTOCOL HTTP IF HTTP HTTP-REQUEST SET-HEADER X-Forwarded-protoCol HTTPConfigurer le front-end haproxy avec SSL
Enregistrez le fichier et fermez-le.
22. Puis redémarrez le service Haproxy pour appliquer les nouvelles modifications.
# SystemCTL Redémarrer Haproxy.service
23. Ensuite, ouvrez un navigateur Web et essayez d'accéder une fois de plus sur le site. Le navigateur affichera une erreur en raison du certificat auto-signé, cliquez sur Avancé procéder.
Erreur de connexion Haproxy SSL Procéder à la connexion Site d'accès sur HTTPSC'est tout pour le moment! Chaque application Web a son propre ensemble d'exigences, vous devez concevoir et configurer l'équilibrage de chargement en fonction de votre infrastructure informatique et des exigences de l'application.
Pour obtenir plus d'informations sur certaines des options de configuration utilisées dans ce guide, et généralement comment utiliser Haproxy, Voir la documentation officielle de Haproxy Community Edition ou Haproxy Enterprise Version Documentation. Vous pouvez poster des questions ou des réflexions via le formulaire de rétroaction ci-dessous.
- « Comment passer à Ubuntu 20.04 d'Ubuntu 18.04 et 19.dix
- Comment réinitialiser un mot de passe racine oublié dans Fedora »