HAProxy Beginner’s Tutorial

Haproxy Beginner S Tutorial



Wenn Ihre Anwendung skaliert, entsteht die Notwendigkeit, weitere Server hinzuzufügen, um mehr Datenverkehr zu bewältigen. Je mehr Datenverkehr Ihre Anwendung erhält, desto höher ist die Wahrscheinlichkeit, dass es bei einer Serverüberlastung zu Ausfallzeiten kommt. Es gibt jedoch Tools wie HAProxy, mit denen Sie definieren können, wie der Datenverkehr gehandhabt wird, um die Last auf Ihrem Server auszugleichen. Damit soll sichergestellt werden, dass kein Server überlastet wird. High Availability Proxy ist eine Open-Source-Software, die einen zuverlässigen Lastausgleich bietet und gleichzeitig als Reverse-Proxy für TCP/HTTP-Anwendungen fungiert.

HAProxy reduziert die Überlastung aller Server und erreicht dies durch die Verteilung des Datenverkehrs, um sicherzustellen, dass keine Server überlastet werden und dennoch andere Server verfügbar sind. Auf einer Plattform wie Instagram herrscht aufgrund der pro Sekunde gesendeten Anfragen ein enormer Datenverkehr. Daher muss HAProxy verwendet werden, um das Frontend, das Backend und die Listener für die Server zu definieren, um eine Überlastung zu vermeiden.

Warum HAProxy verwenden?

Bevor Sie sich mit der Installation und Konfiguration von HAProxy vertraut machen, sollten Sie verstehen, warum wir es aufgrund der angebotenen Funktionen benötigen. Im Folgenden sind die Hauptfunktionen von HAProxy aufgeführt:







  1. Lastverteilung - Mit HAProxy können Sie den Datenverkehr bequem auf verschiedene Server verteilen, um eine Überlastung eines einzelnen Servers zu vermeiden. Auf diese Weise kommt es bei Ihrer Anwendung nicht zu Ausfallzeiten und Sie erreichen eine schnellere Reaktionsfähigkeit, Zuverlässigkeit und Verfügbarkeit.
  2. Protokollierung und Überwachung – Sie erhalten detaillierte Überwachungsprotokolle für Ihre Server, um bei der Fehlerbehebung zu helfen. Außerdem verfügt HAProxy über eine Statistikseite, auf der Sie Echtzeit-Leistungsanalysen für Ihren Load Balancer erhalten können.
  3. Gesundheitschecks - Sogar Ihre Server benötigen eine Gesundheitsprüfung, um ihren Status zu ermitteln. HAProxy führt regelmäßig Gesundheitsprüfungen durch, um den Status Ihres Servers zu ermitteln und so seine Zuverlässigkeit zu verbessern. Wenn ein fehlerhafter Server erkannt wird, wird der Datenverkehr auf einen anderen Server umgeleitet.
  4. Reverse-Proxy – Eine Möglichkeit, die Sicherheit zu erhöhen, besteht darin, die interne Struktur zu verbergen. Glücklicherweise können Sie mit HAProxy den Datenverkehr von Clients empfangen und an entsprechende Server weiterleiten. Auf diese Weise bleibt Ihre interne Struktur vor den Augen des Hackers verborgen.
  5. ACLs (Zugriffskontrolllisten) – Mit HAProxy können Sie anhand verschiedener Kriterien wie Pfade, Header und IP-Adressen definieren, wie das Traffic-Routing erfolgen soll. Dadurch wird die Definition einer benutzerdefinierten Routing-Logik für Ihren Datenverkehr einfacher.
  6. SSL-Kündigung – Standardmäßig wird SSL/TLS von den Backend-Servern ausgelagert, was zu einer verringerten Leistung führt. Bei HAProxy erfolgt die SSL/TLS-Beendigung jedoch beim Load Balancer, wodurch die Aufgabe auf die Backend-Server verlagert wird.

HAProxy installieren

