Ho due server IIS in esecuzione utilizzando NLB. Purtroppo non posso usare il server di sessione condivisa, quindi ogni server utilizza la propria sessione. Come posso garantire che tutte le richieste provenienti dallo stesso utente vengano inoltrate allo stesso server IIS?Come mantenere le richieste utente sullo stesso server quando si utilizza IIS NLB?
risposta
Penso che quello che stai cercando sia Sticky Sessions. Tuttavia, le sessioni permanenti vengono implementate dal bilanciatore del carico. Probabilmente è necessario configurare un bilanciamento del carico esterno (BIG-IP, HAProxy, ecc.) Che possa fare sessioni appiccicose.
Perché vuoi farlo? Se è a causa dello stato della sessione, è necessario disporre di un database o di un server out-of-process impostato in un luogo comune e fare riferimento a tutti i nodi.
Per avere un server separato, come so, ho bisogno di contrassegnare gli oggetti, che sono archiviati in sessione, come serializzabili. Non posso farlo adesso, perché sto spostando il sistema legacy nell'architettura NLB. – Sergejus
Considererei un proxy inverso che si trova di fronte a ciascun server e ricorda quali utenti esterni stanno utilizzando quali server.
So (dal suo utilizzo in questo modo) Cherokee supporta il proxy IPHash ma sono sicuro che ce ne sono molti altri.
Giusto per aggiungere alla risposta di Lloyd, è necessario evitare comunque di utilizzare la sessione in un ambiente con bilanciamento del carico. L'intero scopo alla base dell'uso della sessione è di evitare le chiamate al database; se si finisce per memorizzare nuovamente i dati della sessione nel database, di solito non 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. La maggior parte delle volte si tratta di un'operazione più costosa del semplice recupero dei dati che si desidera iniziare.
Ora, per la tua domanda attuale. Hai la possibilità di memorizzare i dati della sessione nello stato di visualizzazione. Facoltativamente, puoi rinunciare alla sessione e utilizzare invece i cookie. Se segui questo percorso, assicurati di crittografarlo mentre esci e decrittalo quando lo ricevi.
Accetto il problema del database , infatti, utilizziamo MemCached per memorizzare le informazioni 'session' perché volevamo rimuovere l'interazione con il database e MemCached è molto più veloce nel fornire informazioni. – Lloyd
Vedo quello che stai dicendo, ma nel mio caso ho un sistema legacy che non posso toccare. Quindi ora ho bisogno di trovare il modo più appropriato per introdurre NLB. – Sergejus
L'ambiente con carico bilanciato deve adattarsi alla memoria di sessione, non viceversa. – Karlth
Potete farlo 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 puoi scegliere "nessuno" perché non hai sessioni centrali. Ma "semplice" reindirizza ogni utente allo stesso server finché l'indirizzo IP rimane lo stesso. Se ad es. i server proxy di AOL anticiapte quindi "classe C" potrebbero essere una scelta sicura (anche se forse riducendo il bilanciamento del carico un po '), perché la stessa rete di classe C va allo stesso server.
Immagino che sia facilmente implementato da MS in modo che entrambi gli host sappiano quale ip è pari o dispari o quale terzina della rete di classe C è pari o dispari e distribuire il carico sempre nello stesso modo a seconda dell'IP -Indirizzo
trovato questo e ha deciso di condividere con gli altri:
Utilizzare la funzionalità del client affinità. Quando l'affinità client è abilitata, Bilanciamento carico di rete indirizza tutte le connessioni TCP allo stesso host di cluster. Ciò consente di mantenere lo stato della sessione nella memoria dell'host. È possibile abilitare l'affinità del client nella finestra di dialogo Aggiungi/Modifica regole di porta in Gestione bilanciamento carico di rete. Scegliere l'affinità Single o Class C per garantire che solo un host del cluster gestisca tutte le connessioni che fanno parte della stessa sessione client. Questo è importante se l'applicazione server in esecuzione sull'host del cluster mantiene lo stato della sessione (come i cookie del server) tra le connessioni. Per ulteriori informazioni sull'affinità di Bilanciamento carico di rete, vedere la Guida nello snap-in Bilanciamento carico di rete.
- 1. ASP.NET IIS: quando vengono accodate le richieste?
- 2. Come mantenere le variabili d'ambiente quando si utilizza SUDO
- 3. Servire le immagini quando si utilizza Couchbase come app server?
- 4. Esegui MySQL e PostgreSQL sullo stesso server
- 5. Passport.js: accesso utente quando si utilizza backbone
- 6. Come mantenere segrete le chiavi API quando si utilizza il lato client Javascript?
- 7. query su più database sullo stesso server
- 8. Come dovrei organizzare più server Express sullo stesso sistema?
- 9. DirectoryServicesCOMException quando si utilizza System.DirectoryServices.AccountManagement
- 10. HTTPClient invia due richieste quando si utilizza l'autenticazione di base?
- 11. Come mantenere le impostazioni utente sulla disinstallazione
- 12. WCF Richieste simultanee di accumulo sul server quando si utilizza WSHttpBinding
- 13. Si verifica un errore strano quando si utilizza wcf per eseguire query su server sql
- 14. SLF4J - Le associazioni vengono sovrascritte da altre applicazioni sullo stesso server applicazioni
- 15. come mantenere le schede quando si incolla in Vim
- 16. Come si esegue il backup e il ripristino di un database come copia sullo stesso server?
- 17. Come evitare le funzioni annidate quando si utilizza AJAX?
- 18. Condividi sessione su più domini sullo stesso server
- 19. Come configurare IIS per accettare le richieste POST?
- 20. Come disattivare l'autenticazione NTLM per le richieste OPTIONS in IIS
- 21. Cosa sono le "richieste HTTP simulate da IIS"?
- 22. SQL Server Ripristina la transazione quando si utilizza THROW
- 23. Istruzione preparata in ASP.Net C# quando si utilizza SQL Server
- 24. Posso usare APC E memcached sullo stesso server?
- 25. Più siti in più progetti sullo stesso server di rotaie
- 26. Come gestire savedInstanceState quando si utilizza ViewPager?
- 27. Connessione al server stesso con diversi nomi utente
- 28. Come ottenere refreshToken quando si utilizza GoogleAuthUtil
- 29. Prestazioni di query su due database mysql sullo stesso server?
- 30. Come mantenere i valori NULL quando si utilizza SSIS per importare da file flat in SQL Server 2005
Penso che sia possibile senza un bilanciatore del carico esterno semplicemente riconfigurando il cluster NLB. Dovrebbe funzionare anche per gli utenti AOL con proxy (se questi esistono ancora ;-)) – Christian
Ultimamente non ho ricevuto alcun messaggio AOL, vero? – Min
Considerati gli altri commenti di Sergejus, penso che questo sia l'unico modo per andare. – NotMe