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

Installer et configurer HAProxy sur RHEL 8 / CentOS 8 Linux

HAProxy ou High Availability Proxy est un équilibreur de charge TCP et HTTP open source et un logiciel de serveur proxy. HAProxy a été écrit par Willy Tarreau en C, il prend en charge SSL, les compressions, le keep-alive, les formats de journal personnalisés et la réécriture d'en-tête. HAProxy est un serveur proxy et un équilibreur de charge rapide et léger avec une faible 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 et le serveur proxy les plus populaires au cours des dernières années.

Dans ce didacticiel, vous passerez en revue l'installation et la configuration de HAProxy sur RHEL 8 / CentOS 8. Nous allons installer HAProxy sur un seul serveur, puis installer le serveur Web Nginx sur les autres serveurs. HAProxy agira comme un équilibreur de charge pour les serveurs Web Nginx.

Dans ce didacticiel, vous apprendrez :

  • Architecture et concepts HAProxy
  • Configurer le fichier hosts pour la résolution de noms
  • Installer et configurer HAProxy
  • Installer et configurer Nginx
  • Test de la fonctionnalité d'équilibrage de charge
  • Accéder à l'URL des statistiques HAProxy

Architecture HAProxy.

Configuration logicielle requise et conventions utilisées

Configuration logicielle requise et conventions de ligne de commande Linux
Catégorie Exigences, conventions ou version du logiciel utilisée
Système RHEL 8/CentOS 8
Logiciel HAProxy, Nginx
Autre Accès privilégié à votre système Linux en tant que root ou via le sudo commande.
Conventions # - nécessite que les commandes linux données soient exécutées avec les privilèges root soit directement en tant qu'utilisateur root, soit en utilisant sudo commande
$ – nécessite que les commandes linux données soient exécutées en tant qu'utilisateur normal non privilégié

Architecture et concepts HAProxy

HAProxy peut s'exécuter en deux modes :le mode TCP Layer 4 et le mode HTTP Layer 7. En mode TCP Layer 4, HAProxy transfère les paquets TCP RAW du client vers les serveurs d'applications. En mode HTTP de couche 7, HAProxy analyse l'en-tête HTTP avant de le transmettre aux serveurs d'applications. Dans ce didacticiel, nous utiliserons Nginx comme serveur Web prenant en charge le mode HTTP de couche 7.

Équilibrage de charge de couche 4.

Équilibrage de charge de la couche 7.

L'algorithme d'équilibrage est l'algorithme utilisé par HAProxy pour sélectionner le serveur lors de l'équilibrage de charge. Les modes suivants sont disponibles :

Roundrobin

C'est l'algorithme d'équilibrage le plus simple. Pour chaque nouvelle connexion, elle sera gérée par le prochain serveur backend. Si le dernier serveur backend de la liste est atteint, il recommencera à partir du haut de la liste backend.

Le moins conn

La nouvelle connexion sera gérée par le serveur principal avec le moins de connexions. Ceci est utile lorsque le temps et la charge des requêtes varient beaucoup.

Source

Ceci est pour les sessions persistantes, l'IP du client sera hachée pour déterminer le serveur backend qui a reçu la dernière requête de cette IP. Ainsi, une IP A sera toujours gérée par backend1, et une IP B sera toujours gérée par banckend2 pour ne pas interrompre les sessions.

Configurer le fichier hosts pour la résolution de noms

Connectez-vous au serveur d'équilibrage de charge et modifiez le /etc/hosts fichier et équilibreur de charge HAProxy, noms d'hôte nginx1, nginx2. Copiez le même fichier sur les deux autres nœuds nginx et vérifiez la connectivité réseau via la commande ping.

# vim /etc/hosts

192.168.1.108 loadbalancer.example.com
192.168.1.104 nginx1.example.com
192.168.1.105 nginx2.example.com

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
Updating Subscription Management repositories.
Updating Subscription Management repositories.
Last metadata expiration check: 0:06:03 ago on Sat 16 Mar 2019 11:40:24 PM +04.
Installed Packages
Name         : haproxy
Version      : 1.8.14
Release      : 1.el8
Arch         : x86_64
Size         : 4.1 M
Source       : haproxy-1.8.14-1.el8.src.rpm
Repo         : @System
From repo    : rhel-8-for-x86_64-appstream-beta-rpms
Summary      : HAProxy reverse proxy for high availability environments
URL          : http://www.haproxy.org/
License      : GPLv2+
Description  : HAProxy is a TCP/HTTP reverse proxy which is particularly suited for high
             : availability environments. Indeed, it can:
             :  - route HTTP requests depending on statically assigned cookies
             :  - spread load among several servers while assuring server persistence
             :    through the use of HTTP cookies
             :  - switch to backup servers in the event a main one fails
             :  - accept connections to special ports dedicated to service monitoring
             :  - stop accepting connections without breaking existing ones
             :  - add, modify, and delete HTTP headers in both directions
             :  - block requests matching particular patterns
             :  - report detailed status to authenticated users from a URI
             :    intercepted from the application

