Was ist Keepalived?
Keepalived ist ein Service, der für die absturzfreie Erstellung und Unterstützung von Infrastrukturen konzipiert ist. Es handelt sich nicht um eine vollständig ausreichende Einheit und es ist ein Ausgleichsdienst erforderlich, um Zugriff auf die „Ziel“-Inhalte zu ermöglichen. In diesem Artikel zeige ich, wie man ein Bundle „keepalived + haproxy + webserver“ einrichtet Ubuntu 20.04 LTS.
Verfahren vorbereiten
Vor der Installation müssen wir unsere Infrastruktur vorbereiten:
- Zwei Server für identische Inhalte und zwei Server für Keepalive-Daemon und Haproxy-Balancer;
- Ubuntu 20.04 Betriebssystem und privilegierter Kontozugriff auf allen diesen Servern;
- Zwei Subnetze, ein öffentliches und ein privates. Aus Sicherheitsgründen sind Inhaltsserver nicht über das öffentliche Subnetz zugänglich. Zugriffsserver sollten mit beiden Netzwerken verbunden sein.
- Eine zusätzliche öffentliche IP-Adresse, die an das öffentliche Subnetz weitergeleitet und keinem Zugriffsserver zugewiesen wird;
- Domainname, der auf diese „zusätzliche“ IP „zeigt“.
Beginnen wir mit der Vorbereitung:
- Erstellen Sie vier Server über ServerSpace cliHNO-Bereich. Alle sollten sich in einem Rechenzentrum befinden;
- Erstellen Sie wie beschrieben zwei Subnetze.
- Verbinden Sie alle Server mit erstellten Netzwerken. Installieren Sie dann das Betriebssystem neu. Dies ist der schnellste Weg, Einstellungen „innerhalb“ der Betriebssysteme anzuwenden.
- Als Ergebnis sehen Sie alle zugewiesenen Adressen in den Subnetzdetails. Merken Sie sich diese IPs, sie werden weiter benötigt. Außerdem wird eine ungenutzte IP (z. B. 45.14.48.134 in meinem Beispiel) als „Floating“-Adresse für Keepalived verwendet;
- Erstellen firewall Regel zum Blockieren des gesamten eingehenden Datenverkehrs zu den „Backend“-Servern über die öffentliche Schnittstelle, außer dem zugewiesenen Subnetz. Vergessen Sie nicht, Ihre eigene IP auf die Whitelist zu setzen, da dies die Serververwaltung komfortabler macht. Der einfachste Weg, dies zu tun, besteht darin, zu den Einstellungen Ihrer Serverdetails zu gehen, die Regeln hinzuzufügen und click zum SPAREN Taste. Denken Sie daran, dass Regeln mit der Aktion „Zulassen“ oberhalb von Blockregeln platziert werden sollten.
- Wiederholen Sie diesen Schritt für Server „content2“.
- Bearbeiten / Etc / hosts Fügen Sie auf jeweils vier Servern am Ende einfach die folgenden Zeilen hinzu:
<backend_server_one_IP> content1 content1.your.domain
<backend_server_two_IP> content2 content2.your.domain
<balancer_server_one_IP> haproxy1 haproxy1.your.domain
<balancer_server_two_IP> haproxy2 haproxy2.your.domain
<1st_floating_IP_for_keepalived> your.domain
<2nd_floating_IP_for_keepalived> your.domain
Bundle-Setup „Webserver, Balancer und Watch-Daemon“.
- Installieren Sie Ihr Projekt auf den Inhaltsservern. Auf beiden Backends sollten identische Inhalte platziert werden. Da dieser Artikel nur ein Beispiel ist, werde ich ihn installieren nginx Webserver mit einer Änderung – die Indexdateien werden unterschiedlich sein, um zu zeigen, wie alles funktioniert;
apt-get update; apt install -y nginx
echo $(hostname) > /var/www/html/index.nginx-debian.html # path may be different, it is website working directory and index file
- Offen SSH-sessions auf dem ersten Balancer-Server und installieren Sie das Haproxy-Paket.
apt -y install haproxy
- Nano bearbeiten /etc/haproxy/haproxy.cfg config-Datei und füge folgende Zeilen hinzu;
#frontend
#---------
frontend my_haproxy
bind *:80
stats uri /haproxy?stats
default_backend my_haproxy
# backend
#---------
backend my_haproxy
balance roundrobin
mode http
server content1 <1st_backend_server_private_IP>:80 check
server content2 <2nd_backend_server_private_IP>:80 check
- Starten Sie die Haproxy-Dienste neu
service haproxy restart
- Öffnen Sie zwei separate windows eines beliebigen Terminals auf Ihrem lokalen Computer und führen Sie diese Befehle aus (einen pro Fenster):
while sleep 3; do curl http://<1st_balancer_public_IP>; done
while sleep 3; do curl http://<2nd_balancer_public_IP>; done
Wenn Sie in beiden Terminals verschachtelte „Antworten“ sehen windows - Haproxys funktionieren, fahren Sie mit dem nächsten Schritt fort;
- Installieren Sie auf beiden Balancern das Keepalive-Daemon-Softwarepaket:
apt install -y keepalived
- Suchen und merken Sie sich die Namen öffentlicher Schnittstellen auf beiden Balancer-Servern.
ip a | grep <server_public_IP>
- Pa erstellenrameters-Datei auf der zuerst Balancer und fügen Sie den folgenden Code ein:
nano /etc/keepalived/keepalived.conf
vrrp_instance MY_KEEPALIVED1 {
state MASTER
interface ens192
virtual_router_id 1
priority 11
virtual_ipaddress {
45.14.48.134/29 dev ens192 label ens192:1
}
}
Parameters Beschreibung:
vrrp_instance - beliebiger Name ohne spajene,
Zustand - Serverrolle,
Schnittstelle - Name der Netzwerkschnittstelle, Sie wussten ihn im vorherigen Schritt,
virtuelle_router_id - Instanz-ID, sollte auf allen Balancern identisch sein,
Prioritätsliste - Bei Verwendung der Reihenfolge sollte Master-Server eine höhere Priorität haben.
virtuelle_ipadadresse – eine der ungenutzten IPs im Subnetz, Ihre Domain sollte an diese Adresse „gepinnt“ werden.
- Erstellen Sie eine Konfigurationsdatei für zweite Balancer-Server:
vrrp_instance MY_KEEPALIVED1 {
state SLAVE
interface ens192
virtual_router_id 1
priority 10
virtual_ipaddress {
45.14.48.134/29 dev ens192 label ens192:1
}
}
Achten Sie auf den Konfigurationstext – „priority“ und „state“ paramDie Punkte werden „getauscht“, alle anderen Punkte bleiben identisch.
- Aktivieren Sie das automatische Laden und starten Sie die Dienste auf beiden Frontservern neu.
systemctl enable haproxy && service haproxy restart; systemctl enable keepalived && service keepalived start
- Überprüfen Sie den Status. Das folgende Bild zeigt, dass die Dienste ausgeführt werden.
systemctl status haproxy && service keepalived status
Überprüfung und Katastrophensimulation
Es ist also Zeit, unsere Arbeit zu überprüfen.
- Öffnen Sie das Terminal erneut auf Ihrem Computer und führen Sie es aus
while sleep 5; do curl http://<your_domain>; done
Beide Server funktionieren und antworten abwechselnd;
- Master-Balancer stoppen;
systemctl stop haproxy && service keepalived stop
Wie wir sehen, wird der Backup-Balancer zum Master und liefert keine Interrupts.
- Lassen Sie uns einen Inhaltsknoten „löschen“.
service nginx stop
Wie wir sehen, wurde nur ein Paket gelöscht, dann stellt unser Projekt weiterhin Inhalte vom zweiten Knoten bereit;
- Wenn ein „ausgefallener“ Server zurückkehrt, kehrt auch sein Inhalt zurück;
- Und schließlich, wenn der „gefallene“ Balancer zurückkehrt, übernimmt er wieder die Meisterrolle.
systemctl start haproxy && service keepalived start
Zusammenfassung
In diesem Tutorial habe ich erklärt, was ein Keepalive-Daemon ist und wie man damit eine absturzsichere Infrastruktur macht nginx, Haproxy- und Keepalived-Pakete auf Ubuntu 20 LTS.