Was ist ein Load Balancer ? Ein Load Balancer ist eine effiziente Möglichkeit, den Netzwerkverkehr auf verschiedene Backend-Server zu verteilen. Es wird auch als Serverfarm oder Serverpool bezeichnet. Es verteilt Client-Anfragen oder Netzwerklast auf Ziel-Webserver. Load Balancer arbeiten nach dem Round-Robin-Konzept, das eine hohe Zuverlässigkeit und Verfügbarkeit gewährleistet.
Ein Szenario
Sie haben einen Webserver, der 100 Clients gleichzeitig verwalten kann. Plötzlich steigen die Anfragen an diesen bestimmten Server um 100 Prozent. Es ist wahrscheinlich, dass die Website abstürzt oder beendet wird. Um diese Situation zu vermeiden, richten Sie einen Zielwebserver ein. In diesem Szenario wechselt der Client nie zum Zielwebserver. Stattdessen geht ihre Anfrage an den Master-Server und der Master-Server sendet die Anfrage an den Ziel-Webserver. Wenn der Ziel-Webserver dem Master-Webserver antwortet, der als Reverse-Proxy bezeichnet wird.
[Das könnte Ihnen auch gefallen: Verwandeln Sie eine Kubernetes-Bereitstellung in einen Knative-Dienst]
HAProxy als Proxy verwenden
Der Port auf dem Hauptwebserver wird als Frontend-Port bezeichnet. HAProxy ist ein HTTP-Load-Balancer, der als Reverse-Proxy konfiguriert werden kann. Hier sehen wir uns an, wie ich HAProxy mithilfe eines Ansible-Playbooks konfiguriert habe.
Überprüfen Sie das System, in dem Sie HAProxy konfigurieren müssen
HAProxy ist auf diesem System nicht installiert. Sie können dies mit dem folgenden Befehl bestätigen:
rpm -q haproxy
Schritte zum Konfigurieren von HAProxy
Schritt 1 – HAProxy installieren
Um HAProxy zu installieren, müssen Sie ein Paket verwenden Modul, in dem Sie den Namen des Dienstes angeben, den Sie installieren möchten:
- name: "Configure Load balancer"
package:
name: haproxy
Schritt 2 – Kopieren Sie die Konfigurationsdatei für den Reverse-Proxy
Kopieren Sie die Konfigurationsdatei, damit Sie sie ändern können:
cp /etc/haproxy/haproxy.cfg /root/ws1/haproxy.cfg
Schritt 3 – Front-End-Port ändern und Back-End-IPs zuweisen
Standardmäßig ist das Frontend an Port 5000 gebunden. Ich habe die Portnummer auf 8080 geändert. Ich habe auch einen for
angewendet Schleife, um die Back-End-IP zu konfigurieren. Jetzt können Sie beliebig viele Webserver starten und müssen die IP-Adresse nicht manuell in /etc/httpd/httpd.conf
konfigurieren . Die IP-Adresse wird automatisch aus dem Inventar abgerufen.
backend app
balance roundrobin
{% for i in groups ["web"] %}
server app1{{ loop.index }} {{ i}}:80 check
{% endfor %}
Schritt 4 – Kopieren Sie haproxy.cfg auf den verwalteten Knoten
Mit Vorlage kopieren Sie die Konfigurationsdatei für HAProxy vom Controller-Knoten auf den verwalteten Knoten:
- template:
dest: "/etc/haproxy/haproxy.cfg"
src: "/root/ws1/haproxy.cfg"
Schritt 5 – Dienst starten
Nutzen Sie den Dienst Modul zum Starten des HAProxy-Dienstes:
- service:
name: "haproxy"
state: restarted
Überprüfen Sie das System, auf dem Sie den httpd-Webserver installieren müssen
Zum Testen der HAProxy-Konfiguration konfigurieren Sie auch httpd
auf Ihrem Zielknoten mit Hilfe von Ansible. Um zu prüfen, ob Sie httpd
noch nicht haben Verwenden Sie auf Ihrem System den folgenden Befehl:
rpm -q httpd
Schritt 1 – httpd installieren
Das Paket Modul wird verwendet, um httpd
zu installieren auf dem verwalteten Knoten:
- name: "HTTPD CONFIGURE"
package:
name: httpd
Schritt 2 – Webseite kopieren
Die Vorlage Modul wird verwendet, um Ihre Webseite von der Quelle zum Ziel zu kopieren:
- template:
dest: "/var/www/html/index.html"
src: "/root/ws1/haproxy.html"
Schritt 3 – Dienst starten
Der Dienst -Modul wird verwendet, um den httpd
zu starten Dienst:
- service:
name: "haproxy"
state: restarted
Vervollständigen Sie das Playbook, um den Reverse-Proxy zu konfigurieren
In diesem Playbook haben Sie zwei verschiedene Hosts mit zwei verschiedenen Gruppen. Eine Gruppe ist für den Webserver und eine andere für den Load Balancer:
---
- hosts: web
tasks:
- name: "HTTPD CONFIGURE"
package:
name: httpd
- template:
dest: "/var/www/html/index.html"
src: "/root/ws1/haproxy.html"
- service:
name: "httpd"
state: restarted
- hosts: lb
tasks:
- name: "Configure Load balancer"
package:
name: haproxy
- template:
dest: "/etc/haproxy/haproxy.cfg"
src: "/root/ws1/haproxy.cfg"
- service:
name: "haproxy"
state: restarted
Führen Sie das Playbook aus
ansible-playbook haproxy.yml
Ausgabe
Das Playbook wird erfolgreich ausgeführt und der Hauptwebserver kann mithilfe eines Load Balancers auf die beiden Zielwebserver zugreifen.
[ Suchen Sie nach mehr Informationen zur Systemautomatisierung? Beginnen Sie mit The Automated Enterprise, einem kostenlosen Buch von Red Hat. ]
Schlussfolgerung
Der Load Balancer und der Reverse Proxy wurden nun von Ansible konfiguriert. Sie können Ihren Webdiensten eine Schutz- und Verfügbarkeitsebene hinzufügen, indem Sie HAProxy zu Ihrer Infrastruktur hinzufügen. Sehen Sie sich unbedingt die Dokumentation für Ihr spezifisches Ziel an, um mehr zu erfahren.