Lorsque l'installation est terminée, allez dans le /etc/haproxy/ répertoire et sauvegardez le fichier de configuration d'origine.

# cd /etc/haproxy/
# cp haproxy.cfg haproxy.cfg.orig

Ensuite, effectuez les modifications ci-dessous dans le fichier de configuration HAProxy haproxy.cfg avec n'importe quel éditeur.

#---------------------------------------------------------------------
# Example configuration for a possible web application.  See the
# full configuration options online.
#
#   https://www.haproxy.org/download/1.8/doc/configuration.txt
#
#---------------------------------------------------------------------

#---------------------------------------------------------------------
# Global settings
#---------------------------------------------------------------------
global
    # to have these messages end up in /var/log/haproxy.log you will
    # need to:
    #
    # 1) configure syslog to accept network log events.  This is done
    #    by adding the '-r' option to the SYSLOGD_OPTIONS in
    #    /etc/sysconfig/syslog
    #
    # 2) configure local2 events to go to the /var/log/haproxy.log
    #   file. A line like the following can be added to
    #   /etc/sysconfig/syslog
    #
    #    local2.*                       /var/log/haproxy.log
    #
    log         127.0.0.1 local2

    chroot      /var/lib/haproxy
    pidfile     /var/run/haproxy.pid
    maxconn     4000
    user        haproxy
    group       haproxy
    daemon

    # turn on stats unix socket
    stats socket /var/lib/haproxy/stats

    # utilize system-wide crypto-policies
    ssl-default-bind-ciphers PROFILE=SYSTEM
    ssl-default-server-ciphers PROFILE=SYSTEM

#---------------------------------------------------------------------
# common defaults that all the 'listen' and 'backend' sections will
# use if not designated in their block
#---------------------------------------------------------------------
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
#---------------------------------------------------------------------
# HAProxy Monitoring Config
#---------------------------------------------------------------------
listen stats 
    bind loadbalancer.example.com:8080            # HAProxy Monitoring run on port 8080
    mode http
    option forwardfor
    option httpclose
    stats enable
    stats show-legends
    stats refresh 5s
    stats uri /stats                         # URL for HAProxy monitoring
    stats realm Haproxy\ Statistics
    stats auth admin:admin                   # User and Password for login to the monitoring dashboard
    #stats admin if TRUE
    default_backend loadbalancer                 # This is optionally for monitoring backend
#---------------------------------------------------------------------
# main frontend which proxys to the backends
#---------------------------------------------------------------------
frontend loadbalancer
    bind loadbalancer.example.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 static          if url_static
    option http-server-close
    option forwardfor
    default_backend       loadbalancer

#---------------------------------------------------------------------
# static backend for serving up images, stylesheets and such
#---------------------------------------------------------------------
#backend static
#    balance     roundrobin
#    server      static 127.0.0.1:4331 check

#---------------------------------------------------------------------
# round robin balancing between the various backends
#---------------------------------------------------------------------
backend loadbalancer
    balance     roundrobin                                    # Balance algorithm
    option httpchk HEAD / HTTP/1.1\r\nHost:\ localhost        # Check the server application is up and healty - 200 status code
    server  nginx1.example.com 192.168.1.104:80 check         # NGINX Server1
    server  nginx2.example.com 192.168.1.105:80 check         # NGNIX Server2

Enregistrez ce fichier de configuration et quittez.

Maintenant, nous allons configurer le démon rsyslog pour enregistrer les statistiques HAProxy. Modifiez le rsyslog.conf fichier pour permettre au port UDP 514 d'être utilisé par rsyslog. Ouvrez le fichier de configuration rsyslog et décommentez les lignes pour activer la connexion UDP.

# vim /etc/rsyslog.conf
module(load="imudp") # needs to be done just once
input(type="imudp" port="514")

Enregistrez le fichier avec les modifications ci-dessus et quittez. 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.conf
local2.=info     /var/log/haproxy-access.log    # For Access Log
local2.notice    /var/log/haproxy-info.log      # For Service Info - Backend, loadbalancer

Maintenant, redémarrez rsyslog, puis démarrez le service HAProxy et ajoutez HAProxy pour démarrer au démarrage.

# systemctl restart rsyslog
# systemctl start haproxy
# systemctl enable haproxy

Installer et configurer Nginx

Nginx fait déjà partie du référentiel 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
Updating Subscription Management repositories.
Updating Subscription Management repositories.
Last metadata expiration check: 0:06:14 ago on Sat 16 Mar 2019 11:40:24 PM +04.
Installed Packages
Name         : nginx
Epoch        : 1
Version      : 1.14.0
Release      : 3.el8+1631+ba902cf0
Arch         : x86_64
Size         : 568 k
Source       : nginx-1.14.0-3.el8+1631+ba902cf0.src.rpm
Repo         : rhel-8-for-x86_64-appstream-beta-rpms
Summary      : A high performance web server and reverse proxy server
URL          : http://nginx.org/
License      : BSD
Description  : Nginx is a web server and a reverse proxy server for HTTP, SMTP, POP3 and
             : IMAP protocols, with a strong focus on high concurrency, performance and low
             : memory usage.

Une fois Nginx installé, allez dans le répertoire web et modifiez le index.html déposer en conséquence. Assurez-vous de suivre les étapes ci-dessous sur les serveurs nginx1 et nginx2.

# cd /usr/share/nginx/html
# ls -lrth
total 20K
-rw-r--r--. 1 root root 2.8K Oct 31  2016 poweredby.png
-rw-r--r--. 1 root root  368 Oct 31  2016 nginx-logo.png
-rw-r--r--. 1 root root 3.7K Mar 16 20:39 50x.html
-rw-r--r--. 1 root root 3.6K Mar 16 20:39 404.html
-rw-r--r--. 1 root root 3.7K Mar 16 20:42 index.html

Ensuite, ajoutez Nginx pour démarrer au démarrage, puis démarrez le démon avec les commandes ci-dessous.

# systemctl enable nginx
# systemctl start nginx

Test de la fonctionnalité d'équilibrage de charge

Les tests peuvent être effectués en parcourant et en accédant à l'IP 192.168.1.108 de l'équilibreur de charge (dans mon cas) et vous verrez une fois qu'il va au Nginx Node1 et une deuxième fois qu'il va au Nginx Node2 de manière circulaire.

Page Web sur NGINX Node1.

Page Web sur NGINX Node2.

Vous pouvez également vérifier le /var/log/haproxy-access.log pour obtenir des informations détaillées sur l'équilibrage de charge.

Accéder à l'URL des statistiques HAProxy

Accédez au tableau de bord du rapport statistique HAProxy qui s'exécute sur le port 8080 avec le nom d'utilisateur et le mot de passe définis dans haproxy.cfg fichier.

http://192.168.1.108:8080/stats

Accédez à l'URL des statistiques HAProxy.

Tableau de bord des statistiques HAProxy.

HAProxy fonctionne correctement et agit comme un équilibreur de charge pour les deux serveurs Web Nginx.

Conclusion

HAProxy ou proxy haute disponibilité est un logiciel open source qui fournit une haute disponibilité pour les services basés sur TCP, il fonctionne comme équilibreur de charge HTTP et serveur proxy. Le logiciel est écrit en C et prend en charge SSL, keep-alive et la compression. HAProxy est le bon choix pour tous ceux qui ont besoin d'un équilibreur de charge et d'un serveur proxy rapides et légers avec une faible empreinte mémoire et une faible utilisation du processeur. Haproxy peut fonctionner en mode TCP de couche 4 et en mode HTTP de couche 7. Nginx ne prend en charge que le mode HTTP Layer 7 avec HAProxy. Si vous souhaitez utiliser le mode TCP de couche 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.


Cent OS
  1. Comment installer et configurer R sur le système Linux RHEL 8 / CentOS 8

  2. Comment installer le serveur DNS sur RHEL 8 / CentOS 8 Linux

  3. Installer et configurer le serveur FTP sur CentOS 7 / RHEL 7 - (vsftpfd)

  4. Comment installer et configurer HAProxy sur CentOS/RHEL 7/6

  5. CentOS / RHEL 5 :Comment installer et configurer le serveur vsftpd

Installer et configurer le serveur FreeIPA sur CentOS 8

Comment installer et configurer le serveur VNC sur CentOS 7

Comment installer et configurer le serveur VNC dans CentOS 7 / RHEL 7

Installer et configurer Check_MK Server sur CentOS 7

Comment installer et configurer HAproxy sur CentOS 6

Comment installer et configurer VNC Server sur CentOS/RHEL 8