Bisher haben wir HAProxy definiert und die Funktionen besprochen, die es bietet, um Ihnen zu helfen, zu verstehen, warum Sie es für Ihre Anwendung benötigen. Der nächste Schritt besteht darin, zu verstehen, wie Sie mit der Installation auf Ihrem System beginnen können.



Wenn Sie die Systeme Ubuntu oder Debian verwenden, kann HAProxy über den APT-Paketmanager installiert werden. Führen Sie den folgenden Befehl aus:



$ sudo apt-Update
$ sudo apt installiere Haproxy

Wenn Sie RHEL-basierte Systeme oder CentOS verwenden, ist HAProxy ebenfalls über den Paketmanager „yum“ verfügbar. Führen Sie die folgenden Befehle aus:





$ sudo leckeres Update
$ sudo yum installiere Haproxy

In unserem Fall verwenden wir Ubuntu. Somit haben wir unseren Befehl wie folgt:



Anschließend können wir die Version überprüfen, um sicherzustellen, dass wir HAProxy erfolgreich installiert haben.

$ haproxy --version

So konfigurieren Sie HAProxy

Wenn HAProxy installiert ist, können Sie jetzt seine Konfigurationsdatei öffnen ( / etc/haproxy/haproxy.cfg) und definieren Sie die Einstellungen, die Sie für Ihren Load Balancer verwenden möchten.

Öffnen Sie die Konfigurationsdatei mit einem Editor wie Nano oder Vim.

$ sudo nano /etc/haproxy/haproxy.cfg

Sie erhalten eine Konfigurationsdatei wie die folgende:

Anhand der Konfigurationsdatei werden Sie feststellen, dass sie zwei Hauptabschnitte enthält:

  1. global – Es ist der erste Abschnitt in der Datei und seine Werte sollten nicht geändert werden. Es enthält die Prozesseinstellungen, die definieren, wie der HAProxy funktioniert. Es definiert beispielsweise die Protokollierungsdetails und Gruppen oder Benutzer, die die HAProxy-Funktionen ausführen können. Beachten Sie, dass es in dieser Konfigurationsdatei nur einen globalen Abschnitt geben kann und dessen Werte unverändert bleiben sollten.
  1. Standardwerte – Dieser Abschnitt enthält die Standardwerte für die Knoten. In diesem Abschnitt können Sie beispielsweise die Timeouts oder den Betriebsmodus für Ihren HAProxy hinzufügen. Außerdem ist es möglich, dass Ihre HAProxy-Konfigurationsdatei zahlreiche Standardabschnitte enthält.

Hier ist ein Beispiel für einen Abschnitt „Standardeinstellungen“:

Im angegebenen Bild definiert der Modus, wie Ihr HAProxy die eingehenden Anfragen verarbeitet. Sie können den Modus auf HTTP oder TCP einstellen. Das Timeout gibt an, wie lange HAProxy warten soll. Beispielsweise ist die Zeitüberschreitung der Verbindung die Zeit, die gewartet werden muss, bevor eine Back-End-Verbindung hergestellt wird. Der Timeout-Client gibt an, wie lange HAProxy darauf warten soll, dass ein Client die Daten sendet. Der Timeout-Server ist die Zeit, die darauf gewartet wird, dass der entsprechende Server die Daten sendet, die an den Client weitergeleitet werden. Wie Sie die Standardwerte definieren, spielt eine große Rolle bei der Verbesserung der Antwortzeit Ihrer Anwendung.

Es gibt drei weitere Abschnitte, die Sie definieren sollten, damit Ihr Load Balancer wie erwartet funktioniert.

  1. Frontend - Dieser Abschnitt enthält die IP-Adressen, die Ihre Clients zum Verbindungsaufbau verwenden sollen.
  2. Backend – Es zeigt die Serverpools, die die im Frontend-Abschnitt definierten Anforderungen verarbeiten.
  3. Hören - Es wird nacheinander verwendet, wenn Sie eine bestimmte Servergruppe weiterleiten möchten. In diesem Abschnitt werden die Aufgaben des Frontends und des Backends zusammengefasst.

