GNU/Linux >> Tutoriels Linux >  >> Cent OS

Comment configurer HAProxy comme équilibreur de charge pour Nginx sur CentOS 8

Pour garantir une disponibilité, une évolutivité et des performances maximales des applications Web, il est désormais courant de mettre en œuvre des technologies qui introduisent la redondance, telles que la mise en cluster de serveurs et l'équilibrage de charge. Par exemple, configurer un cluster de serveurs qui exécutent tous la ou les mêmes applications, puis déployer des équilibreurs de charge devant eux pour répartir le trafic.

HA Proxy est un TCP/HTTP haute disponibilité open-source, puissant, performant, fiable, sécurisé et largement utilisé équilibreur de charge, serveur proxy et terminateur SSL/TLS conçus pour les sites Web à très fort trafic. Il fonctionne de manière fiable sur Linux , Solaris , FreeBSD , OpenBSD ainsi que les systèmes d'exploitation AIX.

Ce guide explique comment configurer un équilibreur de charge haute disponibilité dédié avec HAProxy sur CentOS 8 pour contrôler le trafic dans un cluster de NGINX serveurs Web. Il montre également comment configurer SSL/TLS résiliation dans HAProxy .

Prérequis :

Un total de 4 serveurs avec une installation minimale de CentOS 8.

Configuration de l'environnement de test

----------- Configuration du serveur HAProxy ----------- Serveur proxy HA - nom d'hôte :haproxy-server.tecmint.lan ; IP :10.42.0.247Domaine du site de test :www.tecmint.lan----------- Configuration des serveurs Web clients ----------- Serveur Web #1 - nom d'hôte :websrv1.tecmint.lan ; IP :10.42.0.200Web Server #2 - nom d'hôte :websrv2.tecmint.lan; IP :10.42.0.21Web Server #3 - nom d'hôte :websrv3.tecmint.lan; IP :10.42.0.34

Étape 1 :Configuration du serveur HTTP Nginx sur les machines clientes

1. Connectez-vous à tous vos CentOS 8 machines clientes et installez le Nginx serveur Web à l'aide du gestionnaire de packages dnf, comme indiqué.

# dnf installer Nginx

2. Ensuite, démarrez le Nginx service, pour l'instant, activez-le pour qu'il démarre automatiquement au démarrage du système et confirmez qu'il est opérationnel en vérifiant son état, à l'aide des commandes systemctl (faites cela sur toutes les machines clientes).

# systemctl start nginx# systemctl enable nginx# systemctl status nginx

3. De plus, si le service firewalld s'exécute sur toutes les machines clientes (ce que vous pouvez vérifier en exécutant systemctl start firewalld), vous devez ajouter le HTTP et HTTPS services dans la configuration du pare-feu pour permettre aux requêtes de l'équilibreur de charge de passer à travers le pare-feu vers le Nginx serveurs Web. Rechargez ensuite le firewalld service pour effectuer les nouvelles modifications (faites ceci sur toutes les machines clientes).

# 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 adresses 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 cliente fonctionne correctement.

Testez l'installation de Nginx sur toutes les machines clientes CentOS 8

5. Ensuite, nous devons créer des pages de test sur les machines clientes que nous utiliserons plus tard pour tester le HAProxy configuration.

----------- Serveur Web #1 ----------- # cp /usr/share/nginx/html/index.html /usr/share/nginx/html/index.html.orig# echo "Afficher le site de websrv1.tecmint.lan"> /usr/share/nginx/html/ index.html----------- Serveur Web #2 ----------- # cp /usr/share/nginx/html/index.html /usr/share/nginx/html/index.html.orig# echo "Afficher le site 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 "Afficher le site 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 HAProxy serveur en exécutant la commande suivante.

# dnf installer haproxy

7. Ensuite, démarrez le HAproxy service, activez-le pour qu'il démarre automatiquement au démarrage du système et vérifiez son état.

# systemctl start haproxy# systemctl enable haproxy# systemctl status haproxy

Vérifier le statut HAProxy dans CentOS 8

8. Nous allons maintenant configurer 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.
  • valeurs par défaut – cette section définit les paramètres par défaut pour toutes les autres sections après sa déclaration.
  • interface – cette section décrit un ensemble de sockets d'écoute acceptant les connexions client.
  • Backend – cette section décrit un ensemble de serveurs auxquels le proxy se connectera pour transférer les 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. HA Proxy une fois déployé, il 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 principaux.

