Dans cet article, nous aurons expliqué les étapes nécessaires pour installer et configurer HAProxy Load Balancer sur Ubuntu 18.04 LTS. Avant de poursuivre ce didacticiel, assurez-vous que vous êtes connecté en tant qu'utilisateur avec des privilèges sudo. Toutes les commandes de ce didacticiel doivent être exécutées en tant qu'utilisateur non root.
HAProxy est un outil Linux open source qui fournit des services d'équilibrage de charge et de proxy haute disponibilité pour les applications réseau TCP et HTTP. En raison de son intégration facile dans les architectures existantes, de son adéquation aux sites Web à fort trafic, de sa fiabilité extrême et de l'accent mis sur la compatibilité ascendante, il est livré par défaut par la plupart des distributions Linux courantes.
Installer HAProxy sur Ubuntu
Étape 1. Détails du réseau
Par souci de simplicité, nous supposerons les adresses IP et les noms d'hôte suivants pour les instances :
- haproxy-server :adresse IP publique 198.18.0.1
- backend-server1 :adresse IP privée 172.16.0.1 , adresse IP publique 198.18.0.1
- backend-server2 :adresse IP privée 172.16.0.2 , adresse IP publique 198.18.0.2
Étape 2. Tout d'abord, avant de commencer à installer un package sur votre serveur Ubuntu, nous vous recommandons de toujours vous assurer que tous les packages système sont mis à jour.
sudo apt update sudo apt upgrade
Étape 3. Installez HaProxy sur Ubuntu 18.04 LTS.
HaProxy est disponible sur le référentiel de logiciels Ubuntu, nous pouvons donc l'installer à l'aide du gestionnaire de packages en exécutant la commande ci-dessous :
sudo add-apt-repository ppa:vbernat/haproxy-1.8 sudo apt-get update sudo apt-get install haproxy
Étape 4. Configuration de l'équilibrage de charge avec HAProxy.
Modifiez maintenant le fichier de configuration par défaut d'haproxy /etc/haproxy/haproxy.cfg et démarrez la configuration :
sudo nano /etc/haproxy/haproxy.cfg
global log /dev/log local0 log /dev/log local1 notice chroot /var/lib/haproxy stats socket /run/haproxy/admin.sock mode 660 level admin stats timeout 30s user haproxy group haproxy daemon # Default SSL material locations ca-base /etc/ssl/certs crt-base /etc/ssl/private # Default ciphers to use on SSL-enabled listening sockets. # For more information, see ciphers(1SSL). This list is from: # https://hynek.me/articles/hardening-your-web-servers-ssl-ciphers/ ssl-default-bind-ciphers ECDH+AESGCM:DH+AESGCM:ECDH+AES256::RSA+AES:RSA+3DES:!aNULL:!MD5:!DSS ssl-default-bind-options no-sslv3 defaults log global mode http option httplog option dontlognull timeout connect 5000 timeout client 50000 timeout server 50000 errorfile 400 /etc/haproxy/errors/400.http errorfile 403 /etc/haproxy/errors/403.http errorfile 408 /etc/haproxy/errors/408.http errorfile 500 /etc/haproxy/errors/500.http errorfile 502 /etc/haproxy/errors/502.http errorfile 503 /etc/haproxy/errors/503.http errorfile 504 /etc/haproxy/errors/504.http
Alors vers la fin du fichier, ajoutez le contenu ci-dessous :
frontend ourwebsitefrontend bind *:80 mode http default_backend ourwebsiteendpoin
Le paramètre bind indique à HaProxy d'écouter le port 80 pour les connexions. À la fin du texte, nous avons spécifié ourwebsiteendpoint comme directive où se trouvent nos points de terminaison. Nous pouvons maintenant continuer et ajouter les détails de configuration du backend comme suit :
backend ourwebsiteendpoint
balance roundrobin
option forwardfor
http-request set-header X-Forwarded-Port %[dst_port]
http-request add-header X-Forwarded-Proto https if { ssl_fc }
option httpchk HEAD / HTTP/1.1\r\nHost:localhost
server backend-server1 172.16.0.1:8080 check
server backend-server2 172.16.0.2:8080 check
Maintenant, si vous le souhaitez, vous pouvez activer les statistiques Haproxy en ajoutant la configuration suivante dans le fichier de configuration HAProxy :
listen stats bind :32600 stats enable stats uri / stats hide-version stats auth username:password
Étape 5. Fichier de configuration HAProxy final.
Le fichier de configuration final peut ressembler à ceci :
global log /dev/log local0 log /dev/log local1 notice chroot /var/lib/haproxy stats socket /run/haproxy/admin.sock mode 660 level admin stats timeout 30s user haproxy group haproxy daemon # Default SSL material locations ca-base /etc/ssl/certs crt-base /etc/ssl/private # Default ciphers to use on SSL-enabled listening sockets. # For more information, see ciphers(1SSL). This list is from: # https://hynek.me/articles/hardening-your-web-servers-ssl-ciphers/ ssl-default-bind-ciphers ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AESGCM$ ssl-default-bind-options no-sslv3 defaults log global mode http option httplog option dontlognull timeout connect 5000 timeout client 50000 timeout server 50000 errorfile 400 /etc/haproxy/errors/400.http errorfile 403 /etc/haproxy/errors/403.http errorfile 408 /etc/haproxy/errors/408.http errorfile 500 /etc/haproxy/errors/500.http errorfile 502 /etc/haproxy/errors/502.http errorfile 503 /etc/haproxy/errors/503.http errorfile 504 /etc/haproxy/errors/504.http frontend ourwebsitefrontend bind *:80 mode http default_backend ourwebsiteendpoint backend ourwebsiteendpoint balance roundrobin option forwardfor http-request set-header X-Forwarded-Port %[dst_port] http-request add-header X-Forwarded-Proto https if { ssl_fc } option httpchk HEAD / HTTP/1.1\r\nHost:localhost server backend-server1 172.16.0.1:8080 check server backend-server2 172.16.0.2:8080 check listen stats bind :32600 stats enable stats uri / stats hide-version stats auth username:password
Ensuite, redémarrez le serveur HaProxy pour recharger les modifications :
sudo service haproxy restart
Étape 6. Test de la configuration.
À ce stade, nous avons une configuration HAProxy entièrement fonctionnelle. À chaque nœud de serveur Web, j'ai une page de démonstration index.html indiquant le nom d'hôte des serveurs. Nous pouvons donc facilement différencier les pages Web des serveurs.
Accédez maintenant au port 80 sur l'IP 198.18.0.1 (comme configuré ci-dessus) dans le navigateur Web et appuyez sur Actualiser. Vous verrez que HAProxy envoie les requêtes au serveur backend une par une (selon l'algorithme round robin).
C'est tout ce que vous avez à faire pour installer HAProxy Load sur Ubuntu 18.04. J'espère que vous trouverez cette astuce rapide utile. Si vous avez des questions ou des suggestions, n'hésitez pas à laisser un commentaire ci-dessous.