2009-05-20 7 views
4

Nous avons actuellement une application Web ASP.NET s'exécutant sur un serveur unique. Ce serveur est sur le point d'atteindre la zone dangereuse concernant l'utilisation du processeur, et nous voulons déployer un second serveur.Redondance de serveur d'état de session

Quelle serait la meilleure façon de gérer l'état de session?

Actuellement nous tournons InProc. Mais ce n'est pas une option avec 2 + serveurs, car nous voulons exclure un seul serveur de la rotation WLB parfois pour faire du travail de maintenance. Même si nous utilisons un équilibrage de la charge, nous devrions attendre que tous les utilisateurs soient sortis avant de pouvoir exclure le serveur de la rotation WLB.

Je regardais cette page MSDN: http://msdn.microsoft.com/en-us/library/ms178586(VS.80).aspx

Je suppose que ma question principale est: Si nous utilisons le mode serveur d'état. Pouvons-nous assurer la rendudancy en déployant le serveur d'état sur deux serveurs? Pour éviter d'avoir un seul point de défaillance.

Répondre

1

Si vous souhaitez utiliser l'une des options standard, j'utiliserais SQL Server dans un cluster de basculement. BTW avez-vous considéré memcacheddb?

+0

S'il vous plaît m'en dire plus sur memcached? – MartinHN

+0

Martin désolé, je voulais dire memcachedDB, bien que vous pouvez obtenir memcached pour répliquer ce n'est pas facile - lire à ce sujet ici: http://memcachedb.org. Vous devriez vérifier si le fournisseur memcached travaille avec (il devrait) - http://www.codeplex.com/memcachedproviders. – RichardOD

+0

Oh. Cela semble "utiliser sous votre propre responsabilité - nous ne fournissons aucun support ou garantie". – MartinHN

0

Utilisez soit le serveur Scale Out State (plus rapide) ou l'état SQL (plus simple). Mais méfiez-vous si vous stockez des objets non sérialisables dans l'état Session, car vous obtiendrez des exceptions après la migration.

+2

Sachez également que Session_End dans Global.asax ne se déclenche pas dans le serveur d'état, ce qui casse la fonctionnalité si vous avez accroché à cet événement lors de l'utilisation de inProc. – RichardOD

0

Sql serveur d'état serait une meilleure option: Ce lien pourrait aider Sql State Server . Je ne crois pas que vous pouvez exécuter le serveur d'état sur plusieurs machines.

0

Vous pouvez vous intéresser à la vitesse du projet (http://msdn.microsoft.com/en-us/data/cc655792.aspx). Il a un support limité maintenant parce qu'il est sur CTP3 mais plus tard cette année ce serait RTM. Je vous suggère fortement que vous regardez la session MIX09 à ce sujet here