Le paramètre de journal (mis en évidence dans la capture d'écran suivante) déclare un Syslog global serveur (tel que rsyslog par défaut dans CentOS) qui recevra les messages du journal. Plus d'un serveur peut être déclaré ici.

La configuration par défaut pointe vers localhost (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 HAProxy

10. Ensuite, vous devez dire au rsyslog serveur comment recevoir et traiter HAProxy journaliser les messages. Ouvrez le fichier de configuration rsyslog dans /etc/rsyslog.conf ou créez un nouveau fichier dans /etc/rsyslog.d répertoire, par exemple /etc/rsyslog.d/haproxy.conf .

# vi /etc/rsyslog.d/haproxy.conf

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 indiquer à rsyslog pour écrire dans deux fichiers journaux distincts en fonction de la gravité, où local2 est le code d'installation défini dans la configuration HAProxy ci-dessus.

local2.* /var/log/haproxy-traffic.log local2.notice /var/log/haproxy-admin.log

11. Enregistrez le fichier et fermez-le. Redémarrez ensuite le rsyslog service pour appliquer les modifications récentes.

# systemctl redémarrer rsyslog

Configuration du front-end et des back-ends HAProxy

12. Dans cette section, nous allons montrer comment configurer les proxys front-end et back-end. Retournez à HAProxy fichier de configuration et modifiez les sections frontend 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 une écoute section utilisée pour servir les Statistiques HAProxy page. Le lier paramètre affecte un écouteur à une adresse IP donnée (* pour tous dans ce cas) et port (9000 ).

Les statistiques activent paramètre active la page de statistiques qui sera accessible à l'aide de l'URI /stats (c'est-à-dire http://server_ip:9000/stats ).

Les statistiques auth paramètre est utilisé pour ajouter une authentification de base lors de l'accès à la page (remplace haproxy et [email protected] avec un nom d'utilisateur et un mot de passe de votre choix).

listen stats bind *:9000 stats enable stats hide-version stats uri /stats stats admin if LOCALHOST stats auth haproxy:[email protected]

13. La configuration suivante définit une section frontale appelée TL (vous pouvez donner un nom de votre choix). Le mode Le paramètre définit le mode de fonctionnement de HAProxy.

L'acl (Liste de contrôle d'accès) est utilisé pour prendre une décision basée sur le contenu extrait de la demande. Dans cet exemple, la requête est considérée comme HTTP simple s'il n'est pas fait sur SSL .

Ensuite, l'en-tête http-request set-head est utilisé pour ajouter un en-tête HTTP à la requête. Cela permet d'informer Nginx que la demande initiale a été faite sur HTTP (ou via le port 80 ).

Le default_backend ou use_backend définit les serveurs principaux, dans ce cas, référencés par TL_web_servers .

Notez que HAProxy renverra une "erreur 503 Service indisponible ” si une requête n'est pas acheminée par un use_backend ou default_backend directives.

liaison TL frontend * :80 mode http acl http ssl_fc,pas http-request set-header X-Forwarded-Protocol http if http default_backend TL_web_servers

14. Ensuite, nous devons définir une section backend où le solde paramètre définit comment HAProxy sélectionne les serveurs principaux pour traiter une demande si aucune méthode de persistance ne remplace cette sélection.

Le cookie la directive active basée sur les cookies persistance, il ordonne à HAProxy pour envoyer un cookie nommé SERVERID au client et de l'associer à l'ID du serveur qui a donné la réponse initiale.

Le serveur est utilisée pour définir les serveurs en amont au format sever_name (par exemple websrv1 ), IP_serveur :port et options .

Une option clé est vérifier qui dit HAProxy pour continuer à vérifier la disponibilité d'un serveur et faire rapport sur la page de statistiques.

backend TL_web_servers mode http balance roundrobin option httpchk HEAD / cookie SERVERUID insert indirect nocache server websrv1 10.42.0.200:80 cookie websrv1 check server websrv2 10.42.0.21:80 cookie websrv2 check server 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 du front-end et des back-ends HAProxy

15. 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 ) sont ouverts dans le pare-feu pour accepter les demandes des clients comme suit. Ouvrez également le port 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 de la configuration de HAProxy et affichage des statistiques

