Come mantenere le richieste degli utenti sullo stesso server quando si utilizza IIS NLB?

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

  •  21-08-2019
  •  | 
  •  

Domanda

Ho due server IIS in esecuzione utilizzando NLB. Purtroppo non riesco a utilizzare il server sessione condivisa, in modo che ogni server utilizza una propria sessione. Come posso assicurare, che tutte le richieste dello stesso utente vengono inoltrate allo stesso server IIS?

È stato utile?

Soluzione

Credo che quello che stai cercando è sessioni appiccicoso. sessioni Sticky sono implementati dal bilanciamento del carico però. È probabile che sia necessario impostare un sistema di bilanciamento del carico esterno (BIG-IP, HAProxy, etc.) che può fare sessioni di appiccicoso.

Altri suggerimenti

Ho trovato questo e ha deciso di condividere con gli altri:

Utilizzare la funzione di client di affinità. Quando l'affinità client è attivata, il bilanciamento del carico di rete dirige tutte le connessioni TCP alla stesso cluster host. In questo modo lo stato della sessione di mantenere in memoria host. È possibile attivare l'affinità client nella finestra di dialogo Add / Edit Regole porta in rete Gestione bilanciamento carico. Scegli Singola o Classe C affinità per garantire che solo un host di cluster consente di gestire tutte le connessioni che fanno parte della stessa sessione client. Questo è importante se l'applicazione server in esecuzione sul host di cluster mantiene lo stato della sessione (come ad esempio i cookie del server) tra le connessioni. Per ulteriori informazioni su Network Load Balancing affinità, vedere la Guida in Bilanciamento carico di rete snap-in.

Si può fare facilmente fintanto che nessuno dei vostri clienti utilizzare un sistema proxy distribuito:

Nei protieries del cluster NLB, scheda "regole di porta" è possibile scegliere la modalità "filtro" e l'affinità: Non è possibile scegliere "none", perché non si dispone di sessioni centrali. Ma "semplici" sarebbe reindirizzare ogni utente allo stesso server fino a quando il ip rimane lo stesso. Se per esempio server proxy anticiapte AOL poi "classe C" potrebbe essere una scelta sicura (anche se forse ridurre il bilanciamento del carico un po '), in quanto la stessa rete di classe C va allo stesso server.

Credo che è facilmente implementata da MS in un modo che entrambi gli host sapere quale ip è pari o dispari, o che tripletta della rete di classe C è pari o dispari e distribuire il carico sempre allo stesso modo a seconda del IP indirizzo

Perché si vuole fare questo? Se è a causa della stato della sessione allora si dovrebbe avere un database o out-of-process del server allestito in un luogo comune e hanno tutti i nodi di riferimento.

Vorrei prendere in considerazione un reverse proxy che si trova di fronte a entrambi i server e ricorda che gli utenti esterni che utilizzano i server.

Lo so (da utilizzare in questo modo) Cherokee supporta IPHash proxy ma sono sicuro ci sono molti altri.

Giusto per aggiungere alla risposta di Lloyd, si dovrebbe evitare l'uso di sessione in un ambiente equilibrato carico in ogni caso. Lo scopo che sta dietro all'uso sessione è quello di evitare le chiamate di database; se si finisce per memorizzare i dati della sessione nel database di solito si guadagna nulla.

Il motivo è che 1. è ora di fare 2 database di chiamate per ogni caricamento della pagina (recuperare e negozio) e 2. che i dati ora deve passare attraverso i confini di serializzazione / deserializzazione. Il più delle volte questo finisce per essere un funzionamento più costoso di una semplice recuperare i dati che si voleva cominciare.

Ora, alla tua domanda effettiva. Si ha la possibilità di memorizzare i dati di sessione nello stato di visualizzazione. Opzionalmente, è possibile rinunciare sessione e invece utilizzare i cookie. Se seguire questa strada, assicuratevi di crittografare loro la via d'uscita e decifrare quando la loro ricezione.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top