Configuration d'un équilibreur de charge haute disponibilité (avec prise en charge du basculement et de session) avec HAProxy / Heartbeat sur Debian Etch – Bien choisir son serveur d impression

Configuration d'un équilibreur de charge haute disponibilité (avec prise en charge du basculement et de session) avec HAProxy / Heartbeat sur Debian Etch

Version 1.0
Auteur: Falko Timme

Cet article explique comment configurer un équilibreur de charge à deux nœuds dans une configuration active / passive avec HAProxy et heartbeat sur Debian Etch. L'équilibreur de charge se situe entre l'utilisateur et deux (ou plus) serveurs Web Apache dorsaux contenant le même contenu. Non seulement l'équilibreur de charge distribue les demandes aux deux serveurs Apache dorsaux, mais il vérifie également l'état de santé des serveurs dorsaux. Si l'une d'entre elles est en panne, toutes les demandes seront automatiquement redirigées vers le serveur principal restant. De plus, les deux nœuds d'équilibreur de charge se surveillent mutuellement à l'aide de pulsations. Si le maître échoue, l'esclave devient le maître, ce qui signifie que les utilisateurs ne remarqueront aucune interruption du service. HAProxy est sensible à la session, ce qui signifie que vous pouvez l’utiliser avec n’importe quelle application Web utilisant des sessions (telles que des forums, des paniers d’achat, etc.).

Sur le site Web HAProxy: "HAProxy est une solution gratuite, très rapide et fiable offrant haute disponibilité, équilibrage de charge et proxy pour les applications TCP et HTTP. Elle est particulièrement adaptée aux sites Web analysant des charges très élevées tout en ayant besoin de la persistance ou du traitement au niveau de la couche 7. Des dizaines de Des milliers de connexions sont clairement réalistes avec le matériel actuel. Son mode de fonctionnement rend son intégration dans les architectures existantes très facile et sans risque, tout en offrant la possibilité de ne pas exposer les serveurs Web fragiles au Net. "

Je ne donne aucune garantie que cela fonctionnera pour vous!

1 note préliminaire

Dans ce tutoriel, je vais utiliser les hôtes suivants:

  • Equilibreur de charge 1: lb1.example.com, Adresse IP: 192.168.0.100
  • Load Balancer 2: lb2.example.com, Adresse IP: 192.168.0.101
  • Serveur Web 1: http1.example.com, Adresse IP: 192.168.0.102
  • Serveur Web 2: http2.example.com, Adresse IP: 192.168.0.103
  • Nous avons également besoin d’une adresse IP virtuelle qui flotte entre lb1 et lb2: 192.168.0.99

Voici un petit diagramme qui montre notre configuration:

IP partagée = 192.168.0.99
192.168.0.100 192.168.0.101 192.168.0.102 192.168.0.103
——- + ———— + ————– + ———– + – ——–
| | | |
+ – + – + + – + – + + —- + —- + + —- + —- +
| lb1 | | lb2 | | http1 | | http2 |
+ —– + + —– + + ——— + + ——— +
haproxy haproxy 2 serveurs Web (Apache)
rythme cardiaque

L'adresse IP partagée (virtuelle) ne pose aucun problème tant que vous êtes dans votre propre réseau local, où vous pouvez attribuer des adresses IP à votre guise. Toutefois, si vous souhaitez utiliser cette configuration avec des adresses IP publiques, vous devez trouver un hébergeur sur lequel vous pouvez louer deux serveurs (les nœuds d'équilibreur de charge) dans le même sous-réseau. vous pouvez ensuite utiliser une adresse IP libre dans ce sous-réseau pour l'adresse IP virtuelle. Ici en Allemagne, Hetzner est un hébergeur qui vous permet de le faire – il suffit de leur parler. Mise à jour: les politiques de Hetzner ont changé – veuillez lire ici pour plus de détails: http://www.howtoforge.com/forums/showthread.php?t=19988

http1 et http2 sont les configurations standards de Debian Etch Apache avec la racine du document / var / www (la configuration de ce vhost par défaut est stockée dans / etc / apache2 / sites-available / default). Si la racine de votre document diffère, vous devrez peut-être ajuster un peu ce guide.

Pour démontrer la connaissance de session de HAProxy, je suppose que l’application Web installée sur http1 et http2 utilise l'identifiant de session JSESSIONID.

2 Préparation des serveurs Web principaux

Nous allons configurer HAProxy en tant que proxy transparent, c’est-à-dire qu’il transmettra l’adresse IP de l’utilisateur initial dans un champ appelé X-Forwarded-For sur les serveurs Web principaux. Bien entendu, les serveurs Web principaux doivent consigner l'adresse IP de l'utilisateur d'origine dans leurs journaux d'accès au lieu des adresses IP de nos équilibreurs de charge. Nous devons donc modifier le LogFormat faire la queue /etc/apache2/apache2.conf et remplacer % h avec % X-Forwarded-For i:

http1 / http2:

vi /etc/apache2/apache2.conf
[...]



#LogFormat "% h% l% u% t%"% r  "%> s% b "% référant i  ""% utilisateur-agent i  "" combinés
LogFormat "% X-Forwarded-For i% l% u% t "% r  "%> s% b "% Referer i  ""% User-Agent i  "" combinés
[...]

Nous allons également configurer HAProxy pour vérifier l’état de santé des serveurs principaux en demandant en permanence le fichier. check.txt (Se traduit par /var/www/check.txt si / var / www est la racine de votre document) depuis les serveurs principaux. Bien entendu, ces demandes alourdiraient totalement les journaux d'accès et gâcheraient vos statistiques d'affichage de page (si vous utilisez un outil tel que Webalizer ou AWstats qui génère des statistiques basées sur les journaux d'accès).

Par conséquent, nous ouvrons notre configuration vhost (dans cet exemple, il est en / etc / apache2 / sites-available / default) et y insérer ces deux lignes (commentez toutes les autres CustomLog directives dans votre configuration vhost):

vi / etc / apache2 / sites-available / default
[...]



SetEnvIf Request_URI "^ / check  .txt $" dontlog
CustomLog /var/log/apache2/access.log combiné env =! Dontlog
[...]

Cette configuration empêche que les demandes de check.txt être connecté au journal d'accès d'Apache.

Ensuite, nous redémarrons Apache:

/etc/init.d/apache2 restart

… et créer le fichier check.txt (cela peut être un fichier vide):

touch /var/www/check.txt

Nous en avons déjà terminé avec les serveurs principaux; le reste de la configuration se produit sur les deux nœuds d'équilibreur de charge.

3 Installation de HAProxy

Malheureusement, HAProxy est disponible sous forme de paquet Debian pour Debian Lenny (testing) et Sid (unstable), mais pas pour Etch. Nous allons donc installer le paquet HAProxy de Lenny. Pour ce faire, ouvrez /etc/apt/sources.list et ajouter la ligne deb http://ftp2.de.debian.org/debian/ Lenny main; votre /etc/apt/sources.list pourrait alors ressembler à ceci:

lb1 / lb2:

vi /etc/apt/sources.list
deb http://ftp2.de.debian.org/debian/ etch main
deb-src http://ftp2.de.debian.org/debian/ etch main

deb http://ftp2.de.debian.org/debian/ Lenny main

deb http://security.debian.org/ etch / updates contrib principale
deb-src http://security.debian.org/ etch / updates contrib principale

Bien sûr (pour ne pas gâcher notre système), nous souhaitons installer les packages de Lenny uniquement s’il n’existe pas de package approprié d’Etch – s’il existe des packages d’Etch et de Lenny, nous souhaitons installer le package à partir d’Etch. Pour ce faire, nous accordons une priorité plus élevée aux packages d’Etch. / etc / apt / preferences:

vi / etc / apt / preferences
Paquet: *
Pin: relâchez a = etch
Priorité de broche: 700

Paquet: *
Pin: libérer a = lenny
Priorité de broche: 650

(Les termes graver et Lenny se référer aux termes appropriés dans /etc/apt/sources.list; si vous utilisez stable et essai là, vous devez utiliser stable et essai au lieu de graver et Lenny dans / etc / apt / preferences ainsi que.)

Ensuite, nous mettons à jour notre base de données de paquets:

apt-get update

… mettre à jour les paquets installés:

apt-get upgrade  

… et installez HAProxy:

apt-get install haproxy

4 Configuration des équilibreurs de charge

La configuration HAProxy est stockée dans /etc/haproxy.cfg et est assez simple. Je ne vais pas expliquer toutes les directives ici; pour en savoir plus sur toutes les options, veuillez consulter http://haproxy.1wt.eu/download/1.3/doc/haproxy-en.txt et http://haproxy.1wt.eu/download/1.2/doc/architecture.txt. .

Nous sauvegardons l'original /etc/haproxy.cfg et en créer un nouveau comme ceci:

lb1 / lb2:

cp /etc/haproxy.cfg /etc/haproxy.cfg_orig
cat / dev / null> /etc/haproxy.cfg
vi /etc/haproxy.cfg

global
        log 127.0.0.1 local0
        log 127.0.0.1 local1 avis
        #log loghost local0 info
        maxconn 4096
        #déboguer
        #silencieux
        utilisateur haproxy
        groupe haproxy

défauts
        log global
        mode http
        option httplog
        option dontlognull
        retries 3
        redispatch
        maxconn 2000
        contimeout 5000
        clitimeout 50000
        srvtimeout 50000

écouter webfarm 192.168.0.99:80
       mode http
       statistiques permettent
       stats auth someuser: un mot de passe
       balance ronde
       cookie préfixe JSESSIONID
       option httpclose
       option forwardfor
       option httpchk HEAD /check.txt HTTP / 1.0
       serveur web 192.168.0.102:80 cookie Une vérification
       serveur web 192.168.0.103:80 cookie B check

Ensuite, nous avons mis ACTIVÉE à 1 dans / etc / default / haproxy:

vi / etc / default / haproxy
# Définissez ENABLED sur 1 si vous voulez que le script init démarre haproxy.
ACTIVÉ = 1
# Ajoutez des drapeaux supplémentaires ici.
#EXTRAOPTS = "- de -m 16"
  • YATO Equilibreur de charge pro pour grue d'atelier
    Outillage Levage et travail en hauteur Treuil, cric, palan et accessoires Divers accessoires de levage YATO, Equilibreur de charge pro pour grue d'atelier Equilibreur de charge pro pour grue d'atelier Description du produit Traverse - équilibreur professionnel. Un dispositif indispensable
  • AUTOBEST Equilibreur de charge pour grue d'atelier, capacité 680 kg - AUTOBEST
    Outillage Levage et travail en hauteur Treuil, cric, palan et accessoires Grue d'atelier AUTOBEST, Cet équilibreur de charge est équipé d'une manivelle . Caractéristiques techniques : • Capacité : 680 kg . • 4 Chaines • Course : 315 mm
  • Marset Appliques d'extérieur Marset SANTORINI -Applique avec prise dextérieur H25,8cm Jaune
    Lampe à accrocher pour l'extérieur composée d'une structure en polycarbonate (partie haute grise, zone médiane blanche et 2 réflecteurs modulables), d'un diffuseur verre soufflé, d'un long câble d'alimentation/suspension noir équipé d'une prise et d'un support mural (en acier inoxydable). Cette lampe
  • Marset Appliques d'extérieur Marset SANTORINI -Applique avec prise dextérieur H25,8cm Blanc
    Lampe à accrocher pour l'extérieur composée d'une structure en polycarbonate (partie haute grise, zone médiane blanche et 2 réflecteurs modulables), d'un diffuseur verre soufflé, d'un long câble d'alimentation/suspension noir équipé d'une prise et d'un support mural (en acier inoxydable). Cette lampe
  • Marset Appliques d'extérieur Marset SANTORINI -Applique avec prise dextérieur H25,8cm Gris
    Lampe à accrocher pour l'extérieur composée d'une structure en polycarbonate (partie haute grise, zone médiane blanche et 2 réflecteurs modulables), d'un diffuseur verre soufflé, d'un long câble d'alimentation/suspension noir équipé d'une prise et d'un support mural (en acier inoxydable). Cette lampe
  • Marset Lampes à poser d'extérieur Marset SANTORINI-Suspension d'extérieur avec prise H25,8cm Blanc
    Lampe baladeuse à suspendre pour l'extérieur composée d'une structure en polycarbonate, d'un diffuseur verre soufflé, d'un long câble d'alimentation/suspension noir équipé d'une prise. Cette lampe personnalisable est très modulable ! Ses deux réflecteurs (un grand et un petit) se placent dans la position
  • Marset Lampes à poser d'extérieur Marset SANTORINI-Suspension d'extérieur avec prise H25,8cm Jaune
    Lampe baladeuse à suspendre pour l'extérieur composée d'une structure en polycarbonate, d'un diffuseur verre soufflé, d'un long câble d'alimentation/suspension noir équipé d'une prise. Cette lampe personnalisable est très modulable ! Ses deux réflecteurs (un grand et un petit) se placent dans la position
  • FINISH Equilibreur de charge yfs sans blocage de securite - 2-5 kg- 2.40m
    Outillage Levage et travail en hauteur Treuil, cric, palan et accessoires Divers accessoires de levage FINISH, Rétracteur à ressort sans blocage de sécurité permettant la suspension d''appareils pneumatiques, outils de montage, pistolets à peinture, perceuses, ponceuses... Utilisé pour
  • FINISH Equilibreur de charge yfs sans blocage de securite - 2-5 kg- 2.40m
    Outillage Levage et travail en hauteur Treuil, cric, palan et accessoires Divers accessoires de levage FINISH, Rétracteur à ressort sans blocage de sécurité permettant la suspension d''appareils pneumatiques, outils de montage, pistolets à peinture, perceuses, ponceuses... Utilisé pour soulager
  • EQUIPEMENT EXPRESS SICOBA Palonnier équilibreur répartiteur de Charge 907 kg
    Outillage Levage et travail en hauteur Treuil, cric, palan et accessoires Palan EQUIPEMENT EXPRESS SICOBA, Spécialement conçu pour la manutention des moteurs et de vos boîtes de vitesse. Il permet d'équilibrer une charge sous la grue selon la forme de la pièce ou du moteur et de la soulever