News
Serverspace Technologien in den VAE: Einführung von Falconcloud
VB
28. Oktober 2022
Aktualisiert April 6, 2023

So machen Sie Ihre Website katastrophensicher mit NGINX und Keepalived

NGINX Web-Server

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;

pic1

  • Erstellen Sie wie beschrieben zwei Subnetze.

pic2

pic3

  • Verbinden Sie alle Server mit erstellten Netzwerken. Installieren Sie dann das Betriebssystem neu. Dies ist der schnellste Weg, Einstellungen „innerhalb“ der Betriebssysteme anzuwenden.

pic4

pic5

  • 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;

pic6

pic7

  • 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.

pic6

  • 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

pic9

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

pic10

  • 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

pic11

  • 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;

pic12

  • 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>

pic13

  • 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
}
}

pic14

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
}
}

pic15

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

pic16

  • Überprüfen Sie den Status. Das folgende Bild zeigt, dass die Dienste ausgeführt werden.
systemctl status haproxy && service keepalived status

pic17

Ü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;

pic18

  • Master-Balancer stoppen;
systemctl stop haproxy && service keepalived stop

Wie wir sehen, wird der Backup-Balancer zum Master und liefert keine Interrupts.

pic19

pic20

  • 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;

pic21

  • Wenn ein „ausgefallener“ Server zurückkehrt, kehrt auch sein Inhalt zurück;

pic22

  • Und schließlich, wenn der „gefallene“ Balancer zurückkehrt, übernimmt er wieder die Meisterrolle.
systemctl start haproxy && service keepalived start

pic23

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.

Abstimmung:
5 aus 5
Durchschnittliche Bewertung: 5
Bewertet von: 1
1101 CT Amsterdam Niederlande, Herikerbergweg 292
+31 20 262-58-98
700 300
ITGLOBAL.COM NL
700 300
Wir verwenden Cookies, um Ihr Erlebnis auf der Website zu verbessern Serverspace besser. Indem Sie weiterhin auf unserer Website surfen, stimmen Sie unseren zu
Cookies und Datenschutzbestimmungen.