Quel est l'inconvénient des sessions persistantes avec des équilibreurs de charge?


13

Nous avons une ferme Web de machines IIS7 qui fonctionnent très bien. Devant eux se trouve un équilibreur de charge matériel F5 Big-IP , qui fonctionne également très bien :)

texte alternatif
(source: www.f5.com )

Actuellement, nous utilisons un ASP.NET State Servicepour gérer notre état OutProc . Cela est nécessaire lorsque vous disposez d'une batterie de serveurs Web pour gérer tout type d'informations de session.

Je me demandais si nous pouvions avoir des sessions collantes sur le F5 Big-IP et donc passer d'OutProc à InProc? Si oui, quel est l'inconvénient de cela? Je connais les inconvénients d'InProc vs OutProc, alors ne vous inquiétez pas d'expliquer cela. Je suis plus intéressé par les avantages / inconvénients des sessions persistantes sans F5 Big-IP .

Quelqu'un peut-il apporter de la lumière et / ou de l'expérience?

Réponses:


15

Il y a deux principaux inconvénients:

  1. Votre charge n'est pas répartie uniformément. Les sessions collantes resteront, d'où le nom. Bien que les demandes initiales soient distribuées de manière égale, vous pourriez vous retrouver avec un nombre important d'utilisateurs passant plus de temps que d'autres. Si tous ces éléments sont initialement définis sur un seul serveur, ce serveur aura beaucoup plus de charge. En règle générale, cela n'a pas vraiment un impact énorme et peut être atténué en ayant plus de serveurs dans votre cluster.

  2. Les proxys regroupent les utilisateurs en IP uniques, qui seraient toutes envoyées à un seul serveur. Bien que cela ne fasse généralement pas de mal, autre que l'augmentation de la charge des serveurs individuels, les proxys peuvent également fonctionner dans un cluster. Une demande dans votre F5 à partir d'un tel système ne serait pas nécessairement renvoyée au même serveur si la demande provient d'un autre serveur proxy dans leur cluster proxy.

AOL était à un moment donné en utilisant des clusters de proxy, et vraiment foutu avec des équilibreurs de charge et des sessions collantes. La plupart des équilibreurs de charge proposeront désormais des sessions persistantes basées sur des plages nettes de classe C, ou avec le cas de F5, des sessions persistantes basées sur des cookies qui stockent le nœud final dans un cookie de requête Web.

Bien que les sessions basées sur les cookies devraient fonctionner, j'ai eu quelques problèmes avec elles et je choisis généralement des sessions basées sur IP. GRAND CEPENDANT: Je travaille principalement sur des applications internes - le kilométrage DMZ peut varier.

Cela étant dit, nous avons eu un grand succès avec les sites fonctionnant derrière F5 avec des sessions persistantes et des sessions In-Proc.

Vous voudrez peut-être également jeter un œil à l'un des systèmes de mise en cache distribuée en mémoire comme Memcached ou Velocity pour une alternative au stockage de session en SQL ou au service de mémoire hors proc. Vous vous rapprochez de la vitesse de la mémoire in-proc avec la possibilité de l'exécuter sur plusieurs serveurs.


Outre le processeur, existe-t-il des moyens de vérifier les connexions actuelles et / ou la bande passante en mode natif sur une machine Windows 2008 avec IIS7 ... pour voir si un serveur est trop touché / occupé? Fondamentalement, quelles mesures utilisez-vous pour vous assurer que les serveurs ne sont pas détruits?
Pure.Krome

Nous avons utilisé un mélange de sessions IP collantes et de cookies collants il y a longtemps et avons constaté une distribution inégale, mais pas horriblement. Le cluster proxy AOL était un cauchemar pour le clustering IP et nous avons dû coder en dur les exceptions.
ericslaw

Les compteurs de performances natifs afficheront les connexions HTTP actives.
Christopher_G_Lewis

@Christopher_G_Lewis Pourriez-vous élaborer un peu sur les problèmes que vous avez rencontrés avec les sessions basées sur les cookies sur F5?
Eugene Beresovsky


4

En plus de l'excellente réponse de Christopher, les sessions persistantes signifient que vous avez perdu quelques-uns des énormes avantages des serveurs redondants - la possibilité de supprimer un ou plusieurs pour la maintenance et la transparence face à la défaillance du système.

Je considère les sessions persistantes comme un indicateur fort d'une mauvaise architecture d'application et / ou d'une mauvaise programmation. "Evitez à tout prix" est ma devise.


Excellentes réflexions sur l'entretien. Nous jetons un DRAIN sur un serveur bien avant de le retirer du cluster. DRAIN signifie que les sessions en cours sont traitées, mais aucune nouvelle session n'a démarré sur ce serveur.
Christopher_G_Lewis

Heureusement, personne n'a jamais à effectuer de maintenance à court terme, ni un serveur ne meurt jamais de manière inattendue (ce qui rend toutes les sessions collées à ce serveur soudainement inutiles - je parie que les clients adorent cela).
womble

Peut-on DRAIN depuis un serveur sans avoir à faire de configuration sur le F5 lui-même? Fondamentalement, nous n'avons pas accès au F5 (il est géré pour nous, dans un scénario d'hébergement géré) .. mais nous avons un accès complet à nos serveurs Web .. alors pouvez-vous DRAIN en déposant un fichier ou quelque chose dans un site Web?
Pure.Krome

Nos F5 déterminent le serveur vers le haut / le serveur vers le bas / le drain via un fichier texte dans le site Web - le contexte du fichier est "UP / DOWN / DRAIN". Examinez vos journaux IIS pour déterminer ce qu'ils regardent. Notez que parfois le F5 fait juste un SYN / ACK sur un port TCP / IP, auquel cas vous devrez demander à votre hébergeur de changer la configuration du F5.
Christopher_G_Lewis
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.