HAProxy ist eine Netzwerksoftwareanwendung, die Hochverfügbarkeit, Lastausgleich und Proxy für TCP- und HTTP-Netzwerkanwendungen bietet. Es ist für stark frequentierte Websites geeignet und unterstützt viele beliebte Websites im Internet. Dieser Artikel zeigt Ihnen, wie Sie HAProxy unter Debian 9.1 installieren und konfigurieren.
Obwohl HAProxy über mehrere herausragende Funktionen verfügt, konzentriert sich dieser Artikel darauf, wie Sie HAProxy so einrichten, dass Ihre Webanwendung "Proxy" wird.
Bedarf
- Mindestens zwei Vultr-Server (für Lastausgleichsfunktionen), auf denen Ihre Website oder Webanwendung bereitgestellt ist.
HAProxy installieren
Debian 9 wird bereits mit HAProxy 1.7 (neueste stabile Version zum Zeitpunkt des Schreibens) ausgeliefert, und wir können es einfach installieren mit apt-get:
# apt-get update
# apt-get install haproxy
Wenn die vorherigen Befehle erfolgreich waren, haben Sie HAProxy installiert und können mit dem nächsten Schritt fortfahren.
HAProxy konfigurieren
Die HAProxy-Konfigurationsdatei ist in zwei Abschnitte unterteilt - "global" und "Proxys". Eine befasst sich mit der prozessweiten Konfiguration, während die letztere aus Standardkonfigurations-, Frontend- und Backend-Abschnitten besteht.
Globale Sektion
Öffnen Sie mit Ihrem bevorzugten Texteditor /etc/haproxy/haproxy.cfgdie vordefinierten Abschnitte "global" und "default" und beachten Sie sie. Das erste, was Sie möglicherweise tun möchten, ist, die maxconnGröße auf eine angemessene Größe zu erhöhen , da dies Auswirkungen auf die Verbindungen hat, die HAProxy zulässt. Zu viele Verbindungen können dazu führen, dass Ihr Webdienst aufgrund vieler Anforderungen abstürzt. Sie müssen die Größe anpassen, um zu sehen, was für Sie funktioniert. Im globalen Bereich haben wir einen maxconnWert von ausgewählt 3072.
global
daemon
maxconn 3072
Fügen Sie im Standardabschnitt die folgende Zeile unter Modus hinzu http:
option forwardfor
Dadurch werden X-Forwarded-Forjeder Anforderung Header hinzugefügt, sodass Ihre Backend-Server die ursprüngliche IP-Adresse des Benutzers ermitteln können.
Fügen Sie diese Zeile hinzu, um den HTTP-Verbindungsschließmodus auf der Serverseite zu aktivieren und gleichzeitig die HTTP-Keep-Alive-Funktion auf der Clientseite zu unterstützen. Dies reduziert die Latenz auf der Clientseite und hilft, Serverressourcen zu schonen:
option http-server-close
Wenn Sie Keep-Alive sowohl auf Client- als auch auf Serverseite verwenden möchten, können Sie option http-keep-alivestattdessen verwenden. Diese Option ist besonders nützlich, wenn die Kosten für den Aufbau einer neuen Verbindung zum Server im Vergleich zu den Kosten für das Abrufen der angeforderten Ressource erheblich sind.
Schließlich sieht die resultierende Konfigurationsdatei ungefähr so aus:
defaults
mode http
option forwardfor
option http-server-close
timeout connect 5000ms
timeout client 50000ms
timeout server 50000ms
Proxies Abschnitt
Um Ihren Proxy einzurichten, müssen Sie der Konfigurationsdatei zwei Abschnitte hinzufügen, um die beiden Teile des Proxys zu definieren: das Frontend und das Backend.
Frontend-Konfiguration
Das Frontend übernimmt Ihre HTTP-Verbindungen. Fügen Sie am Ende Ihrer haproxy.cfgDatei Folgendes hinzu :
frontend http-frontend
bind public_ip:80
reqadd X-Forwarded-Proto:\ http
default_backend wwwbackend
Stellen Sie sicher, dass public_ipSie die öffentliche IP-Adresse oder den Domainnamen Ihres Servers verwenden.
Backend-Konfiguration
Richten Sie Ihr Backend ein, indem Sie am Ende Ihrer Konfigurationsdatei die folgenden Zeilen hinzufügen:
backend wwwbackend
server 1-www server1_ip:80 check
server 2-www server2_ip:80 check
server 3-www server3_ip:80 check
Die hier verwendete Backend-Konfiguration erstellt 3 Verbindungen mit dem Namen X-www. ( Xist 1, 2 oder 3.) Jeder von ihnen entspricht einer serverX_ip:80 Adresse. (Ersetzen serverX_ipSie sie durch die IP-Adressen Ihrer Vultr-Instanzen.) Auf diese Weise können Sie den Lastausgleich zwischen den einzelnen Servern im angegebenen Serversatz durchführen (vorausgesetzt, jede IP-Adresse entspricht einem anderen Server). Mit dieser checkOption führt der Load Balancer Integritätsprüfungen auf dem Server durch.
Speichern Sie die Konfigurationsdatei und starten Sie HAProxy neu:
service haproxy restart
Wenn alles funktioniert, können Sie eine Verbindung herstellen http://public_ip/(durch Ihre öffentliche IP-Adresse oder Ihren Domainnamen ersetzen, wie im Frontend-Schritt konfiguriert) und Ihre Website anzeigen.
Fehlerbehebung
Wenn sich Ihre HAProxy-Instanz nach Ihren Änderungen weigert, zu starten, liegt möglicherweise irgendwo in der Konfigurationsdatei ein Fehler vor. Um eindeutige Meldungen zu dem Problem in der Konfigurationsdatei zu erhalten, können Sie versuchen, HAProxy manuell mit diesem Befehl zu starten:
# haproxy -f /etc/haproxy/haproxy.cfg
Wenn Sie beispielsweise eine Ausgabe wie folgt sehen:
[ALERT] 234/195612 (2561) : parsing [/etc/haproxy/haproxy.cfg:48] : server 1-www has neither service port nor check port nor tcp_check rule 'connect' with port information. Check has been disabled.
[ALERT] 234/195612 (2561) : Error(s) found in configuration file : /etc/haproxy/haproxy.cfg
[ALERT] 234/195612 (2561) : Fatal errors found in configuration.
Dann haben Sie vergessen, die Portnummer für den Server anzugeben 1-www.