Comment configurer Haproxy Load Balancer sur Ubuntu 18.04 et 16.04

Comment configurer Haproxy Load Balancer sur Ubuntu 18.04 et 16.04

Haproxy est une solution très rapide et fiable pour la haute disponibilité, l'équilibrage de la charge, il prend en charge les applications TCP et HTTP. De nos jours, maximiser les sites Web est très crucial pour les sites Web de trafic lourd. Ce n'est pas possible avec la configuration du serveur unique. Ensuite, nous avons besoin d'un environnement de haute disponibilité qui peut facilement gérer avec une défaillance du serveur unique.

Cet article vous aidera à configurer un environnement d'équilibrage de charge Haproxy sur Ubuntu, Debian et Linuxmint. Cela configurera un Équilibrage de charge de la couche 4 (Couche de transport). Qui équilibrera les demandes de chargement et de transfert vers différents serveurs en fonction de l'adresse IP et des numéros de port.

Détails du réseau -

Vous trouverez ci-dessous notre serveur réseau. Il y a 3 serveurs Web en cours d'exécution avec Apache2 et écouter sur le port 80 et un serveur Haproxy.

Détails du serveur Web: Serveur 1: web1.exemple.com 192.168.1.101 serveur 2: web2.exemple.com 192.168.1.102 serveur 3: web3.exemple.com 192.168.1.103 Serveur haproxy:  Haproxy: Haproxy 192.168.1.12 

Étape 1 - Installer Haproxy

Maintenant, démarrez la configuration. SSH à votre serveur Haproxy en tant qu'utilisateur privilégié et installez Haproxy en utilisant les commandes suivantes.

sudo add-att-repository ppa: vbernat / haproxy-1.8 sudo apt-get update sudo apt-get install haproxy 

Étape 2 - Configurer l'équilibrage de la charge Haproxy

Modifiez maintenant le fichier de configuration par défaut Haproxy / etc / haproxy / haproxy.CFG et démarrer la configuration.

sudo vi / etc / haproxy / haproxy.CFG 

Paramètres par défaut:

Vous trouverez une configuration par défaut comme ci-dessous. Si vous n'avez pas assez d'idée à ce sujet, vous pouvez conserver comme c'est.

Global Log / dev / log local0 log / dev / log local1 note chroot / var / lib / haproxy statistiques socket / run / haproxy / admin.SOCK MODE 660 NIVEAU ADMIN STATS TIMEUT 30S Utilisateur Haproxy Group Haproxy Daemon # Emplacements de matériaux SSL par défaut CA-Base / etc / SSL / CERTS CRT-BASE / ETC / SSL / PRIVATE # CIPHERS DÉFAUTS À UTILISER SUR SSL-ÉCOUTE RECORD. # Pour plus d'informations, voir Ciphers (1SSL). Cette liste provient de: # 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 Options NO-SSLV3 Par défaut Log Global Mode HTTP Option httplog Option Dontlognull Timeout Connect 5000 Timeout Client 50000 Timeout Server 50000 ERRORFILE 400 / ETC / HAPROXY / ERROR / 400.Http ErrorFile 403 / etc / Haproxy / Erreurs / 403.Http ErrorFile 408 / etc / haproxy / erreurs / 408.HTTP ERRORFILE 500 / etc / haproxy / erreurs / 500.Http ErrorFile 502 / etc / Haproxy / Erreurs / 502.HTTP ErrorFile 503 / etc / Haproxy / Erreurs / 503.Http ErrorFile 504 / etc / Haproxy / Erreurs / 504.http 

Ajout d'auditeur Haproxy:

Maintenant, dites à Haproxy où écouter les nouvelles connexions. Selon la configuration ci-dessous, Haproxy se lira sur le port 80 de 192.168.1.12 adresses IP.

Frontend local_server Bind 192.168.1.12:80 Mode http default_backend my_web_servers 

Ajouter des serveurs Web backend:

Selon la configuration ci-dessus, Haproxy écoute maintenant sur le port 80. Définissez maintenant les serveurs Web backend où Haproxy envoie la demande.

