Einführung
HAProxy ist ein Load Balancer . Ein Load Balancer verarbeitet mehr Webverkehr, um Ausfallzeiten zu vermeiden. Es empfängt Datenverkehr aus dem Internet oder Ihrem internen Netzwerk, das einen internen Dienst ausgleicht, und leitet den Datenverkehr dann an das Internet weiter.
Die Vorteile der Verwendung eines Load Balancers, sobald er auf mehreren Servern bereitgestellt wurde. Der Load Balancer kann den Datenverkehr weiterleiten, um Ihre Kapazität zu erweitern, um zahlreiche Clients zu bedienen, ohne sich direkt mit jedem Server zu verbinden. HAProxy empfängt und leitet Datenverkehr weiter und balanciert die Ladung über Ihre Server. Diese Technik schützt vor einem Ausfall Ihrer Server, da der Load Balancer erkennen kann, wenn ein Server nicht mehr reagiert, und das Senden von Datenverkehr automatisch stoppt. HAProxy wird verwendet, um den Datenverkehr zu einer beliebigen Anzahl von Webanwendungen mit einer einzigen Konfiguration auszugleichen.
HAProxy ist der schnellste und am weitesten verbreitete Load Balancer und Application Delivery Controller. Geschrieben in C, effiziente Prozessor- und Speichernutzung. Es kann entweder auf Layer 4 (TCP) oder Layer 7 (HTTP) ausgeführt werden und bietet zusätzliche Funktionen zum Untersuchen, Weiterleiten und Ändern von Nachrichten.
Es ist mit einer Web-Benutzeroberfläche namens HAProxy Stats-Seite gebündelt, mit der Sie Fehlerraten, Verkehrsaufkommen und Latenz überwachen können. Darüber hinaus aktualisiert es eine einzige Konfigurationsdatei, die eine Syntax zum Definieren von Routing-Regeln, Ratenbegrenzung, Zugriffskontrollen usw. bereitstellt.
Um einen wirklich zuverlässigen Dienst zu gewährleisten, führen Sie mindestens zwei Instanzen von HAProxy mit einem Aktiv-Aktiv- oder Aktiv-Standby-Setup aus. Erfahren Sie, wie Sie mit HAProxy Enterprise umgehen, indem Sie die offiziellen Dokumente lesen. Sehen Sie sich das Container-Apache-Tutorial an.
Beginnen Sie bei der Konfiguration von HAProxy normalerweise mit Folgendem:
- Spezifische IP-Adressen und Ports HAProxy zum Empfangen von Datenverkehr;
- Server, an die HAProxy den Datenverkehr weiterleitet;
- Wenn ein Client anfordert, zu einem Serverpool zu wechseln.
Weitere Funktionen sind:
- SSL/TLS-Beendigung
- Gzip-Komprimierung
- Zustandsprüfung
- HTTP/2
- gRPC-Unterstützung
- Lua-Skripting
- DNS-Diensterkennung
- Automatische Wiederholungsversuche bei fehlgeschlagenen Verbindungen
- Ausführliche Protokollierung
Diese Container lauschen auf Port 8080, aber wir haben diese Ports nicht dem Host zugeordnet, sodass sie nicht geroutet werden können. Stattdessen leiten wir den Datenverkehr über den HAProxy-Load-Balancer an diese Container weiter. Als nächstes fügen wir HAProxy vor ihnen hinzu. Erstellen Sie eine Datei namens haproxy.cfg im aktuellen Verzeichnis und fügen Sie ihr Folgendes hinzu:
Holen Sie sich das HAProxy-Image
# podman pull haproxytech/haproxy-alpine:2.4
Erstellen Sie ein benutzerdefiniertes Image für Ihre HAProxy-Anforderung
# mkdir -p /haproxy/etc/haproxy/
# cd /haproxy/etc/haproxy/
# ls
Dockerfile haproxy.cfg
Erstellen Sie ein Docker-Image für Ihre Anforderungen
# cat /haproxy/etc/haproxy/Dockerfile
FROM haproxytech/haproxy-alpine:2.4
COPY haproxy.cfg /usr/local/etc/haproxy/haproxy.cfg
Erstellen Sie eine Haproxy-Konfiguration Ihrer Wahl
# cat /haproxy/etc/haproxy/haproxy.cfg
global
stats socket /var/run/api.sock user haproxy group haproxy mode 660 level admin expose-fd listeners
log stdout format raw local0 info
defaults
mode http
timeout client 10s
timeout connect 5s
timeout server 10s
timeout http-request 10s
log global
frontend stats
bind *:8404
stats enable
stats uri /
stats refresh 10s
frontend myfrontend
bind :80
default_backend webservers
backend webservers
server s1 http-server1:8081 check
server s2 http-server2:8082 check
server s3 http-server3:8083 check
Erstellen Sie das Haproxy-Image
# cd /haproxy/etc/haproxy/
# podman build -t my-haproxy .
Erstellen Sie den HAproxy-Server
# podman run --name haproxy-server -p 80:80 -p 8404:8404 -d localhost/my-haproxy
Pod für jeden Webserver erstellen
Apache-Server
# podman pull centos/httpd-24-centos7
# podman pod create --name httpapp1 -p 8081:8080 --network bridge
# podman run --pod httpapp1 --name http-server1 -v /wwwdata1:/var/www:Z -d centos/httpd-24-centos7
# podman pod create --name httpapp2 -p 8082:8080 --network bridge
# podman run --pod httpapp2 --name http-server2 -v /wwwdata2:/var/www:Z -d centos/httpd-24-centos7
# podman pod create --name httpapp3 -p 8083:8080 --network bridge
# podman run --pod httpapp3 --name http-server3 -v /wwwdata3:/var/www:Z -d centos/httpd-24-centos7


Schlussfolgerung
HAProxy innerhalb eines Containers kann dessen Bereitstellung und Lebenszyklusverwaltung vereinfachen. Bietet einen Standard für die Bereitstellung von Anwendungen und macht den Prozess wiederholbar und testbar. Der CPU-Overhead der Ausführung ist vernachlässigbar, es kann zusätzliches Netzwerk verursachen, die Auswirkungen hängen von Ihrem Anwendungsfall und Ihren Durchsatzanforderungen ab.
Erstellen Sie einfach eine HAProxy-Konfigurationsdatei und rufen Sie dann den Befehl podman run mit dem Namen des HAProxy-Images auf. HAProxy Technologies liefert aktuelle Bilder.
HAProxy Enterprise unterstützt moderne Anwendungen in jeder Größenordnung und in jeder Umgebung und bietet höchste Leistung, Beobachtbarkeit und Sicherheit für Ihre kritische Unterstützung. Sie können die hochmodernen Funktionen und die Enterprise-Suite von Add-Ons nutzen, die durch maßgeblichen Expertensupport und professionelle Services unterstützt werden.