Top 10 des meilleurs chargeurs de batterie à décharge profonde en 2020 Avis et guide d'achat
24 septembre 2020
Critique du radiateur céramique Lasko 6405
24 septembre 2020

HAProxy est un équilibreur de charge open source, capable d'équilibrer n'importe quel service basé sur TCP. Il est couramment utilisé pour équilibrer HTTP et peut aider à résoudre les problèmes de trafic sur votre serveur Web. Voici comment le configurer.

Qu'est-ce que HAProxy?

Les équilibreurs de charge comme HAProxy vous permettent de répartir le trafic sur plusieurs serveurs, ce qui facilite la gestion. Au lieu de pointer votre adresse IP vers votre serveur Web, vous la dirigerez vers un serveur HAProxy, qui déciderait où l'envoyer à partir de là. HAProxy est très léger et ne nécessite pas beaucoup de ressources pour fonctionner. Vous pouvez donc utiliser un seul équilibreur de charge pour de nombreux serveurs backend. Idéalement, vous souhaitez que votre serveur HAProxy et vos serveurs Web soient hébergés dans le même centre de données, à partir du même fournisseur de cloud, pour réduire la latence.

HAProxy permet également à votre réseau d'être plus résilient. Si un serveur Web tombe en panne, HAProxy peut acheminer le trafic vers le reste pendant que vous diagnostiquez le problème. Pour qu'il soit vraiment résilient, vous voudrez disposer d'un serveur HAProxy de secours, au cas où votre équilibreur de charge tomberait en panne.

Même avec HAProxy, vous aurez souvent besoin d'un CDN de site complet devant lui, à la fois pour gérer une charge supplémentaire et pour avoir plusieurs points de présence plus près de l'utilisateur final.

Comment configurer l'équilibrage de charge HAProxy

Tout d'abord, installez HAProxy à partir du gestionnaire de packages de votre distribution. Pour les systèmes basés sur Debian comme Ubuntu, ce serait:

apt-get installer haproxy

Ensuite, vous devrez l'activer en modifiant le script d'initialisation à l'adresse / etc / default / haproxy et réglage ACTIVÉE à 1:

ACTIVÉ = 1

Maintenant, si tu cours service haproxy, vous devriez voir qu'il est activé et prêt à être configuré. Nous allons commencer par archiver le fichier de configuration par défaut:

mv /etc/haproxy/haproxy.cfg /etc/haproxy/haproxy.cfg.old

Créez un nouveau fichier de configuration à sa place et commencez par ajouter quelques paramètres globaux:

global
avis de journal 127.0.0.1 local0
maxconn 2000
haproxy utilisateur
haproxy de groupe
    activer les statistiques
    stats uri / haproxy? stats
    royaume stats HAProxy  Statistics
    stats auth admin: mot de passe

le Journal paramètre spécifie le serveur syslog auquel HAProxy envoie les journaux. Vous aurez besoin d'un serveur comme rsyslog en cours d'exécution pour en profiter. le maxconn paramètre spécifie le nombre maximal de connexions simultanées, et utilisateur et groupe spécifiez l'utilisateur Unix sous lequel HAProxy fonctionne.

Les dernières lignes activent la page de statistiques intégrée de HAProxy, que vous pouvez afficher en accédant à l'URI dans votre navigateur. Dans ce cas, ce serait http: // your_ip / haproxy? stats, mais vous pouvez afficher un démo ici.

Ensuite, nous définirons la configuration par défaut qui s'appliquera à tous Ecoutez bloque s'ils n'y apportent aucune modification:

valeurs par défaut
    journal global
    mode http
    option httplog
    option dontlognull
    tentatives 3
    option redispatch
    timeout connect 5000
    client de délai d'expiration 10000
    serveur timeout 10000

Nous définissons la valeur par défaut pour utiliser le paramètre de journal global, fonctionner sur HTTP et définir certains paramètres liés aux délais de connexion.

Nous allons créer un l'extrémité avant bloc qui fera le gros du travail et les connexions en avant au backend:

proxy frontend
    lier *: 80

    # Déclarations de fonction ACL
    acl is_abuse src_http_req_rate (Abus) ge 10
    acl inc_abuse_cnt src_inc_gpc0 (Abus) gt 0
    acl abuse_cnt src_get_gpc0 (Abus) gt 0

    # Règles
    connexion tcp-request track-sc0 table src Abus
    connexion tcp-request rejetée si abuse_cnt
    http-request refuser si abuse_cnt
    http-request refuser si is_abuse inc_abuse_cnt

    option httpclose
    option avant pour

    use_backend appname

La première ligne lie cette interface au port 80, sur lequel HAProxy écoutera.

Les deux sections suivantes concernent limitation de débit. Tout d'abord, les fonctions de liste de contrôle d'accès (ACL) sont déclarées, qui déterminent si une adresse IP est abusive. Ensuite, un ensemble de règles rejettera une connexion si elle fait trop de demandes.

le avancer pour Cette option transmettra l’adresse IP du client au serveur. Étant donné que HAProxy agit comme un proxy inverse, votre serveur nginx ne verra que l'adresse IP de votre serveur HAProxy. Cette option définit le X-Forwarded-For En-tête HTTP à l'adresse IP du client.

Et enfin, nous définissons ceci l'extrémité avant block pour utiliser le backend "appname", que nous devrons créer. le backend block définit simplement les serveurs vers lesquels transférer, ainsi que quelques options:

backend appname your_ip: 80
    équilibre roundrobin
    cookie SERVERNAME insérer
    serveur web1 web1_ip: 80 vérifier le cookie web1
    serveur web2 web2_ip: 80 vérifier le cookie web2

le équilibre La directive définit comment HAProxy équilibre les demandes entre les serveurs. L'option la plus courante est roundrobin, qui fera pivoter les connexions via chaque serveur dans l'ordre. Si vous rencontrez des problèmes d'équilibre, vous pouvez essayer d'utiliser l'option lessconn, qui sélectionne en fonction des connexions simultanées. Si vous avez besoin que les utilisateurs accèdent au même serveur via plusieurs connexions, vous pouvez utiliser le la source , qui sélectionne en fonction d'un hachage de l'adresse IP du client.

Les deux dernières lignes allouent des serveurs à ce Ecoutez bloquer. Vous leur donnez un nom (web1 et web2) spécifiez leurs adresses, puis répertoriez quelques options. Ici, nous utilisons le vérifier pour s'assurer que le serveur est sain et accepte les connexions, et le biscuit paramètre pour définir le NOM DU SERVEUR cookie (que nous avons inséré directement ci-dessus) au nom du serveur, qui est utilisé pour la persistance de la session (afin que l'utilisateur ne change pas de serveur lors de l'utilisation de votre site). le source d'équilibre option produit le même effet.

Et comme nous utilisons la limitation de débit, nous aurons en fait besoin d'un autre backend pour stocker les adresses IP:

Abus backend
    stick-table type ip taille 100K expire 30m magasin gpc0, http_req_rate (10s)

Cela ne transfère en fait aucune connexion; il fonctionne comme une table dans laquelle stocker les adresses. Les adresses sont vidées après 30 minutes, les adresses jugées abusives seront donc bloquées pendant 30 minutes.

Enfin, vous pouvez démarrer le service HAProxy en exécutant:

démarrage du service haproxy
//]]>