17. Il est maintenant temps de tester le HAPrxoy mettre en place. Sur la machine de bureau locale à partir de laquelle vous accédez à tous les serveurs, ajoutez la ligne suivante dans /etc/hosts fichier pour nous permettre d'utiliser le domaine du site factice.

10.42.0.247 www.tecmint.lan

18. Ouvrez ensuite un navigateur et naviguez en utilisant soit l'adresse du serveur, soit le domaine du site.

http://10.42.0.247/OUhttp://www.tecmint.lan/

Vérifier la configuration HAProxy

19. Pour accéder à HAProxy page de statistiques, utilisez l'adresse suivante.

http://10.42.0.247:9000/stats

Utilisez ensuite le nom d'utilisateur et le mot de passe que vous avez définis dans le fichier de configuration HAProxy (reportez-vous au paramètre stats auth).

Page de connexion aux statistiques HAProxy

Après une connexion réussie, vous atterrirez sur le HAProxy page de statistiques qui vous montre des métriques qui couvrent la santé de vos serveurs, les taux de requêtes actuels, les temps de réponse, et bien plus encore.

Pour montrer comment fonctionne le rapport d'état concernant le travail des codes de couleur, nous avons mis l'un des serveurs principaux.

Rapport statistique HAProxy

Étape 4 :Configurer 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 prend en charge quatre principaux HTTPS modes de configuration, mais pour ce guide, nous utiliserons SSL/TLS déchargement.

En SSL/TLS mode de déchargement, HAProxy déchiffre le trafic côté client et se connecte en clair aux serveurs principaux.

Nous allons commencer par créer le certificat et clé comme indiqué (répondez aux questions en conséquence en fonction des détails de votre entreprise lors de la création du certificat, comme indiqué 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. key -out /etc/ssl/tecmint.lan.crt# cd /etc/ssl/tecmint.lan/# cat tecmint.crt tecmint.key>tecmint.pem# ls -l

Créer SSL pour HAProxy

21. Ensuite, ouvrez le HAproxy fichier de configuration (/etc/haproxy/haproxy.cfg ) et modifiez la section frontale.

frontend TL bind *:80 bind *:443 ssl crt /etc/ssl/tecmint.lan/tecmint.pem redirect scheme https if !{ ssl_fc } mode http acl http ssl_fc,not acl https ssl_fc http-request set- header X-Forwarded-Protocol http si http http-request set-header X-Forwarded-Protocol https si https default_backend TL_web_servers

Configurer HAProxy Front-end avec SSL

Enregistrez le fichier et fermez-le.

22. Redémarrez ensuite le service HAProxy pour appliquer les nouvelles modifications.

# systemctl redémarre haproxy.service

23. Ensuite, ouvrez un navigateur Web et essayez à nouveau d'accéder au site. Le navigateur affichera une erreur en raison du certificat auto-signé, cliquez sur Avancé pour continuer.

Erreur de connexion SSL HAProxy

Procéder à la connexion

Accéder au site via HTTPS

C'est tout pour le moment! Chaque application Web a son propre ensemble d'exigences, vous devez concevoir et configurer l'équilibrage de charge 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 sur l'utilisation générale de HAProxy , consultez la documentation officielle de l'édition communautaire de HAProxy ou la documentation de la version d'entreprise de HAProxy. Vous pouvez poster des questions ou des réflexions via le formulaire de commentaires ci-dessous.

Partager c'est aimer…
Partager sur FacebookPartager sur TwitterPartager sur LinkedinPartager sur Reddit
Cent OS
  1. Comment configurer un serveur SFTP sur CentOS

  2. Comment configurer le serveur SysLog sur CentOS 7 / RHEL 7

  3. Comment configurer le serveur NFS sur CentOS 7 / RHEL 7

  4. Comment configurer l'équilibreur de charge HAProxy

  5. Comment configurer le serveur VNC pour un nouvel utilisateur dans CentOS/RHEL 5

Comment installer HAProxy sur CentOS 7

Comment configurer HAProxy comme équilibreur de charge pour Nginx dans CentOS 7

Comment installer Nginx sur CentOS 7

Comment configurer NGINX sur un serveur CentOS 7

Comment configurer HAProxy sur CentOS 8

Comment configurer un serveur NGINX RTMP pour le streaming