Comment garder les requêtes des utilisateurs sur le même serveur IIS lorsque vous utilisez NLB?

StackOverflow https://stackoverflow.com/questions/866108

  •  21-08-2019
  •  | 
  •  

Question

J'ai deux serveurs IIS en cours d'exécution en utilisant NLB. Unfortunatelly Je ne peux pas utiliser le serveur de session partagée, de sorte que chaque serveur utilise sa propre session. Comment puis-je assurer que toutes les demandes du même utilisateur sont envoyées au même serveur IIS?

Était-ce utile?

La solution

Je pense que ce que vous cherchez est Sessions Post-it. sessions collantes sont mises en œuvre par votre équilibreur de charge bien. Vous avez probablement besoin de configurer un équilibreur de charge à l'extérieur (BIG-IP, HAProxy, etc.) qui peuvent faire des séances collantes.

Autres conseils

Nous avons trouvé ce et a décidé de partager avec d'autres:

Utilisez la fonction d'affinité client. Lorsque l'affinité client est activée, l'équilibrage de la charge réseau dirige toutes les connexions TCP vers le même hôte de cluster. Cela permet à l'état de session à maintenir dans la mémoire hôte. Vous pouvez activer l'affinité du client dans la Ajouter / Modifier boîte de dialogue Règles du port en charge réseau Gestionnaire d'équilibrage. Choisissez soit unique ou d'affinité de classe C pour assurer que seul un hôte de cluster gère toutes les connexions qui font partie de la même session client. Ceci est important si l'application serveur en cours d'exécution sur l'hôte de cluster maintient l'état de session (comme les cookies du serveur) entre les connexions. Pour plus d'informations sur la charge réseau d'affinité d'équilibrage, voir Aide dans le composant logiciel enfichable d'équilibrage de la charge réseau.

Vous pouvez le faire facilement aussi longtemps que aucun de vos clients utilisent un système de proxy distribué:

Dans les protieries du cluster NLB, onglet « règles du port », vous pouvez choisir le « mode de filtrage » et l'affinité: Vous ne pouvez pas choisir « none » parce que vous n'avez pas des sessions centrales. Mais « simple » redirigerez chaque utilisateur sur le même serveur tant que l'IP reste le même. Si vous par exemple anticiapte serveurs proxy AOL alors « classe C » peut être un choix sûr (mais peut-être réduire la charge d'équilibrage un peu), parce que le même réseau de classe C va au même serveur.

Je suppose que c'est facilement mis en œuvre par les États membres d'une manière que les deux hôtes savent que ip est pair ou impair ou qui triplet du filet de classe C est pair ou impair et répartir la charge toujours de la même manière selon les IP- adresse

Pourquoi voudriez-vous faire cela? Si c'est à cause de l'état de session, alors vous devriez avoir une base de données ou hors processus serveur mis en place dans un lieu commun et ont tous les nœuds de référence que.

Je considérerais un proxy inverse qui se trouve en face de l'un serveur et se souvient que les utilisateurs externes utilisent quels serveurs.

Je sais (de l'utiliser de cette façon) Cherokee soutient IPHash mandatement mais je suis sûr il y a beaucoup plus.

Il suffit d'ajouter à la réponse de Lloyd, vous devriez éviter d'utiliser session dans un environnement équilibré charge de toute façon. L'objectif derrière l'utilisation de toute session est d'éviter les appels de base de données; si vous finissez par stocker les données de session de nouveau dans la base de données que vous gagnez généralement rien.

La raison étant que 1. vous devez maintenant faire 2 base de données appelle à chaque chargement de page (récupérer et stocker) et 2. que les données ont maintenant passer par les frontières sérialisation / désérialisation de. La plupart du temps, cela finit par être une opération plus coûteuse que juste récupérer les données que vous vouliez commencer.

Maintenant, à votre question réelle. Vous avez la possibilité de stocker les données de session dans l'état d'affichage. En option, vous pouvez renoncer à la session et d'utiliser plutôt les cookies. Si vous allez dans cette voie, assurez-vous de les chiffrer à la sortie et décrypter lors de leur réception.

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