2 Stimmen

Website-Partitionierung und URL-Raum

Meine Website wächst. Ich muss die Funktionen auf verschiedene Gruppen von Servern aufteilen, anstatt alle Funktionen auf einer einzigen Serverkopie laufen zu lassen. Ich habe 8 identische Server in einem Windows Network Load Balancing Setup.

Das Problem ist, dass ich den URL-Speicherplatz beibehalten muss. Was wäre eine praktikable Lösung? Ich möchte keine neuen Domänen für die Funktionssätze einrichten. Ich denke an eine Art Reverse-Proxy mit einigen URL-basierten Umschreibe-/Routing-Funktionen(?!?). Gibt es Empfehlungen für Software oder Hardware? Dies wird die WNLB-Einrichtung ersetzen, da sie nicht über die von mir benötigten Funktionen verfügt.

1voto

Pascal Thivent Punkte 548176

Es gibt in der Tat mehrere Lösungen für den Lastausgleich:

  1. DNS-Rundlauf
  2. DNS-Lastausgleich (mit lbnamed)
  3. Proxy Round-Robin
  4. Hardware/TCP-Round-Robin

Ich habe verstanden, dass 1) und 2) hier keine Option sind, also... wenn Sie Geld haben und wirklich hohe Leistungsanforderungen , für 4). Andernfalls wählen Sie 3).

Für Proxy Round-Robin sind wiederum mehrere Lösungen möglich: Apache mod_rewrite , Apache mod_proxy , Tintenfisch (und sicherlich viele andere, die ich nicht kenne).

  • Für "dummes" Load Balacing gibt es ein Beispiel im Apache mod_rewrite's Anleitung zur URL-Umschreibung (siehe Proxy-Durchsatz Round-Robin Abschnitt).

  • Apache mod_proxy kann als Proxy fungieren, um Clients mit dem Internet zu verbinden, aber wird normalerweise als Reverse Proxy verwendet, um eine URL an einen anderen Server weiterzuleiten . Es hat keine Cache-Funktionalität (kann aber mit mod_cache und mod_rewrite verwendet werden...).

  • Squid ist ein Proxy-Cache und wird normalerweise verwendet, um Clients mit dem Internet zu verbinden. Er kann aber auch als Reverse-Proxy verwendet werden und so konfiguriert werden, dass er die Anfragen zwischenspeichert und die Bereitstellung von Inhalten beschleunigt.

Wie Sie sehen können, hängt die Entscheidung für eine dieser Optionen davon ab, was und wie Sie den Proxy nutzen wollen. In Ihrem Fall würde ich Apache mod_proxy oder Squid in Betracht ziehen, wenn Sie Caching unter Linux wünschen (falls dies eine Option ist).

Was die Hardware angeht, bin ich kein Spezialist, aber ich denke, ein "kleiner" bis "mittlerer" dedizierter Server sollte ausreichen. Vergessen Sie nur nicht, dass alle Anfragen über diese Maschine laufen werden, so dass die Größe stark von Ihrem Datenverkehr abhängt, der annehmbar erscheint. Dies könnte einige Nachforschungen mit realen Daten erfordern.

0voto

Steve Claridge Punkte 9852

Wenn Sie 8 Server haben, würde ich vorschlagen, 7 davon zu verwenden, um die Arbeitslast zu teilen und einen Front-End-Server als Proxy zu verwenden.

Ihr Front-End-Server könnte Apache ausführen und mod_proxy verwenden, um jede HTTP-Anfrage an einen der 7 Back-End-Server zu delegieren. Bei Bedarf können Sie mod_proxy so einstellen, dass die Arbeit auf der Grundlage der eingehenden URL delegiert wird, so dass Sie beispielsweise einen Server für Videos, zwei für Blogeinträge und den Rest für alle anderen Aufgaben einsetzen können.

Ihr Front-End-Server wäre extrem leicht: Apache und wenig anderes. Sie könnten auch Ihre statischen Inhalte auf diesem Front-End-Server mit Squid oder Apaches mod_cache zwischenspeichern, so dass Anfragen nach Bildern, Js, CSS und anderen statischen Inhalten niemals Ihren Back-End-Server erreichen, sobald sie zwischengespeichert wurden.

EDIT: Ich habe gerade Pascals Kommentar gelesen und er schlägt das Gleiche vor. Ich werde ihn modifizieren +1

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X