HAProxy konfigurieren: Load Balancing für Web-Anwendungen

HAProxy ist ein leistungsfähiger Load Balancer und Reverse Proxy, der speziell für Hochverfügbarkeits- und Hochlast-Umgebungen entwickelt wurde. Er verteilt eingehende Anfragen effizient auf mehrere Backend-Server, verbessert die Performance von Web-Anwendungen und erhöht die Ausfallsicherheit. In diesem Leitfaden erfahren Einsteiger, IT-Studierende und Junior Network Engineers, wie HAProxy auf Linux installiert, konfiguriert und optimiert wird, um Web-Anwendungen zuverlässig zu load-balancen.

Systemvorbereitung

Vor der Installation von HAProxy sollte das System aktualisiert werden und notwendige Hilfspakete installiert sein.

System aktualisieren

sudo apt update
sudo apt upgrade -y

Für CentOS/RHEL:

sudo yum update -y

Hilfspakete installieren

sudo apt install wget curl git unzip -y

HAProxy Installation

HAProxy kann über die Standard-Paketquellen installiert werden. Für aktuelle Versionen empfiehlt sich das offizielle Repository.

Installation unter Ubuntu/Debian

sudo apt install haproxy -y
sudo systemctl start haproxy
sudo systemctl enable haproxy
sudo systemctl status haproxy

Installation unter CentOS/RHEL

sudo yum install epel-release -y
sudo yum install haproxy -y
sudo systemctl start haproxy
sudo systemctl enable haproxy
sudo systemctl status haproxy

Grundlegende HAProxy-Konfiguration

Die Hauptkonfiguration befindet sich in /etc/haproxy/haproxy.cfg. Hier werden Frontend- und Backend-Definitionen, Load-Balancing-Methoden und Sicherheitsoptionen festgelegt.

Beispielstruktur der Konfigurationsdatei

global
    log /dev/log local0
    log /dev/log local1 notice
    chroot /var/lib/haproxy
    stats socket /run/haproxy/admin.sock mode 660 level admin
    user haproxy
    group haproxy
    daemon
    maxconn 2000

defaults
log global
mode http
option httplog
option dontlognull
retries 3
timeout connect 5s
timeout client 50s
timeout server 50s

Frontend konfigurieren

Das Frontend empfängt die Anfragen von Clients und leitet sie an die entsprechenden Backend-Server weiter.

Beispiel Frontend für Web-Apps

frontend http_front
    bind *:80
    default_backend web_servers

Backend konfigurieren

Das Backend definiert die Webserver, auf die HAProxy die Anfragen verteilt.

Beispiel Backend

backend web_servers
    balance roundrobin
    server web1 192.168.50.11:80 check
    server web2 192.168.50.12:80 check
    server web3 192.168.50.13:80 check

Load-Balancing-Methoden

  • roundrobin: gleichmäßige Verteilung der Anfragen
  • leastconn: weiterleiten an Server mit den wenigsten Verbindungen
  • source: basierend auf der Client-IP

HTTPS / TLS aktivieren

HAProxy kann TLS-Termination durchführen, um HTTPS zu ermöglichen und die Backend-Server zu entlasten.

SSL-Zertifikat einbinden

frontend https_front
    bind *:443 ssl crt /etc/ssl/certs/meinewebsite.pem
    default_backend web_servers

Let’s Encrypt Zertifikate nutzen

sudo apt install certbot -y
sudo certbot certonly --standalone -d meinewebsite.de -d www.meinewebsite.de
sudo cat /etc/letsencrypt/live/meinewebsite.de/fullchain.pem /etc/letsencrypt/live/meinewebsite.de/privkey.pem > /etc/ssl/certs/meinewebsite.pem

Monitoring und Statistik

HAProxy bietet ein integriertes Statistik-Interface, um Backend-Server und Traffic zu überwachen.

Stats-Seite aktivieren