Nehmen wir ein Beispiel

Für dieses Beispiel definieren wir das Frontend so, dass es den Localhost mit einem bestimmten Port verwendet. Als nächstes binden wir es an das Backend, das den Localhost ausführt, und führen dann einen Python-Server aus, um zu testen, ob beim Lastausgleich alles wie erwartet funktioniert. Befolgen Sie die angegebenen Schritte.

Schritt 1: Konfigurieren des Standardbereichs

Im Abschnitt „Standardeinstellungen“ legen wir die Werte fest, die von allen Knoten gemeinsam genutzt werden sollen. Für unseren Fall stellen wir den Modus auf HTTP ein und legen die Timeouts für den Client und den Server fest. Sie können die Zeit an Ihre Bedürfnisse anpassen.

Denken Sie daran, dass sich alle diese Änderungen in der HAProxy-Konfiguration unter „/etc/haproxy/haproxy.cfg“ befinden. Sobald der Standardbereich konfiguriert ist, definieren wir das Frontend.

Schritt 2: Konfigurieren des Frontend-Bereichs

Im Frontend-Bereich definieren wir, wie Kunden online auf die Anwendung oder Website zugreifen sollen. Wir geben die IP-Adressen für die Anwendung weiter. Aber in diesem Fall arbeiten wir mit dem Localhost. Daher ist unsere IP-Adresse die Fallback-Adresse 127.0.0.1 und wir möchten die Verbindungen über Port 80 akzeptieren.

Sie müssen das Schlüsselwort „bind“ hinzufügen, das als Listener für die IP-Adresse am angegebenen Port fungiert. Die von Ihnen definierte IP-Adresse und der Port werden vom Load Balancer verwendet, um die eingehenden Anfragen zu akzeptieren.

Nachdem wir die vorherigen Zeilen in Ihre Konfigurationsdatei eingefügt haben, müssen wir „haproxy.service“ mit dem folgenden Befehl neu starten:

$ sudo systemctl Haproxy neu starten

An dieser Stelle können wir versuchen, die Anfragen mit dem Befehl „curl“ an unsere Website zu senden. Führen Sie den Befehl aus und fügen Sie die Ziel-IP-Adresse hinzu.

$ curl

Da wir noch nicht definiert haben, wie das Backend unseres HAProxy aussehen wird, erhalten wir einen 503-Fehler, wie im Folgenden gezeigt. Obwohl es dem Load Balancer gelungen ist, die Anfragen zu empfangen, ist derzeit kein Server verfügbar, um sie zu verarbeiten, daher der Fehler.

Schritt 3: Konfigurieren des Backends

Im Backend-Bereich definieren wir die Server, die alle eingehenden Anfragen bearbeiten. Der Load Balancer bezieht sich auf diesen Abschnitt, um zu erfahren, wie er die eingehenden Anfragen verteilen soll, um sicherzustellen, dass kein Server überlastet wird.

Der Fehler 503, den wir vorhin bekamen, lag daran, dass wir kein Backend hatten, um die Anfragen zu bearbeiten. Beginnen wir mit der Definition des „default_backend“ zur Bearbeitung der Anfragen. Sie definieren es im Frontend-Bereich. Wir haben es für diesen Fall „linux_backend“ genannt.

Erstellen Sie als Nächstes einen Backend-Abschnitt, der denselben Namen hat wie der, der im Frontend-Abschnitt definiert ist. Anschließend müssen Sie das Schlüsselwort „server“ verwenden, gefolgt vom Namen Ihres Servers und seiner IP-Adresse. Das folgende Bild zeigt, dass wir den „linuxhint1“-Server mit IP 127.0.0.1 und Port 8001 definiert haben:

Sie können über einen Pool von Backend-Servern verfügen, für diesen Fall haben wir jedoch nur einen definiert. Stellen Sie sicher, dass Sie die Datei speichern. Wir müssen den HAProxy-Dienst erneut neu starten.

Um den erstellten HAProxy-Load-Balancer zu testen, erstellen wir einen Webserver mit Python3, um die Backend-Ports mithilfe der von uns angegebenen IP-Adresse zu binden. Wir führen den Befehl wie folgt aus:

$ python3 -m http.server 8001 --bind 127.0.0.1

Stellen Sie sicher, dass Sie die Werte so ersetzen, dass sie mit Ihrer IP-Adresse und dem Port übereinstimmen, den Sie binden möchten. Beachten Sie, wie der Webserver erstellt wird und auf eingehende Anfragen wartet.

Auf einem anderen Terminal verwenden wir den Befehl „curl“, um eine Anfrage an den Server zu senden.

$ curl

Im Gegensatz zu dem Fehler 503 zuvor, der zeigt, dass kein Server zur Bearbeitung der Anfrage verfügbar ist, erhalten wir dieses Mal eine Ausgabe, die bestätigt, dass unser HAProxy-Load-Balancer funktioniert.

Wenn Sie zum vorherigen Terminal zurückkehren, in dem wir den Webserver erstellt haben, werden Sie sehen, dass wir eine Erfolgsausgabe 200 erhalten, die bestätigt, dass HAProxy die Anfrage empfangen und verarbeitet hat, indem es sie an den definierten Server in unserem Backend-Bereich sendet.

So können Sie einen einfachen HAProxy für Ihre Website oder Anwendung einrichten.

Mit Regeln arbeiten

Bevor wir mit diesem HAProxy-Tutorial für Anfänger abschließen, sprechen wir kurz darüber, wie Sie die Regeln definieren können, die steuern, wie die Anforderungen vom Load Balancer verarbeitet werden.

Befolgen Sie die gleichen Schritte wie zuvor, lassen Sie unseren Standardabschnitt intakt und definieren Sie andere IP-Adressen im Frontend-Bereich. Wir binden die gleiche IP-Adresse, akzeptieren aber die Verbindungen von verschiedenen Ports.

Darüber hinaus haben wir unser „default_backend“ und ein weiteres „use_backend“, bei dem es sich um einen anderen Serverpool handelt, den wir je nach Port verwenden, von dem die Anfragen kommen. In der folgenden Konfiguration werden alle Anfragen über Port 81 von den Servern im „Linux2_backend“ bearbeitet. Alle anderen Anfragen werden vom „default_backend“ bearbeitet.

Anschließend erstellen wir die Backend-Abschnitte wie im Frontend definiert. Beachten Sie, dass wir für jedes Backend einen anderen Server haben, den wir für die Bearbeitung der Anfragen angeben.

Starten Sie den HAProxy-Dienst schnell neu.

Lassen Sie uns den Webserver mit Python3 erstellen und die Anforderungen an Port 8002 binden, der der alternative Backend-Server ist.

Wenn wir Anfragen an ihn senden, geben wir den Port als 81 an, um den Load Balancer zu veranlassen, die Anfragen an den alternativen Server zu senden, der nicht der Standardserver ist.

Bei einer erneuten Überprüfung unseres Webservers können wir feststellen, dass er die Anfragen empfangen und verarbeiten kann und eine Antwort von 200 (Erfolg) gibt.

Auf diese Weise können Sie die Regeln definieren, die steuern, wie Ihr Load Balancer die Anfragen empfängt und verarbeitet.

Abschluss

HAProxy ist eine ideale Lösung für den Lastausgleich für TCP/HTTP-Anwendungen. Nach der Installation können Sie die Konfigurationsdatei bequem bearbeiten, um die Standardeinstellungen, Frontend- und Backend-Abschnitte zu definieren und so die Funktionsweise Ihres Load Balancers festzulegen. Dieser Beitrag ist ein Leitfaden für Anfänger zu HAProxy. Es begann mit der Definition von HAProxy und seinen Funktionen. Als Nächstes ging es darum, zu verstehen, wie HAProxy konfiguriert wird, und gab abschließend ein Beispiel für die Verwendung von HAProxy als Load Balancer.