Installer et configurer Haproxy sur RHEL 8 / Centos 8 Linux
- 3023
- 160
- Mohamed Brunet
Le proxy Haproxy ou Haute disponibilité est un logiciel Open Source TCP et HTTP Load Balancer et Proxy Server Software. Haproxy a été écrit par Willy Tarreau en C, il prend en charge SSL, les compressions, les formats de journal personnalisés et la réécriture d'en-tête. Haproxy est un serveur proxy rapide et léger et un équilibreur de chargement avec une petite empreinte mémoire et une faible utilisation du processeur. Il est utilisé par de grands sites comme Github, Stackoverflow, Reddit, Tumblr, Twitter et autres. Il est devenu l'équilibreur de charge logiciel le plus populaire et le serveur proxy au cours des dernières années.
Dans ce tutoriel, vous passerez à travers l'installation et la configuration de Haproxy sur RHEL 8 / CentOS 8. Nous installerons Haproxy sur un seul serveur, puis installerons le serveur Web Nginx sur les autres serveurs. Haproxy agira comme un équilibreur de charge pour les serveurs Web Nginx.
Dans ce tutoriel, vous apprendrez:
- Architecture et concepts Haproxy
- Configurer le fichier des hôtes pour la résolution du nom
- Installer et configurer Haproxy
- Installer et configurer nginx
- Test de la fonction d'équilibrage de charge
- Accédez à l'URL des statistiques Haproxy
Architecture haproxy.
Exigences et conventions logicielles utilisées
Catégorie | Exigences, conventions ou version logicielle utilisée |
---|---|
Système | RHEL 8 / CENTOS 8 |
Logiciel | Haproxy, nginx |
Autre | Accès privilégié à votre système Linux en tant que racine ou via le Sudo commande. |
Conventions | # - Exige que les commandes Linux soient exécutées avec des privilèges racine soit directement en tant qu'utilisateur racine, soit par l'utilisation de Sudo commande$ - Exige que les commandes Linux soient exécutées en tant qu'utilisateur non privilégié régulier |
Architecture et concepts Haproxy
Haproxy peut s'exécuter en deux modes: Mode TCP Calque 4 et Mode HTTP Layer 7. En mode TCP de couche 4, Haproxy transmet les paquets TCP bruts du client vers les serveurs d'application. En mode HTTP de couche 7, Haproxy analyse l'en-tête HTTP avant de les transmettre aux serveurs d'application. Dans ce didacticiel, nous utiliserons Nginx comme serveur Web qui prend en charge le mode HTTP Layer 7.
Équilibrage de charge de la couche 4. Équilibrage de la charge de la couche 7.
L'algorithme d'équilibre est l'algorithme utilisé par Haproxy pour sélectionner le serveur lors de l'équilibrage de la charge. Les modes suivants sont disponibles:
Ronde
C'est l'algorithme d'équilibre le plus simple. Pour chaque nouvelle connexion, il sera géré par le prochain serveur backend. Si le dernier serveur backend de la liste est atteint, il recommencera à partir de la liste des backend.
Le moins
La nouvelle connexion sera gérée par le serveur backend avec le moins de connexions. Ceci est utile lorsque le temps et le chargement des demandes varient beaucoup.
Source
Ceci est pour des sessions collantes, l'IP client sera haché pour déterminer le serveur backend qui a reçu la dernière demande de cette IP. Ainsi, un IP A sera toujours géré par Backend1, et IP B sera toujours géré par Banckend2 pour ne pas interrompre sessions.
Configurer le fichier des hôtes pour la résolution du nom
Connectez-vous au serveur d'équilibreur de charge et modifiez le / etc / hôtes
Fichier et Haproxy LoadBalancer, Nginx1, Nginx2 Host Names. Copiez le même fichier sur deux autres nœuds Nginx et vérifiez la connectivité réseau via Ping Comand.
# vim / etc / hôtes
192.168.1.108 LoadBalancer.exemple.com 192.168.1.104 nginx1.exemple.com 192.168.1.105 nginx2.exemple.com
Copie Installer et configurer Haproxy
Haproxy est disponible dans le référentiel Rhel 8 / Centos 8, donc connectez-vous au serveur LoadBalancer et installez le package Haproxy avec cette commande yum.
# yum install haproxy
Une fois installé avec succès, vous pouvez utiliser la commande ci-dessous pour vérifier l'installation.
# yum info haproxy
# yum info haproxy mise à jour des référentiels de gestion d'abonnement. Mise à jour des référentiels de gestion des abonnements. Dernier chèque d'expiration des métadonnées: 0:06:03 il y a le samedi 16 mars 2019 11:40:24 PM +04. Packages installés Nom: Haproxy Version: 1.8.14 Libération: 1.El8 Arch: x86_64 Taille: 4.1 m Source: Haproxy-1.8.14-1.EL8.SRC.RPM Repo: @System From repo: RHEL-8-FOR-X86_64-AppStream-Beta-RPM.haproxy.Org / Licence: GPLV2 + Description: Haproxy est un proxy inverse TCP / HTTP qui est particulièrement adapté aux environnements élevés: disponibilité. En effet, il peut :: - acheminer les demandes HTTP en fonction des cookies attribués statiquement: - répartir la charge parmi plusieurs serveurs tout en assurant la persistance du serveur: grâce à l'utilisation de cookies HTTP: - Passez aux serveurs de sauvegarde en cas d'échec de celui-ci: - Acceptez les connexions aux ports spéciaux dédiés à la surveillance des services: - Arrêtez d'accepter les connexions sans casser celles existantes: - Ajouter, modifier et supprimer les en-têtes HTTP dans les deux sens: - Bloquer les demandes correspondant aux modèles particuliers: - Rapporter l'état détaillé des utilisateurs authentifiés à partir d'un URI: intercepté à partir de L'application
Une fois l'installation terminée, allez au / etc / haproxy /
répertoire et sauvegarde du fichier de configuration d'origine.
# cd / etc / haproxy / # cp haproxy.haproxy CFG.CFG.origine
Ensuite, effectuez les modifications ci-dessous dans le fichier de configuration Haproxy haproxy.CFG
avec l'un des éditeurs.
# ------------------------------------------------- -------------------- # Exemple de configuration pour une éventuelle application Web. Voir les options de configuration complètes en ligne. # # https: // www.haproxy.org / téléchargement / 1.8 / Doc / Configuration.SMS # #----------------------------------------------- ---------------------- # --------------------------- ------------------------------------------ # Paramètres globaux #---- -------------------------------------------------- --------------- Global # Pour que ces messages se retrouvent dans / var / log / haproxy.journal vous aurez besoin de: # # 1) Configurer Syslog pour accepter les événements de journal réseau. Ceci est fait # en ajoutant l'option '-r' aux syslogd_options dans # / etc / sysconfig / syslog # # 2) Configurer les événements locaux2 pour accéder au / var / log / haproxy.fichier journal. Une ligne comme ce qui suit peut être ajoutée à # / etc / sysconfig / syslog # # local2.* / var / log / haproxy.Journal # journal 127.0.0.1 local2 chroot / var / lib / haproxy pidfile / var / run / haproxy.PID MAXCONN 4000 Utilisateur Haproxy Group Haproxy Daemon # Activez les statistiques Unix Socket Stats Socket / Var / Lib / Haproxy / Stats # Utiliser le profil SSL-Default-Server Profile SSL-Default-Bind-Ciphers Profil = System SSL-Default-Server-Ciphers Profil = Système # ----------------------------------------------- ---------------------- # par défaut communs que toutes les sections «Écouter» et «backend» seront # utilisera sinon désignée dans leur bloc # ---- -------------------------------------------------- --------------- Mode par défaut Http Log Global Option Httplog Option Dontlognull Option http-server-close option Forward pour 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-Weep-Alive 10S Timeout Check 10S MaxConn 3000 # ------------- -------------------------------------------------- ------ # Configuration de surveillance de Haproxy # ----------------------------------- ------------------------------ Écouter les statistiques lier le chargeur.exemple.com: 8080 # surveillance de Haproxy Exécuter sur le port 8080 MODE HTTP OPTION AVANT PROFORMOR Option httpcclose statistiques Activer les statistiques Show-Legends Stats Refresh 5S Statistiques URI / Statistiques Statistiques Statistiques Auth Auth pour l'administration pour l'administration et le mot de passe pour la connexion pour la connexion REALM À la surveillance du tableau de bord #Stats Admin si vrai default_backend LoadBalancer # Ceci est éventuellement pour la surveillance du backend # --------------------------- -------------------------------------- # Frontend principal qui proxys aux backends # --- -------------------------------------------------- ---------------- Frontend LoadBalancer lier le chargeur.exemple.com: 80 #acl url_static path_beg -i / static / images / javascript / stylesheets #acl url_static path_end -i .jpg .gif .PNG .CSS .JS #USE_BACKEND STATIQUE IF OPTION URL_STATIQUE Http-Server-Close Option Forward pour Default_Backend LoadBalancer # ----------------------------- ------------------------------------ # Backend statique pour servir des images, des feuilles de style et tels # - -------------------------------------------------- ----------------- #backend static # Balance Roundrobin # Server Static 127.0.0.1: 4331 Vérifier # --------------------------------------------- ------------------------ # Round Robin Équilibrage entre les différents backends # ----------------- -------------------------------------------------- - backend chargebalancer balance ronderobin # algorithme d'algorithme httpchk head / http / 1.1 \ r \ nhost: \ localhost # Vérifiez que l'application du serveur est en place et Healty - 200 Code d'état Server Nginx1.exemple.com 192.168.1.104: 80 Vérifier # Nginx Server1 Server Nginx2.exemple.com 192.168.1.105: 80 Vérifier # NGIX Server2
Enregistrer ce fichier de configuration et quitter.
Maintenant, nous allons configurer le démon Rsyslog pour enregistrer les statistiques Haproxy. Modifier le rsyslog.confli
Fichier pour permettre l'utilisation du port UDP 514 par RSYSLOG. Ouvrez le fichier de configuration RSYSLOG et décommentez les lignes pour activer la connexion UDP.
# vim / etc / rsyslog.confli
module (losh = "iMudp") # doit être fait une seule fois une entrée (type = "iMUDP" port = "514")
Enregistrer le fichier avec les modifications ci-dessus et quitter. Créez ensuite un nouveau fichier de configuration Haproxy pour RSYSLOG et ajoutez les entrées ci-dessous dans ce fichier.
# cd / etc / rsyslog.d / # vi Haproxy.confli
local2.= info / var / log / haproxy-Access.Journal # pour l'accès log local2.Avis / var / log / haproxy-info.Journal pour les informations sur le service - backend, chargebalancer
Redémarrez maintenant RSYSLOG, puis démarrez le service Haproxy et ajoutez Haproxy pour démarrer à l'heure du démarrage.
# systemctl redémarrer rsyslog # systemctl start haproxy # systemctl activer haproxy
Installer et configurer nginx
Nginx fait déjà partie du repo Rhel 8 / Centos 8 existant et peut être installé avec la commande suivante.
# yum install nginx
Une fois installé, vous pouvez vérifier l'installation à l'aide de cette commande.
# yum info nginx
# yum info nginx mise à jour des référentiels de gestion d'abonnement. Mise à jour des référentiels de gestion des abonnements. Dernier chèque d'expiration des métadonnées: 0:06:14 il y a le samedi 16 mars 2019 11:40:24 PM +04. Packages installés Nom: Nginx Epoch: 1 Version: 1.14.0 version: 3.EL8 + 1631 + BA902CF0 Arch: x86_64 Taille: 568 K Source: Nginx-1.14.0-3.EL8 + 1631 + BA902CF0.SRC.RPM Repo: RHEL-8-FOR-X86_64-APPSTREAM-BETA-RPMS Résumé: Un serveur Web haute performance et URL du serveur proxy inversé: http: // nginx.Org / Licence: BSD Description: Nginx est un serveur Web et un serveur proxy inversé pour les protocoles HTTP, SMTP, POP3 et: IMAP, avec un fort accent sur la concurrence, les performances et les performances élevées: utilisation de la mémoire.
Une fois Nginx installé, accédez au répertoire Web et modifiez le indice.html
dossier en conséquence. Assurez-vous que vous faites ci-dessous les étapes sur le serveur Nginx1 et Nginx2.
# cd / usr / share / nginx / html # ls -lrth total 20k -rw-r - r--. 1 racine racine 2.8K 31 oct 2016 PoweredBy.png -rw-r - r--. 1 racine racine 368 31 oct 2016 Nginx-Logo.png -rw-r - r--. 1 racine racine 3.7k mars 16 20:39 50X.html -rw-r - r--. 1 racine racine 3.6K mars 16 20:39 404.html -rw-r - r--. 1 racine racine 3.7K mars 16 20:42 Index.html
Ensuite, ajoutez nginx pour démarrer à l'heure du démarrage, puis démarrez le démon avec les commandes ci-dessous.
# systemCTL Activer nginx # systemctl start nginx
Test de la fonction d'équilibrage de charge
Les tests peuvent être effectués par le support et accéder au chargeur IP 192.168.1.108 (pour mon cas) et vous verrez une fois, il passera au Nginx Node1 et la deuxième fois, il va à Nginx Node2 à la ronde.
Page Web sur Nginx Node1. Page Web sur nginx node2.Vous pouvez également vérifier le / var / log / haproxy-Access.enregistrer
Pour obtenir les informations détaillées sur l'équilibrage de la charge.
Accédez à l'URL des statistiques Haproxy
Accédez au tableau de bord pour le rapport statistique Haproxy qui s'exécute sur le port 8080 avec le nom d'utilisateur et le mot de passe défini dans haproxy.CFG
déposer.
http: // 192.168.1.108: 8080 / statistiquesURL d'accès aux statistiques de Haproxy. Tableau de tableau de bord des statistiques de Haproxy.
Haproxy travaille avec succès et agit comme un équilibreur de charge pour les deux serveurs Web Nginx.
Conclusion
Le proxy Haproxy ou Haute disponibilité est un logiciel open source qui offre une haute disponibilité pour les services basés sur TCP, il fonctionne comme un équilibreur de charge HTTP et un serveur proxy. Le logiciel est écrit en C et prend en charge SSL, Keep-Alive and Compression. Haproxy est le bon choix pour tous ceux qui ont besoin d'un équilibreur de charge et d'un serveur proxy qui est rapide et léger avec une petite empreinte mémoire et une faible utilisation du processeur. Haproxy peut s'exécuter en mode calque 4 TCP et mode http calque 7. Nginx prend en charge uniquement le mode HTTP de couche 7 avec Haproxy. Si vous souhaitez utiliser le mode TCP Layer 4, vous pouvez utiliser d'autres serveurs Web comme Apache. Sur RHEL 8 / CENTOS 8 Linux, Haproxy est disponible dans le référentiel par défaut. Il est facile à installer et à configurer.
Tutoriels Linux connexes:
- Une introduction à l'automatisation Linux, des outils et des techniques
- Choses à installer sur Ubuntu 20.04
- Masterring Bash Script Loops
- Mint 20: Mieux que Ubuntu et Microsoft Windows?
- Comparaison des MPM de Linux Apache PreFork vs Worker
- Ubuntu 20.04 WordPress avec installation Apache
- Ubuntu 20.04: WordPress avec l'installation de Nginx
- Téléchargement Linux
- Créer des règles de redirection et de réécriture en .htaccess sur Apache…
- À quelle fréquence devez-vous redémarrer votre serveur Linux?
- « Comment installer Perl sur RHEL 8 / Centos 8 Linux
- Comment installer et configurer un exemple de service avec Xinetd sur RHEL 8 / Centos 8 Linux »