listen stats
    bind *:8404
    stats enable
    stats uri /haproxy_stats
    stats refresh 10s
    stats auth admin:starkesPasswort

Sicherheit

Um den Reverse Proxy abzusichern, sollten TLS, Firewalls und Zugriffsrechte korrekt konfiguriert sein.

Firewall für HAProxy konfigurieren

sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable
sudo ufw status

Benutzerrechte

HAProxy sollte unter einem dedizierten Benutzer laufen, der keine unnötigen Rechte besitzt.

Netzwerkkonfiguration

Damit HAProxy erreichbar ist, müssen IP-Adresse, Subnetz und Gateway korrekt konfiguriert sein.

Subnetzberechnung

Beispiel: Server-IP 10.0.2.20/24

<math>
Subnetzadresse = 10.0.2.20 & 255.255.255.0 = 10.0.2.0
Broadcastadresse = 10.0.2.0 | ~255.255.255.0 = 10.0.2.255
</math>

Netzwerkinterface konfigurieren

sudo nano /etc/netplan/01-netcfg.yaml
network:
  version: 2
  renderer: networkd
  ethernets:
    enp0s3:
      dhcp4: no
      addresses:
        - 10.0.2.20/24
      gateway4: 10.0.2.1
      nameservers:
        addresses: [8.8.8.8, 8.8.4.4]
sudo netplan apply

Performance-Optimierung

HAProxy bietet Optionen zur Optimierung von Durchsatz und Latenz.

Wichtige Parameter

  • maxconn: Maximale Anzahl gleichzeitiger Verbindungen
  • tune.ssl.default-dh-param: Diffie-Hellman Parameter für TLS
  • timeout connect / client / server: Verbindungszeitlimits
global
    maxconn 4000
    tune.ssl.default-dh-param 2048

defaults
timeout connect 5s
timeout client 50s
timeout server 50s

Best Practices

  • Regelmäßige Updates von HAProxy und Linux-Paketen
  • Automatische SSL-Erneuerung testen
  • Backend-Server regelmäßig überwachen und prüfen
  • Logs analysieren und bei Bedarf Alerting einrichten
  • Load-Balancing-Methode an die Anwendungsanforderungen anpassen

Konfiguriere Cisco Router & Switches und liefere ein Packet-Tracer-Lab/GNS3

Ich biete professionelle Unterstützung im Bereich Netzwerkkonfiguration und Network Automation für private Anforderungen, Studienprojekte, Lernlabore, kleine Unternehmen sowie technische Projekte. Ich unterstütze Sie bei der Konfiguration von Routern und Switches, der Erstellung praxisnaher Topologien in Cisco Packet Tracer, dem Aufbau und Troubleshooting von GNS3- und EVE-NG-Labs sowie bei der Automatisierung von Netzwerkaufgaben mit Netmiko, Paramiko, NAPALM und Ansible. Kontaktieren Sie mich jetzt – klicken Sie hier.

Meine Leistungen umfassen:

  • Professionelle Konfiguration von Routern und Switches

  • Einrichtung von VLANs, Trunks, Routing, DHCP, NAT, ACLs und weiteren Netzwerkfunktionen

  • Erstellung von Topologien und Simulationen in Cisco Packet Tracer

  • Aufbau, Analyse und Fehlerbehebung von Netzwerk-Labs in GNS3 und EVE-NG

  • Automatisierung von Netzwerkkonfigurationen mit Python, Netmiko, Paramiko, NAPALM und Ansible

  • Erstellung von Skripten für wiederkehrende Netzwerkaufgaben

  • Dokumentation der Konfigurationen und Bereitstellung nachvollziehbarer Lösungswege

  • Konfigurations-Backups, Optimierung bestehender Setups und technisches Troubleshooting

Benötigen Sie Unterstützung bei Ihrem Netzwerkprojekt, Ihrer Simulation oder Ihrer Network-Automation-Lösung? Kontaktieren Sie mich jetzt – klicken Sie hier.

Related Articles