HAProxy est une application logicielle 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 possède plusieurs fonctionnalités 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és sur les deux.
Installer HAProxy
Debian 9 est déjà livrée avec HAProxy 1.7 (dernière version stable au moment de la rédaction), 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, vous avez installé HAProxy et vous pouvez passer à l'étape suivante.
Configuration de HAProxy
Le fichier de configuration HAProxy est divisé en deux sections - «globale» et «proxies». L'une concerne la configuration à l'échelle du processus, tandis que la seconde se compose de sections de configuration par défaut, frontend et backend.
Section mondiale
À l'aide de votre éditeur de texte préféré, ouvrez /etc/haproxy/haproxy.cfget notez les sections prédéfinies: "globale" et "par défaut". La première chose que vous voudrez peut-être faire est d'augmenter la maxconnà une taille raisonnable, car cela affecte les connexions autorisées par HAProxy. Trop de connexions peuvent entraîner le blocage 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 sous mode http:
option forwardfor
Cela ajoutera des en- X-Forwarded-Fortêtes à chaque demande, ce qui permettra à vos serveurs principaux d'apprendre l'adresse IP d'origine de l'utilisateur.
Ajoutez également cette ligne pour activer le mode de fermeture de connexion HTTP côté serveur tout en conservant la possibilité de prendre en charge la persistance HTTP côté client. Cela réduit la latence côté client et permet de conserver les ressources du serveur:
option http-server-close
Si vous souhaitez utiliser keep-alive à la fois côté client et côté 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 procurations
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 frontale
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
Assurez-vous de le remplacer public_ippar l'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 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_ippar les adresses IP de vos instances Vultr.) Cela vous permettra d'équilibrer la charge entre chaque serveur de l'ensemble de serveurs spécifié (en supposant que chaque adresse IP correspond à un serveur différent). L' checkoption permet à l'équilibreur de charge d'effectuer des contrôles d'intégrité sur le serveur.
Enregistrez le fichier de configuration, puis redémarrez HAProxy:
service haproxy restart
Si tout fonctionne, vous pourrez vous connecter à http://public_ip/(en le remplaçant par votre adresse IP publique ou votre nom de domaine tel que configuré à 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 démarrer HAProxy manuellement à l'aide de cette commande:
# haproxy -f /etc/haproxy/haproxy.cfg
Par exemple, si vous voyez une sortie comme celle-ci:
[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.