Installation de HAProxy 1.7 sur Debian 9.1 (Stretch)

HAProxy est une application logicielle de réseau qui offre une haute disponibilité, un équilibrage de charge et un proxy pour les applications réseau TCP et HTTP. Il convient aux sites Web à fort trafic et alimente de nombreux sites populaires sur le Web. Cet article vous montrera comment installer et configurer HAProxy sur Debian 9.1.

Bien que HAProxy a plusieurs caractéristiques importantes, cet article se concentre sur la façon de configurer HAProxy pour “proxy” votre application web.

Exigences

  • Au moins deux serveurs Vultr (pour la fonctionnalité d’équilibrage de charge) avec votre site Web ou application Web déployé sur les deux.

Installation de HAProxy

Debian 9 est déjà livré avec HAProxy 1.7 (dernière version stable au moment de l’écriture), et nous pouvons simplement l’installer en utilisant apt-get:

apt-get update
apt-get install haproxy

Si les commandes précédentes ont réussi, alors vous avez installé HAProxy et vous pouvez passer à l’étape suivante.

Configuration de HAProxy

Le fichier de configuration HAProxy est divisé en deux sections – “global” et “proxies”. L’une concerne la configuration à l’échelle du processus, tandis que la seconde comprend les sections de configuration par défaut, frontend et backend.

Section mondiale

En utilisant votre éditeur de texte favori, ouvrez /etc/haproxy/haproxy.cfget notez les sections prédéfinies: “global” et “defaults”. La première chose que vous pouvez faire est d’augmenter la maxconntaille à une taille raisonnable, car cela affecte les connexions que permet HAProxy. Trop de connexions peuvent provoquer un crash de votre service Web en raison de nombreuses demandes. Vous devrez ajuster la taille pour voir ce qui fonctionne pour vous. Dans la section globale, nous avons choisi une maxconnvaleur de 3072.

global
    daemon
    maxconn 3072

Dans la section par défaut, ajoutez la ligne suivante en mode http:

option forwardfor

Cela ajoutera des en- X-Forwarded-Fortêtes à chaque requête, ce qui permettra à vos serveurs dorsaux d’apprendre l’adresse IP d’origine de l’utilisateur.

En outre, ajoutez cette ligne pour activer le mode de fermeture de connexion HTTP côté serveur tout en gardant la possibilité de prendre en charge le protocole HTTP keep-alive côté client. Cela réduit la latence du côté client et permet de conserver les ressources du serveur:

option http-server-close

Si vous souhaitez utiliser keep-alive sur les côtés client et serveur, vous pouvez utiliser à la option http-keep-aliveplace. Cette option est particulièrement utile lorsque le coût d’établissement d’une nouvelle connexion au serveur est important par rapport au coût de récupération de la ressource demandée.

Enfin, le fichier de configuration résultant ressemblera à ceci:

defaults
    mode http
    option forwardfor
    option http-server-close
    timeout connect 5000ms
    timeout client 50000ms
    timeout server 50000ms

Section des proxies

Pour configurer votre proxy, vous devrez ajouter deux sections au fichier de configuration pour définir les deux parties du proxy: le frontend et le backend.

Configuration frontend

Le frontend gérera vos connexions HTTP. Ajoutez ce qui suit à la fin de votre haproxy.cfgfichier:

frontend http-frontend
    bind public_ip:80
    reqadd X-Forwarded-Proto:\ http
    default_backend wwwbackend

Veillez à remplacer public_ipl’adresse IP publique ou le nom de domaine de votre serveur.

Configuration du backend

Configurez votre backend en ajoutant les lignes suivantes à la fin de votre fichier de configuration:

backend wwwbackend
    server 1-www server1_ip:80 check
    server 2-www server2_ip:80 check
    server 3-www server3_ip:80 check

La configuration du backend utilisée ici crée 3 connexions nommées X-www. ( Xest 1, 2 ou 3.) Chacun d’eux correspond à une serverX_ip:80 adresse. (Remplacez serverX_iples adresses IP de vos instances Vultr.) Cela vous permettra de charger la balance entre chaque serveur dans le jeu de serveurs spécifié (en supposant que chaque adresse IP correspond à un serveur différent). Cette checkoption permet à l’équilibreur de charge d’effectuer des vérifications d’intégrité sur le serveur.

Enregistrez le fichier de configuration, puis redémarrez HAProxy:

service haproxy restart

Si tout fonctionne, alors vous serez en mesure de vous connecter http://public_ip/(en le remplaçant par votre adresse IP publique ou le nom de domaine tel que configuré dans l’étape frontend) et afficher votre site Web.

Erreurs de débogage

Si votre instance HAProxy refuse de démarrer après vos modifications, il est probable que vous ayez une erreur quelque part dans le fichier de configuration. Pour obtenir des messages clairs sur le problème dans le fichier de configuration, vous pouvez essayer de lancer HAProxy manuellement en utilisant cette commande:

haproxy -f /etc/haproxy/haproxy.cfg

Par exemple, si vous voyez une sortie comme ceci:

[ALERT] 234/195612 (2561) : parsing [/etc/haproxy/haproxy.cfg:48] : server 1-www has neither service port nor check port nor tcp_check rule 'connect' with port information. Check has been disabled.
[ALERT] 234/195612 (2561) : Error(s) found in configuration file : /etc/haproxy/haproxy.cfg
[ALERT] 234/195612 (2561) : Fatal errors found in configuration.

Ensuite, vous avez oublié de spécifier le numéro de port du serveur 1-www.

 

Sources

Laisser un commentaire