HAProxy ist, wie der Name schon sagt, ein Proxy-Server und ein Load-Balancer für hohe Verfügbarkeit. In diesem Artikel werde ich zuerst zeigen, wie man HAProxy in FreeBSD installiert. Als nächstes richten wir uns ein, um als Reverse-Proxy zu fungieren.
Die Installation
In FreeBSD baue und installiere ich meine Software gerne aus dem Ports-Baum, also führe es als root aus:
# cd /usr/ports/net/haproxy
# make install clean
Achten Sie auf den Bildschirm, wenn einige Optionen angezeigt werden (meistens von Abhängigkeiten). Aktivieren Sie HAProxy in /etc/rc.conf, wenn es installiert ist, und fahren Sie mit dem nächsten Abschnitt fort:
# /usr/local/etc/rc.d/haproxy enable
haproxy enabled in /etc/rc.conf
Die Konfiguration
Bevor wir mit der Bearbeitung der Konfigurationsdatei fortfahren, möchte ich ein Szenario erläutern:
Zuerst haben wir nur eine verfügbare öffentliche IP. Zweitens haben wir ein paar Dienste, die wir im Internet präsentieren möchten, sagen wir eine App (Webapp) und unsere Website. Beide laufen auf eigenen Servern. Schließlich haben wir einen dritten Ersatzserver, auf dem wir bereits HAProxy im vorherigen Abschnitt installiert haben, und dieser wird im Internet angezeigt.
Ein Benutzer richtet seinen Browser auf http://haproxy/website oder http://haproxy/app und haproxy sendet die Abfrage an den richtigen Server und gibt die Ergebnisse an den Browser zurück.
________ /------- [server A] [ client browser] -----> | haproxy |-----+ +----------+ \--------[server B]
Wie auch immer, Wikipedia sagt besser, wie ein Reverse-Proxy funktioniert.
Fügen Sie die folgenden Abschnitte zu /usr/local/etc/haproxy.conf hinzu. Zu Beginn sind die globalen Standardwerte in Ordnung:
frontend http-in bind *:80 option forwardfor use_backend uno if { path_beg /app} use_backend dos if { path_beg /www } backend uno mode http server nodea ipAp.or.fqdn:port backend dos mode http server nodeb ipB.or.fqdn:port
Wenn Sie wie ich kein Beispiel für eine haproxy.conf haben, fügen Sie diesen Abschnitt oben in der Datei hinzu:
global daemon maxconn 4096 defaults log global mode http timeout connect 5s timeout client 10s timeout server 10s
Mit dieser minimalen Konfiguration können Sie prüfen, ob alles in Ordnung ist und den Dienst starten:
Zu Testzwecken habe ich Haproxy gemacht, um Dinge von meinem eigenen PC zu bekommen:
Ich habe einen Apache, wo ich einige Programme speichere, die ich brauchen könnte, wenn ich auf dem PC eines anderen bin. Das Zauberwort ist die vollständige URL für einige dieser Programme.
Was ist mit etwas echtem Verwendung von HAProxy?
Dies ist ein Minimalbeispiel, übrigens nicht sehr nützlich. Ich empfehle dringend, mindestens zwei Dokumente von HAProxy zu lesen:
- Anleitung für Anfänger und die
- Konfigurationsanleitung
Und Ihre haproxy.conf Datei wäre so kompliziert oder einfach wie nötig.