Mode des nœuds backend Http Balance Roundrobin Option ForwardFor Http-Request Set-Header X-Forwarded-Port% [DST_PORT] Http-Request Add-Header.1rnhost: localhost server web1.exemple.com 192.168.1.101: 80 serveur web2.exemple.com 192.168.1.102: 80 serveur Web3.exemple.com 192.168.1.103: 80 

Activer les statistiques (facultatif)

Maintenant, si vous le souhaitez, vous pouvez activer les statistiques Haproxy en ajoutant la configuration suivante dans le fichier de configuration Haproxy.

Écouter Statistiques *: 1936 statistiques Activer les statistiques des statistiques Hide-Version Refresh 30S Statistiques Show-Node Statistiques Autom Username: Mot de passe Statistiques URI / Statistiques 

Étape 3 - Fichier de configuration Haproxy final

Le fichier de configuration final peut ressembler ci-dessous:

Global Log / dev / log local0 log / dev / log local1 note chroot / var / lib / haproxy statistiques socket / run / haproxy / admin.SOCK MODE 660 NIVEAU ADMIN STATS TIMEUT 30S Utilisateur Haproxy Group Haproxy Daemon # Emplacements de matériel SSL par défaut CA-Base / etc / SSL / CERTS CRT-BASE / ETC / SSL / Private # Ciphers par défaut. # Pour plus d'informations, voir Ciphers (1SSL). Cette liste provient de: # 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 Options NO-SSLV3 Par défaut Log Global Mode HTTP Option httplog Option Dontlognull Timeout Connect 5000 Timeout Client 50000 Timeout Server 50000 ERRORFILE 400 / ETC / HAPROXY / ERROR / 400.Http ErrorFile 403 / etc / Haproxy / Erreurs / 403.Http ErrorFile 408 / etc / haproxy / erreurs / 408.HTTP ERRORFILE 500 / etc / haproxy / erreurs / 500.Http ErrorFile 502 / etc / Haproxy / Erreurs / 502.HTTP ErrorFile 503 / etc / Haproxy / Erreurs / 503.Http ErrorFile 504 / etc / Haproxy / Erreurs / 504.Http Frontend local_server Bind 192.168.1.12:80 mode http default_backend my_web_servers backend my_web_servers mode http bancin rondrobin option upwardfor http-request set-header x-forwed-port% [dst_port] http-request add-header x-forwarded-proto https if ssl_fc headkkkkkkkkkkkkkkkkk if ssl_fc httpchkkkkkkkkkkkkkkkkk if ssl_fc HTTPHKKkkkkkkkkkkkkkkkkk if SSL_FC Http / 1.1rnhost: localhost server web1.exemple.com 192.168.1.101: 80 serveur web2.exemple.com 192.168.1.102: 80 serveur Web3.exemple.com 192.168.1.103: 80 Écouter Statistiques *: 1936 statistiques Activer les statistiques des statistiques Hide-Version Refresh 30S Statistiques Show-Node Stats Nom d'utilisateur: Mot de passe Statistiques URI / Statistiques 

Étape 4 - Redémarrer Haproxy

Vous avez maintenant apporté toutes les modifications nécessaires dans votre serveur Haproxy. Vérifiez maintenant le fichier de configuration avant de redémarrer le service à l'aide de la commande suivante.

haproxy -c -f / etc / haproxy / haproxy.CFG 

Si la commande ci-dessus renvoyait la sortie car le fichier de configuration est valide, redémarrez le service haproxy

SUDO SERVICE HAPROXY RETOUR 

Étape 5 - Vérifiez le paramètre Haproxy

À ce stade, nous avons une configuration complète de Haproxy fonctionnelle. À chaque nœud de serveur Web, j'ai un index de démonstration.Page HTML montrant le nom d'hôte des serveurs, nous pouvons donc facilement faire la différence entre les pages Web des serveurs.

Maintenant, accédez au port 80 sur IP 192.168.1.12 (comme configuré ci-dessus) dans le navigateur Web et appuyez sur Refresh. Vous verrez que Haproxy envoie des demandes aux serveurs backend un par un (selon l'algorithme de la ronde)).

À chaque rafraîchissement, vous pouvez que Haproxy envoie une demande une par une à un serveur backend.

Référence: http: // www.haproxy.org / téléchargement / 1.5 / Doc / Configuration.SMS