Question

À l'heure actuelle, mon site est desservi par un seul serveur, mais je prévois qu'il faudra bientôt augmenter la capacité de mon serveur. Plutôt que de diviser mes sites Web entre plusieurs serveurs et de gérer des sessions sur plusieurs serveurs, je souhaite créer plusieurs serveurs Web avec la même base de code et utiliser le partage de charge alternatif basé sur un routeur pour répartir les utilisateurs sur chaque serveur. Et une fois qu'un utilisateur a accédé à un serveur Web, demandez-lui de rester avec ce serveur Web pendant toute sa session. À ma connaissance, je n'ai pas besoin de code asp.net spécial pour faciliter cela.

Quelqu'un at-il des mises en garde ou des commentaires pour cette approche?

Était-ce utile?

La solution

Ce dont vous parlez est appelé sessions collantes ou affinité de session. Si votre routeur prend en charge cela, alors vous êtes en or.

Le seul inconvénient est que l’équilibrage de la charge ne sera pas parfait. Si vous avez quelques utilisateurs très chargés qui se retrouvent tous au hasard sur le même serveur, ils y resteront jusqu'à la fin des sessions.

J'ai mis en œuvre ce type d'équilibrage de charge là où je travaille et ne nécessite aucun code asp.net spécial.

Autres conseils

La plupart des équilibreurs de charge (peut-être tous) ont la possibilité d'appliquer "& coll ;, collant "" sessions où les utilisateurs sur la même IP sont dirigés vers le même serveur Web à chaque demande. Il n'y a pas de changement de code requis pour accomplir cela. Deux mises en garde nous viennent à l’esprit:

  1. L'utilisation de sessions collantes signifie que la charge de trafic ne sera pas distribuée aussi uniformément que si vous n'utilisiez pas de sessions collantes. Cependant, la distribution devrait être "même suffisante" OMI.
  2. Un très petit pourcentage d’utilisateurs utilisant des serveurs proxy peut entrer sur différentes adresses IP pour différentes requêtes. Ces utilisateurs peuvent rencontrer " impair " comportement lorsqu’ils sont transmis à différents serveurs.

Une autre caractéristique de cette configuration est que, si l'un de vos serveurs tombe en panne, les sessions des utilisateurs de ce serveur perdront également leur session. Je pense que c’est l’une des configurations les plus utilisées car elle ne nécessite aucun effort de développement si le routeur prend en charge une session persistante ou une affinité de session.

Comme d'autres l'ont déjà mentionné, vous devriez pouvoir activer les sessions persistantes sur votre équilibreur de charge, ce qui devrait prendre en charge la plupart des tâches "rester sur un serveur". questions pour vous.

Cependant, vous voudrez vous assurer que vous avez défini les paramètres permettant à un utilisateur d'arriver sur la mauvaise session du serveur en milieu de session. Les sessions collantes sont généralement basées sur l'adresse IP et les adresses IP des utilisateurs peuvent changer en cours de session si vous êtes malchanceux. ou un serveur peut être déconnecté et l'utilisateur sera redirigé vers l'autre serveur.

Assurez-vous que vos MachinesKeys sont identiques. tous les serveurs - cela vous permettra de déchiffrer l'état de visualisation correctement sur tous les serveurs.

Si vous possédez les serveurs, vous pouvez le faire dans le fichier machine.config. Sinon, vous pouvez le définir au niveau de l'application dans le fichier web.config. Pour plus de détails, reportez-vous à cette procédure:

  

Configurer MachineKey dans ASP.NET 2.0

Il existe de légères différences si vous utilisez IIS 7.5 - Tess Ferrandez a ajouté plus de détails dans un message récent & a; L'authentification par formulaire échoue après l'installation d'IIS 7.5 .".

Vous voudrez probablement aussi déplacer votre sessionState d'InProc vers Sql ou StateServer.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top