HAProxy Installation und Konfiguration auf Ubuntu 22.04

HAProxy (High Availability Proxy) ist eine Open-Source Proxy-Anwendung, die sowohl als Reverse-Proxy als auch als Forward-Proxy für TCP- und HTTP-basierte Anwendungen eingesetzt werden kann. Unter Ubuntu 22.04 lässt sich HAProxy installieren, um eingehenden Datenverkehr auf mehrere Backend-Server zu verteilen. Dadurch werden Lasten reduziert und die Gesamtleistung von Anwendungen verbessert.

HAProxy agiert als zentrales Gateway, das alle externen Anfragen an Backend-Server weiterleitet, auf denen Webdienste, Datenbanken oder Dateiverwaltungsanwendungen laufen. Sobald ein Client eine Anfrage stellt, prüft HAProxy diese und leitet sie gemäß den festgelegten Regeln an einen Backend-Server weiter. Der Backend-Server verarbeitet die Anfrage und sendet die Antwort zurück an den Client. Während des gesamten Prozesses dient HAProxy als Einstiegspunkt und verteilt die Last auf die Zielserver entsprechend den Konfigurationseinstellungen.

Voraussetzungen

Stellen Sie innerhalb eines einzelnen Standorts Folgendes sicher:

  • Eine Ubuntu 22.04 Instanz als HAProxy-Server bereitstellen.
  • Mindestens zwei Ubuntu 22.04 Instanzen als Backend-Server bereitstellen.
  • Alle Server an dasselbe VPC 2.0 Netzwerk anbinden.
  • Einen Domain-A-Record erstellen, der auf die IP-Adresse des HAProxy-Servers verweist (z. B. haproxy.example.com).

Beispiel einer HAProxy Load-Balancing-Topologie

Das folgende Beispiel zeigt, wie HAProxy Anfragen an Backend-Server mit Apache-Webserver verteilt. Abhängig vom Serverzustand und der gewählten Balancing-Methode leitet HAProxy Client-Verbindungen entsprechend weiter.

Beispiel-HAProxy-Netzwerk

Nachfolgend die IP-Details für jeden Server im VPC 2.0 Netzwerk:

  • HAProxy-Server
    Öffentlicher Hostname: haproxy.example.com
    VPC 2.0 IP: 10.128.0.2
  • Server 1
    VPC 2.0 IP: 10.128.0.3
  • Server 2
    VPC 2.0 IP: 10.128.0.4

HAProxy auf Ubuntu 22.04 installieren

Gehen Sie wie folgt auf dem HAProxy-Server vor:

1. Verbindung zum Server via SSH herstellen

2. Einen Nicht-Root-Benutzer mit Sudo-Rechten anlegen

# adduser haproxyadmin && adduser haproxyadmin sudo

3. Zum neuen Benutzer wechseln

4. Paketindex aktualisieren

5. HAProxy installieren

$ sudo apt install haproxy -y

Falls die benötigte Version nicht in den Standard-APT-Repositories vorhanden ist, installieren Sie eine bestimmte Version über das vbernat PPA:

$ sudo add-apt-repository ppa:vbernat/haproxy-2.8 -y

6. HAProxy beim Systemstart aktivieren

$ sudo systemctl enable haproxy

7. HAProxy-Status prüfen

$ sudo systemctl status haproxy

Ausgabe:


Active: active (running)

Den HAProxy-Server konfigurieren

Die Hauptkonfigurationsdatei von HAProxy unter /etc/haproxy/haproxy.cfg steuert, wie die Anwendung arbeitet und auf eingehende Verbindungen reagiert. Standardmäßig enthält die Datei folgende Abschnitte:

  • global: Definiert, wie HAProxy auf dem System läuft. Optionen sind u. a. Logging, Benutzer-/Gruppenzuordnung, Servicemodus und SSL-Einstellungen.
  • defaults: Legt Leistungsparameter wie Timeouts und den Verbindungsmodus fest. Zum Beispiel behandelt http sämtlichen Traffic als HTTP, während tcp rohe TCP-Verbindungen verarbeitet.

Gehen Sie wie folgt vor, um die Konfiguration um zusätzliche Abschnitte zu erweitern, die festlegen, wie HAProxy die Last an Backend-Server im VPC 2.0 Netzwerk verteilt.

1. Standardkonfiguration sichern

$ sudo cp /etc/haproxy/haproxy.cfg /etc/haproxy/haproxy.cfg.backup

2. Konfigurationsdatei bearbeiten

$ sudo nano /etc/haproxy/haproxy.cfg

3. Load-Balancer-Konfiguration hinzufügen

frontend website-frontend
    bind *:80,*:443
    option httpchk GET /healthcheck
    default_backend servers

backend servers
    balance roundrobin
    server server-1 10.128.0.3:80 weight 1 check
    server server-2 10.128.0.4:80 weight 1 check

Erklärung:

  • frontend: Der Abschnitt website-frontend weist HAProxy an, auf den Ports 80 (HTTP) und 443 (HTTPS) zu lauschen.
  • option httpchk: Führt Health-Checks auf den Backend-Servern aus.
  • default_backend: Definiert den Backend-Pool für die Lastverteilung.
  • backend: Die Gruppe servers definiert die eigentlichen Zielserver.
  • balance roundrobin: Verteilt die Verbindungen gleichmäßig auf die Server.
  • server: Richtet einzelne Server mit Health-Check-Optionen und Gewichtung für das Load-Balancing ein.

4. HAProxy-Statistiken aktivieren

Fügen Sie folgende Konfiguration hinzu, um ein Monitoring-Dashboard bereitzustellen:

listen stats
    bind *:8404  
    mode http   
    stats enable 
    stats uri /stats 
    stats auth admin:your_password 
    stats refresh 10s

Mit dieser Konfiguration können Sie eine Echtzeit-Statistikseite aufrufen, die Kennzahlen wie Sitzungen, Anfragen, Antwortzeiten und Fehler anzeigt.

5. HAProxy neu starten

$ sudo systemctl restart haproxy

6. Firewall konfigurieren

Die Uncomplicated Firewall (UFW) blockiert standardmäßig eingehende Verbindungen. Erlauben Sie die benötigten Ports:

HTTP-Traffic erlauben:

Zugriff auf die Statistikseite erlauben:

UFW neu laden, um Änderungen zu übernehmen:

7. Verbindung zu Backend-Servern testen

Überprüfen Sie die Erreichbarkeit mit ping:

Server 1

Beispielausgabe:

2 packets transmitted, 2 received, 0% packet loss

Server 2

Beispielausgabe:

2 packets transmitted, 2 received, 0% packet loss

Backend-Server konfigurieren

HAProxy führt Health-Checks auf den Backend-Servern durch, um deren Verfügbarkeit zu prüfen. Fällt ein Server aus, wird er aus dem Pool entfernt, bis er wieder reagiert. Gehen Sie auf jedem Backend-Server wie folgt vor:

1. Verbindung zum Backend-Server herstellen

2. Neuen Benutzer anlegen

# adduser sysadmin && adduser sysadmin sudo

3. Zum neuen Benutzer wechseln

4. Paketindex aktualisieren

5. Apache Webserver installieren

$ sudo apt install apache2 -y

6. Apache aktivieren

$ sudo systemctl enable apache2

7. Apache Web-Root konfigurieren

Wechseln Sie ins Dokumentenverzeichnis und ersetzen Sie die Standard-Indexdatei:

$ cd /var/www/html/
$ sudo mv index.html index.BAK
$ sudo nano index.html

Server-1 index.html:

Hello!

This content is served by Server 1.

Server-2 index.html:

Hello!

This content is served by Server 2.

8. Dateiberechtigungen zuweisen

$ sudo chown -R www-data:www-data /var/www/html/index.html

9. Apache neu starten

$ sudo systemctl restart apache2

10. Netzwerk-Interface überprüfen

Der Name des VPC-Interfaces sollte in der Ausgabe etwa enp8s0 lauten.

11. HTTP-Traffic über das VPC-Interface zulassen

$ sudo ufw allow in on enp8s0 to any port 80
$ sudo ufw reload

An diesem Punkt verteilt der HAProxy-Server die eingehenden Anfragen gleichmäßig auf die Backend-Server, und jeder Server liefert seine konfigurierte Index-Seite als Antwort zurück.

Auf die beschleunigte Webanwendung mit HAProxy zugreifen

HAProxy verteilt eingehende Anfragen im Round-Robin-Verfahren an die Backend-Server im VPC 2.0 Netzwerk. Abhängig vom Serverzustand werden Anfragen gleichmäßig rotiert, sodass kein einzelner Server überlastet wird. Führen Sie die folgenden Schritte aus, um zu bestätigen, dass Ihre Backend-Server korrekt über HAProxy antworten.

1. Ihre HAProxy-Domain öffnen

Öffnen Sie in einem Webbrowser (z. B. Chrome) die Domain Ihres HAProxy-Servers:

http://haproxy.example.com

Sobald die Seite geladen ist, sollte die Anwendung im Browser angezeigt werden. Die erste Anfrage kann von Server 1 beantwortet werden, während weitere Anfragen an andere Server im Backend-Pool weitergeleitet werden.

Beispiel:

  • Erste Anfrage → Server 1 liefert seine Webseite über HAProxy aus.
  • Nächste Aktualisierung → Server 2 antwortet mit seinen Inhalten.
  • Weitere Aktualisierung → Server 1 antwortet erneut, was den Round-Robin-Algorithmus demonstriert.

2. Auf die HAProxy-Statistikseite zugreifen

Um die HAProxy-Aktivitäten zu überwachen, öffnen Sie die Statistikoberfläche auf Port 8404:

http://haproxy.example.com:8404

Melden Sie sich mit dem administrativen Benutzernamen und Passwort an, die Sie mit der Direktive stats auth in Ihrer Konfiguration festgelegt haben.

Nach erfolgreicher Anmeldung erscheint das HAProxy-Dashboard im Browser, das Metriken sowohl für Frontend- als auch Backend-Performance anzeigt.

3. Ihre Anwendung überwachen

In der Statistikoberfläche können Sie den Live-Traffic verfolgen, Verbindungsraten einsehen und Leistungsengpässe identifizieren. Dies erleichtert eine effiziente Fehlerbehebung und Optimierung Ihrer Webanwendung.

Fazit

Sie haben HAProxy erfolgreich implementiert und konfiguriert, um den Traffic zwischen mehreren Backend-Servern in einem VPC 2.0 Netzwerk auszugleichen. Mit HAProxy wird Ihre Anwendung robuster und zuverlässiger, da Client-Anfragen intelligent verwaltet werden. Je nach Bedarf können Sie weitere Backend-Server hinzufügen und mit verschiedenen Load-Balancing-Algorithmen experimentieren, um die Gesamtleistung zusätzlich zu verbessern.

Quelle: vultr.com

Jetzt 200€ Guthaben sichern

Registrieren Sie sich jetzt in unserer ccloud³ und erhalten Sie 200€ Startguthaben für Ihr Projekt.

Das könnte Sie auch interessieren: