2012-12-05 19 views
5

Il nostro operatore ha implementato un bilanciamento del carico Round Robin sul nostro portale Web e sembra che stia causando alcuni problemi che non riesco a raggiungere.Gli utenti vengono disconnessi dal sito Web a causa del bilanciamento del carico round robin

Sono in grado di identificare il server su cui ci troviamo e mentre navighiamo nel sito rimaniamo sul server A. Se lo lascio per 5 minuti e provo un'altra pagina, verrò inviato al server B, registrato fuori e mostrato la pagina di accesso.

Ho verificato che MachineKey in machine.config sia lo stesso su entrambi i server e ho verificato localmente che la sessione non è in uso - Posso disattivare completamente la sessione in locale funziona ancora. Ho verificato su entrambi i server che sta creando un cookie ASPXAUTH sul dominio, quindi dovremmo essere classificati come autenticati su entrambi i server, ma continuare a perdere la mia autenticazione ogni volta che cambio server.

Qualche idea su cosa potrebbe causare la disconnessione? Immagino che sia il mio malinteso su come funziona ASPXAUTH.

risposta

2

Le sessioni vengono gestite separatamente dall'Autenticazione moduli. C'è una buona spiegazione di questo here.

Il motivo più comune per l'errore di autenticazione moduli in ambienti con carico bilanciato è la mancanza di sincronizzazione dell'elemento MachineKey. Hai affermato di avere gli operatori del server per garantire che MachineKey sia sincronizzato, ma hai verificato tu stesso in qualche modo? È questo il caso di TUTTI i server web? Dai rapporti precedenti con un paio di host web commerciali, ho trovato che è (sfortunatamente) difficile prendere le loro assicurazioni al valore nominale.

Un'altra cosa da controllare è se la configurazione di FormsAuthentication (timeout, percorso, nome, ecc.) È la stessa su tutti gli host.

I livelli di patch sono gli stessi su tutti gli host? Potresti voler vedere se l'interruttore di compatibilità menzionato here è applicabile alla tua situazione.

Supponendo che l'impostazione di hosting sia corretta, è possibile che nella pagina sia presente un codice di inizializzazione che disconnette se alcune condizioni non sono soddisfatte?

Provare a dare un'occhiata ai log del server e tracciare la sequenza di richieste HTTP coinvolte durante una richiesta di pagina fallita. Questo potrebbe produrre un indizio.

Edit: Questa guida per la risoluzione dei problemi di autenticazione Forms è dettagliato, e molto utile: Troubleshooting Forms Authentication

+0

Grazie, la guida alla risoluzione dei problemi mi ha aiutato a stabilire che il client non sta effettivamente inviando il cookie ASPXAUTH quando sta richiedendo la pagina dopo il breve ritardo che ha portato il server a pensare di non essere autenticato. Comunque sto ancora cercando di capire quale sarà il prossimo passo. Il registro del violinista mostra "Tunnel to" "www.mydomain.co.uk:443" entrambe le volte, quindi perché non dovrebbe vederlo come lo stesso URL e passare il cookie? Su entrambi i server il cookie mostra la scadenza come "Alla fine della sessione" ed è associato al dominio "https://www.mydomain.co.uk" ...che nella mia comprensione dovrebbe funzionare. – ColinRobertson

+0

Ho contrassegnato la risposta come accettata perché, come previsto, l'host Web non ha distribuito completamente le modifiche di MachineKey. Lo avevano modificato nella cartella Framework, ma non erano stati modificati nella cartella Framework64. Grazie per l'aiuto. – ColinRobertson

+0

Felice che funzioni per te ora! – Maxam

0

Verificare la presenza di qualsiasi altra funzionalità applicazione che dipende cookie. Il server Web sul Server B non riconoscerà i cookie provenienti dal Server A. Se qualsiasi parte della tua autenticazione dipende dal fatto che i cookie vengano popolati, ciò potrebbe causare il tuo problema.

Probabilmente avete già assicurato che il dominio utilizzato per i cookie è lo stesso su tutti i server con bilanciamento del carico, ma ho pensato di parlarne. Se i domini non sono compatibili, il browser semplicemente non invierà cookie al server.

+0

La mia comprensione era che se il Server A e il Server B avessero la stessa chiave macchina e lo stesso URL, allora il cookie sarebbe passato tra i due. Ho appena scoperto che il cookie non viene passato quando passo da un server all'altro, quindi sembra che per qualche motivo il mio browser stia decidendo che non sono lo stesso URL. – ColinRobertson

+0

Controlla due cose: con Fiddler o qualcosa vedi se il cookie viene passato affatto. Se viene passato _is_, confrontare i due file machine.config. –

+0

Sì, erano i machine.configs non erano gli stessi. L'host aveva modificato machine.config nella cartella framework ma non nella cartella framework64. Grazie per l'aiuto – ColinRobertson

Problemi correlati