Was wird auf Servern mit Lastausgleich installiert?

361
php_nub_qq

Die Frage, die ich habe, ist sehr einfach. Ich verstehe, was das Lastenausgleich ist und wie es funktioniert, aber ich kann es in der Praxis nicht visualisieren.

Nehmen wir an, ich habe eine AMP-Anwendung, die auf einem Server läuft. Eines Tages wird der Verkehr zu groß und ich muss anfangen, die Last auszugleichen, und ich füge einen weiteren Server hinzu. Ich habe bereits alle meine Daten auf dem ersten gespeichert. Was würde ich dann auf diesem Server speichern? Ich könnte die Dateien der Website kopieren, aber meine Datenbank würde sich immer noch auf dem ersten Server befinden, und ich müsste immer noch eine Verbindung von meinem neuen auf sie herstellen. Ich könnte einen dritten Server hinzufügen und diesen als MySQL-Server verwenden und diesen verwenden, um meine Daten zu speichern und meine Apache-Server mit dem Server verbinden zu lassen, aber das scheint keine gute Lösung zu sein, da ich immer noch alle Anfragen hätte, die Daten von einem Einzelplatz.

Wie wird das in der Realität gemacht?

0

2 Antworten auf die Frage

1
NextGen Engineer

Die zweite Option wird im Allgemeinen verwendet, wenn ein Lastausgleichsgerät verwendet wird. Das heißt, es gibt zwei Anwendungsserver, und das Gerät zum Lastenausgleich verteilt die eingehenden Daten zwischen den beiden Anwendungsservern basierend auf verschiedenen Algorithmen. Zum Beispiel Round Robin, kleinste Anfragen zuerst usw.

Die beiden Anwendungsserver sollten mit einer einzigen Datenquelle verbunden sein. Zu diesem Zweck können Sie eine Clusterdatenbank verwenden, die ziemlich gut mit MariaDB (kostenlos, Open Source und einem MySQL-Folk) funktioniert.

Hoffe, das beantwortet deine Frage.

Aber wird dies nicht zu einem Engpass führen, wenn alle Anwendungsserver denselben Datenserver verwenden? php_nub_qq vor 7 Jahren 0
Deshalb empfehle ich Ihnen, eine gruppierte Datenbank zu erstellen. Sie können eine Reihe von Geräten dieselbe Datenbank verwenden. Es hat viele Vorteile wie: Keine Slave-Verzögerung, keine verlorenen Transaktionen, Skalierbarkeit sowohl beim Lesen als auch beim Schreiben und unter anderem Latenzzeiten für kleinere Clients. NextGen Engineer vor 7 Jahren 0
@php_nub_qq Das hängt natürlich davon ab, was teurer ist: Anwendungslogik oder Datenbankzugriff. Sie müssen nur nach Bedarf skalieren. Daniel B vor 7 Jahren 0
0
Jarek Jóźwik

Möglicherweise gibt es eine Reihe von Lösungen für Ihren Fall.
Erstens: Ja, Sie kopieren Ihr gesamtes Www-Verzeichnis auf einen anderen Server, auf dem Apache und PHP installiert sind, genau dieselben Versionen wie auf dem ersten Knoten. Wenn Ihre Anwendung Dateispeicherung verwendet, sollten Sie sie am besten auf Freigabe setzen - beispielsweise NFS oder sshfs (auf einem separaten Server). Wenn Sie diesen Dateispeicher auf beiden App-Servern ablegen möchten, müssen Sie sie in Echtzeit synchronisieren (keine gute Lösung). In SAN erstelltes NFS ist in diesem Fall das Beste, da Sie über SAN-Schutz usw. verfügen.
In Bezug auf den Datenbank - Einzeldatenbankserver, der von der Anwendung getrennt ist und über ausreichend RAM und Festplattenspeicher verfügt, können viele Verbindungen und viele Abfragen verarbeitet werden. Sie müssten sich Sorgen machen, wenn Abfragen pro Sekunde Tausende erreichen würden. Aber wenn Sie diesen Punkt erreichen, ist die Lösung, wie bereits vorgeschlagen, db cluster. Zum Erstellen eines Clusters benötigen Sie mindestens 3 Datenbankserver und einen Lastenausgleich (Proxy).
Ihr Set würde also bestehen aus:

  1. Load Balancer für Webserver
  2. mindestens 2 Anwendungs- / Webserver
  3. Datenbankserver
  4. Dateiserver (falls erforderlich)

oder im Falle eines DB-Clusters:

  1. Load Balancer für Datenbankserver
  2. 3 Datenbankserver in einem Cluster