
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.