Translate

dimanche 1 novembre 2009

TUTORIEL: Construire un répartiteur de charge pour vos labs!!!

Bon, cela fait maintenant quelques mois que j'avais commençé à penser à rediger un sujet sur la répartition de charge avec OCS 2007 R2 et Exchange... mais je n'avais pas le temps.

J'avais donc mis en place dans mon lab un répartiteur de charge (aussi appelé HLB pour "Hardware Load Balancer" bien qu'il n'ait rien de matériel :)), au début un peu bancal, mais fonctionnel. Mon souci principal était qu'il ne supportait pas le mode SNAT pour OCS 2007 R2. Il tournait sur une OpenSUSE 11.1 élaguée de ses fonctions principales. La distro étant un peu vieillotte, j'ai du mettre tout un tas de mise à jour, et recompiler pas mal de packages afin d'arriver à un resultat satisfaisant... mais trop long à documenter.

N'arrivant pas à dormir ce soir, je me suis mis devant Kamelott Live VI et commençé à tout refaire, pour cela j'ai cherché une distribution Linux récente et légère. Mon choix s'est porté sur une Ubuntu Server 9.10 (basé sur Debian je crois).

Mon HLB tourne donc sur mon serveur Hyper-V R2, avec 128 Mo de mémoire, en pleine charge, je suis à 70 Mo de mémoire consommée... dur dur =°)

Le principe:

  • Une machine virtuelle Linux, basée sur un noyau 2.6.18 ou + car ce noyau support le "Transparent Proxy" de manière stable depuis cette version;
  • Pour activer les fonctionnalités de type SNAT, il faut "mangler" le protocole TCP et le manipuler de manière à arriver à devenir "transparent", cela est fait avec iptables (version 1.4.5);
  • Deux réseaux: une réseau frontal (où l'adresse virtuelle est déclarée) et un réseau dorsal (où se situent les serveurs mis en répartition de charge) -- le HLB joue à la fois un rôle de routeur, répartiteur et "translateur";
  • Pour le service de répartition de charge, je me suis basé sur l'excellent HAProxy (http://haproxy.1wt.eu/) qui est d'ailleurs utilisé dans l'appliance "Loadbalancer.org" (cette dernière utilise je pense sensiblement mêmes techniques que j'ai utilisées, mais eux sont des "pros" du réseau donc j'imagine que leur appliance fonctionne mieux ;))
Le reste est de la configuration. Dans l'exemple fourni ci-dessous, je ne respecte probablement pas toutes les "Best Practices", mais ça fonctionne plutôt pas mal !


Petite surprise, j'ai rajouté la répartition de charge Exchange 2010, avec le RPC ClientAccessArray (perso, j'adore!!!).

Voici donc les instructions, elles sont en anglais car j'en ai d'abord fait profité mes collègues Avanade et mes pairs MCM. Nul besoin de mentionner qu'il faut un minimum de connaissances Linux, et quand même quelques bonnes connaissances OCS et Exchange 2007/2010 car je n'ai presque rien détaillé de ce côté (désolé, j'essayerai de me ratrapper plus tard =)).


Cliquez sur le lien ci-dessous pour accéder aux fichiers de configuration et aux instructions (que j'essayerai de maintenir à jour au fur et à mesure de mes périgrinations =°)).

4 commentaires:

  1. Super !
    Je m'étais documenté sur le sujet, je vais pouvoir tester ca. Par contre prend tu en charge les sessions active? Par quel moyen (cookies, ip source)?

    Pierre

    RépondreSupprimer
  2. Bonjour Pierre,

    Je ne sais pas si vous aurez ce message. Cet article est un peu vieux, et dpuis beaucoup d'eau a coulé sous les ponts :)

    J'ai beaucoup amélioré mon petit load-balancer fait avec HAProxy et Ubuntu. Aujourd'hui j'utilise des mécanismes avancés de répartition de charge comme en effet des cookies, même du LB basé sur l'en-tête d'authentification. De fait, j'ai pas mal modifié mon petit load-balancer "maison" afin de faire de la terminaison SSL sur le LB, et non plus sur les serveurs Exchange.

    Résultat: c'est assez "pro" puisque c'est ce que je fais dans le monde réel avec des F5 BigIP par exemple :) - du coup j'ai commencé un Whitepaper afin d'expliquer comment configurer cela avec la dernière version d'Ubuntu Server, de HAProxy et une version un peu modifiée de stunnel (pour la terminaison SSL). De plus avec les versions récentes du noyau Linux, les modules Hyper-V inclus permettent de tirer partie des cartes réseau Synthetiques + de la gestion d'énergie, etc.

    Malheuseusement je n'ai pas fini :( mais je compte publier ça avant fin Février.

    J'ai aussi étendu tout ça pour prendre en compte Lync Server :)

    Bon courage,
    Benoit.

    RépondreSupprimer
  3. Bonjour,

    Je suis preneur pour le Wallpaper :). Etant donné que tu as l'air d'avoir pas mal d’expérience sur le produit, je voulais savoir ce que cela donnait en terme de performance. La question cachée est est-ce que cette solution peut être envisagée sur un environnement de production ?
    Je vais avancer doucement sur le sujet en attendant ton wallpaper.

    @plus

    Pierre

    RépondreSupprimer
  4. Hello Pierre,

    Wallpaper, non, Whitepaper, si :)

    Pour les performances, je n'ai jamais utilisé cette solution en environnement de production car la majorité de mes clients sont des gros comptes et par conséquent ont déjà des répartiteurs de charge de classe "Enterprise" (des gros BigIP F5 par exemple).

    Pour les structures moyennes, il existe des répartiteurs virtuels chez F5 et KEMP. KEMP qui commercialise aussi des répartiteurs déstinés aux moyennes structures, mais qui ont aussi un offre assez riche sur des répartiteurs orientés gros traffic.

    Pour revenir à la question d'origine. HAProxy est *hyper performant* et beaucoup utilisé par des hébergeurs; de plus les noyaux Linux récents d'Ubuntu Server aident pas mal. Pour le SSL, j'utilise "stunnel", qui est ultra léger et performant aussi. J'avais aussi regardé du côté de Pound, mais celui-ci ne fonctionne pas bien avec le Rpc/Http d'E2010 (fonctionne bien avec les autres Web Services cependant).

    RépondreSupprimer