Was ist der Unterschied zwischen Load Balancer und Reverse Proxy?

Antworten:

114

Ihre Verwirrung ist vernünftig - sie sind oft dasselbe. Aber nicht immer. Wenn Sie sich auf einen Lastenausgleich beziehen, beziehen Sie sich auf eine ganz bestimmte Sache - einen Server oder ein Gerät, das eingehende Anforderungen auf zwei oder mehr Webserver verteilt, um die Last zu verteilen. Ein Reverse-Proxy verfügt jedoch normalerweise über eine beliebige Anzahl von Funktionen:

  1. Lastausgleich: wie oben beschrieben

  2. Zwischenspeichern: Es kann Inhalte von den dahinter liegenden Webservern zwischenspeichern und dadurch die Belastung der Webserver verringern und statische Inhalte an den Anforderer zurückgeben, ohne dass die Daten von den Webservern abgerufen werden müssen.

  3. Sicherheit: Es kann den oder die Webserver schützen, indem es den direkten Zugriff aus dem Internet verhindert. Dies kann auf einfache Weise geschehen, indem nur die Webserver verschleiert werden, oder es können einige aktivere Komponenten vorhanden sein, die eingehende Anforderungen auf schädlichen Code überprüfen

  4. SSL-Beschleunigung: wenn SSL verwendet wird; Es kann als Endpunkt für diese SSL-Sitzungen dienen, sodass der Arbeitsaufwand für die Verschlüsselung von den Webservern entlastet wird.

Ich denke, dies deckt das meiste davon ab, aber es gibt wahrscheinlich ein paar andere Funktionen, die ich vermisst habe. Sicherlich ist es nicht ungewöhnlich, dass ein Gerät oder eine Software als Load-Balancer / Reverse-Proxy vermarktet wird, da die Funktionen so häufig gebündelt sind.

icky3000
quelle
2
+ Verbindungspooling (mehrere Anfragen auf einer Frontend-Verbindung zulassen, wenn das Backend nicht gut funktioniert; oder Backend-Verbindung für mehrere Frontend-Verbindungen
wiederverwenden
+ Komprimierung Durch das Komprimieren von Serverantworten, bevor sie an den Client zurückgegeben werden (z. B. mit gzip), wird die erforderliche Bandbreite reduziert, wodurch die Übertragung über das Netzwerk
beschleunigt
25

Ein Reverse-Proxy ist auch für Webserver spezifisch.

Load Balancer können jedoch mit vielen anderen Protokollen umgehen. Während das Internet (HTTP) heutzutage die große Idee ist, können Dinge wie DNS, E-Mail (SMTP, IMAP) usw. ebenfalls mit Lastenausgleich versehen werden. Heutzutage denken die meisten Leute an "Internet" oder "IP-Netzwerk", sie denken an das Web. Es gibt eine Menge mehr Sachen da draußen, die vielleicht dunkler sind oder eher eine Nische darstellen.


quelle
12

Während das Nettoergebnis (Verteilen von Anforderungen zwischen Servern) zwischen verschiedenen Load-Balancern und Reverse-Proxys gleich ist, besteht der Unterschied in der Methode, die zum Verteilen der Anforderungen verwendet wird.

Einige Load Balancer gleichen den Datenverkehr über DNS aus und lösen denselben Namen in einem Round-Robin-Verfahren in verschiedene IP-Adressen auf, um Anforderungen effektiv umzuleiten. Dies kann häufig nützlich sein, wenn Lastenausgleichsanforderungen zwischen Rechenzentren oder anderen physischen Standorten erfolgen. Dies ist eine schlechte Wahl, wenn Sie ein "sofortiges" Failover benötigen, da Sie dem DNS-Server Ihres Clients zur Einhaltung der von Ihnen angegebenen TTL ausgeliefert sind. Ciscos GSS (Global Site Selector) ist ein gutes Beispiel für einen DNS-basierten Lastenausgleich.

Andere Load Balancer schreiben Paket-Header, die für eine virtuelle IP bestimmt sind, in die reale IP eines Servers in einer Farm um. Dies ermöglicht einen Lastausgleich in Echtzeit und ein nahezu sofortiges Failover. Ein Beispiel hierfür wäre das CSM (Content Switching Module) von Cisco.

Beachten Sie, dass in beiden obigen Beispielen eine TCP-Konversation zwischen dem Client und dem Server besteht.

Ein Reverse-Proxy akzeptiert die Anforderung im Namen des Webservers, gibt sie an den Webserver weiter und sendet sie an den Client zurück. Optional können die Ergebnisse zwischengespeichert werden, falls eine ähnliche Anforderung folgt.

Beachten Sie, dass der Client niemals tatsächlich eine Verbindung zum Webserver herstellt. Vielmehr findet das Gespräch ausschließlich zwischen dem Proxy und dem Kunden statt.

Brian Tillman
quelle
4

Ein Load Balancer kann den Datenverkehr von Schicht 3 nach oben auf Schicht 7 verteilen, ein Reverse Proxy ist jedoch HTTP-spezifisch.

Kris Roofe
quelle
3

Ein Reverse-Proxy akzeptiert eine Anforderung von einem Client, leitet sie an einen Server weiter, der sie erfüllen kann , und gibt die Antwort des Servers an den Client zurück (was bedeutet, dass ein Server hinter dem Reverse-Proxy mit etwas anderen Funktionen eines Protokolls oder eines anderen Protokolls kommunizieren kann ).

Ein Load Balancer verteilt eingehende Client-Anfragen auf eine Gruppe von Servern und sendet jeweils die Antwort vom ausgewählten Server an den entsprechenden Client.

Manu Prasadh
quelle
1
Sie meinen also, ein Load Balancer ist ein unverzichtbarer "Reverse Proxy" bei der Verteilung?
Anthony Kong
4
Dies ist eine direkte Vervielfältigung von nginx.com/resources/glossary/reverse-proxy-vs-load-balancer. Entweder sie haben Ihre Antwort gestohlen oder Sie sollten auf Ihre Quellen
verweisen