Come posso sapere a quale server sono stato caricato il bilanciamento?


8

Voglio testare alcune modifiche alla configurazione della sincronizzazione unidirezionale tra due server che si trovano dietro un bilanciamento del carico (questo è tutto FYI dell'infrastruttura di Rackspace Cloud). Il problema che ho è che non riesco a dire a quale server sono stato bilanciato il carico perché l'IP che mi viene dato è sempre l'IP del bilanciamento del carico.

C'è un modo semplice (o anche non molto semplice) per dire a quale server sono stato effettivamente indirizzato. Idealmente mi piacerebbe qualcosa nel browser perché significa che i membri del team non tecnici possono anche segnalare problemi in modo relativamente semplice, ma qualsiasi idea sui migliori approcci a questo sarebbe apprezzata.

Informazioni aggiuntive: entrambi i server eseguono Apache e il bilanciamento del carico ha la persistenza della sessione configurata.

Risposte:


8

Se vuoi essere discreto, fai semplicemente in modo che il server web si identifichi in Server:un'intestazione di risposta ( RFC 2616 Sec 14.38 ). Ad esempio, in Apache, le informazioni restituite in quell'intestazione sono controllate dalla ServerTokensdirettiva. Quindi, si tratta solo di ispezionare le intestazioni di risposta nella sequenza temporale di Firebug , Chrome DevTools o Safari Web Inspector .

Se vuoi essere palesemente ovvio, puoi fare in modo che la tua applicazione web incorpori il nome del server nelle pagine che genera come testo visibile. Puoi anche riportare il nome del server in un commento HTML, che richiederebbe Visualizza sorgente per vedere.


Grazie @ 200_success. Sembra tutto abbastanza semplice. Ho aggiornato la mia domanda per dire che i server eseguono Apache, quindi anche il tuo link è utile e pertinente.
Willl,

2

Non stai affermando quale protocollo stai usando, quindi presumo che stiamo parlando https.

Ogni backend probabilmente conosce alcune informazioni su se stesso, che identificano in modo univoco quel backend. Potrebbe essere un nome host o un indirizzo IP unicast. Il back-end può includere tali informazioni in posizioni appropriate. Potresti includerlo in un piè di pagina su ogni pagina. O se ritieni che sia troppo visibile, includilo solo nelle pagine che gli utenti non visiterebbero in circostanze normali. Qualsiasi pagina di errore (404, 500, ecc.) Deve sempre includere l'identificazione del back-end.

Se il bilanciamento del carico è solo il bilanciamento del carico e non fa altro, allora si terminerebbe https sul back-end e ogni volta che una connessione TCP viene chiusa e il client si riconnette, è possibile che il client venga indirizzato a un back-end diverso.

Il bilanciamento del carico potrebbe ricordare il backend utilizzato più di recente per tutti gli indirizzi IP client visti nell'ultima ora per riutilizzare lo stesso backend per la maggior parte del tempo. Qualsiasi informazione più dettagliata come i cookie e l'id utente sarebbe fuori portata per il bilanciamento del carico, quindi non potrebbe usarlo per mantenere un utente sullo stesso back-end.

Ciò significa che qualsiasi identificazione del back-end utilizzato da un utente dovrebbe essere presa con un pizzico di sale, in quanto l'utente avrebbe potuto spostarsi tra i back-end tra il momento in cui hanno riscontrato un problema e il momento in cui hanno scoperto quale back-end stavano utilizzando. Tuttavia, sono ancora informazioni preziose, poiché nella maggior parte dei casi aiuteranno a individuare i registri pertinenti più rapidamente.


Grazie Kasperd, è utile. Ho aggiornato la domanda per notare che la persistenza della sessione è configurata sul bilanciamento del carico.
Willl,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.