Wie kann ich feststellen, auf welchen Server ich einen Lastenausgleich durchgeführt habe?

8

Ich möchte einige Konfigurationsänderungen an der Einweg-Synchronisation zwischen zwei Servern testen, die sich hinter einem Load Balancer befinden (dies ist alles zu Ihrer Information: Rackspace Cloud-Infrastruktur). Das Problem, das ich habe, ist, dass ich nicht sagen kann, auf welchen Server ich einen Lastenausgleich erhalten habe, da die IP, die mir gegeben wird, immer die IP des Lastenausgleichs ist.

Gibt es eine einfache (oder gar nicht sehr einfache) Möglichkeit, festzustellen, auf welchen Server ich tatsächlich verwiesen wurde? Ich würde im Idealfall etwas im Browser mögen, da dies bedeutet, dass nicht-technische Teammitglieder Probleme auch relativ einfach melden können, aber alle Ideen zu den besten Ansätzen hierfür wären willkommen.

Zusätzliche Informationen: Auf beiden Servern wird Apache ausgeführt und für den Load Balancer ist die Sitzungspersistenz konfiguriert.

Willl
quelle

Antworten:

8

Wenn Sie diskret sein möchten, lassen Sie den Webserver sich einfach in einem Antwortheader identifizieren Server:( RFC 2616 Sec 14.38 ). In Apache werden beispielsweise die in diesem Header zurückgegebenen Informationen von der ServerTokensDirektive gesteuert . Dann müssen Sie nur noch die Antwortheader in der Zeitleiste von Firebug , Chrome DevTools oder Safari Web Inspector überprüfen .

Wenn Sie offensichtlich sein möchten, können Sie Ihre Webanwendung den Servernamen in die Seiten einbetten lassen, die sie als sichtbaren Text generiert. Sie können den Servernamen auch in einem HTML-Kommentar angeben, für dessen Anzeige View Source erforderlich ist.

200_Erfolg
quelle
Danke @ 200_success. Das klingt alles ziemlich einfach. Meine Frage wurde aktualisiert, um zu sagen, dass auf den Servern Apache ausgeführt wird, sodass Ihr Link auch nützlich und relevant ist.
Willl
2

Sie geben nicht an, welches Protokoll Sie verwenden, daher gehe ich davon aus, dass es sich um https handelt.

Jedes Backend kennt wahrscheinlich einige Informationen über sich selbst, die dieses Backend eindeutig identifizieren würden. Dies kann ein Hostname oder eine Unicast-IP-Adresse sein. Das Backend kann diese Informationen an geeigneten Stellen enthalten. Sie können es in eine Fußzeile auf jeder Seite einfügen. Wenn Sie der Meinung sind, dass dies zu sichtbar ist, fügen Sie es nur auf Seiten ein, die Benutzer unter normalen Umständen nicht besuchen würden. Jede Fehlerseite (404, 500 usw.) sollte immer eine Backend-Identifikation enthalten.

Wenn Ihr Load Balancer nur Load Balancing ist und nichts anderes tut, beenden Sie https im Backend. Wenn eine TCP-Verbindung geschlossen wird und der Client erneut eine Verbindung herstellt, besteht die Möglichkeit, dass der Client zu einem anderen Backend geleitet wird.

Der Load Balancer konnte sich das zuletzt verwendete Backend für alle Client-IP-Adressen merken, die innerhalb der letzten Stunde angezeigt wurden, um das gleiche Backend die meiste Zeit wiederzuverwenden. Detailliertere Informationen wie Cookies und Benutzer-ID sind für den Load Balancer nicht erreichbar, sodass er einen Benutzer nicht im selben Backend halten kann.

Dies bedeutet, dass jede Identifizierung, welches Backend ein Benutzer verwendet, mit einem Körnchen Salz erfolgen sollte, da der Benutzer zwischen dem Zeitpunkt, an dem ein Problem aufgetreten ist, und dem Zeitpunkt, an dem er herausgefunden hat, welches Backend er verwendet hat, zwischen den Backends wechseln konnte. Es handelt sich jedoch immer noch um wertvolle Informationen, da in den meisten Fällen relevante Protokolle schneller gefunden werden können.

Kasperd
quelle
Danke Kasperd, das ist hilfreich. Ich habe die Frage aktualisiert, um festzustellen, dass die Sitzungspersistenz auf dem Load Balancer konfiguriert ist.
Willl