Verteilung des Datenverkehrs zwischen AWS und GCP mit Cloudflare Load Balancer
In der heutigen Zeit erfordern die meisten Webanwendungen einen Lastausgleich zwischen verschiedenen Servern oder Diensten innerhalb eines Rechenzentrums. Für geschäftskritische Anwendungen, die eine ständige Verfügbarkeit weltweit benötigen, ist jedoch ein Cloud-Load-Balancer unerlässlich. Hierbei geht es nicht nur um die Betriebszeit, sondern auch um viele andere wichtige Faktoren.
Beispiele hierfür sind:
- Anforderungen für ein Aktiv-Passiv- oder Aktiv-Aktiv-Rechenzentrum
- Ein umfassender Disaster-Recovery-Plan
- Die Nutzung mehrerer Rechenzentren zur Verarbeitung von Anfragen vom nächstgelegenen Standort
- Einhaltung von Richtlinien und Vorschriften
Cloudflare bietet hierfür flexible Lösungen mit lokalen und globalen Load-Balancing-Optionen an, die den Datenverkehr effizient auf verschiedene Rechenzentren verteilen können.
Zu den Kernfunktionen des Cloudflare Load Balancers (LB) zählen:
- Integrierte Integritätsprüfungen, die das schnelle Abschalten fehlerhafter Server ermöglichen.
- Automatisches Failover bei fehlgeschlagenen Zustandsprüfungen.
- Reduzierung der Latenz durch Weiterleitung des Datenverkehrs zum nächstgelegenen Server.
- Unterstützung auf DNS-Ebene und für HTTP(S), TCP und UDP.
- Sitzungsbindung, die sicherstellt, dass Anfragen an denselben Server geleitet werden.
Die gesamte Konfiguration kann bequem über das Cloudflare-Dashboard oder die API erfolgen.
Obwohl die nachfolgenden Anweisungen für Lastverteilung auf jeder Cloud-Plattform wie Azure, DigitalOcean oder Alibaba anwendbar sind, konzentrieren wir uns für die Demonstration auf GCP und AWS.
Details zur AWS- und GCP-Einrichtung
Für diese Demonstration habe ich einen Server sowohl auf der GCP- als auch auf der AWS-Plattform bereitgestellt, wobei folgende Konfigurationen verwendet wurden:
- Installation von Nginx.
- Hinzufügen einer benutzerdefinierten `index.html`-Seite, die anzeigt, dass die Seite vom jeweiligen Server bereitgestellt wird.
- Starten von Nginx, wodurch die Seite von beiden Servern aus erreichbar ist.
Im nächsten Schritt konfigurieren wir den Cloudflare LB.
Aktivierung des Cloudflare Load Balancers
Ich verwende für dieses Beispiel eine bereits verfügbare Domain (bloggerflare.com).
Hinweis: Der Cloudflare Load Balancer ist nicht kostenlos und die Preisgestaltung beginnt bei 5 Dollar pro Monat.
Ich gehe davon aus, dass Sie bereits ein Cloudflare-Konto besitzen. Wenn nicht, können Sie eine Domain erstellen und hinzufügen, wie in meinen früheren Anleitungen beschrieben.
- Melden Sie sich bei Cloudflare an und wählen Sie die Domain aus, für die Sie den Lastausgleich aktivieren möchten.
- Navigieren Sie zur Registerkarte „Traffic“ und aktivieren Sie den Load Balancer.
- Konfigurieren Sie die Funktionen entsprechend Ihren Bedürfnissen. Für diese Demonstration verwende ich eine minimale Konfiguration.
Wenn Sie möchten, dass Anfragen an den nächstgelegenen Server weitergeleitet werden, müssen Sie Geo-Routing aktivieren.
- Bestätigen Sie das Abonnement und aktivieren Sie es.
Sie können mit zwei Ursprungsservern und einem Integritätsprüfungsintervall von einer Minute ab 5 US-Dollar pro Monat beginnen. Die Infrastruktur ist heutzutage sehr erschwinglich. Vor wenigen Jahren wäre ein Cloud Load Balancer zu diesem Preis noch undenkbar gewesen.
Dies zeigt, dass der Cloudflare LB aktiviert ist und für die Konfiguration bereitsteht.
Erstellung des Cloudflare LB
Nach einigen Sekunden ist das Abonnement bestätigt und Sie werden zur Traffic-Seite weitergeleitet.
- Klicken Sie auf „Load Balancer erstellen“.
- Geben Sie die Domain an, für die Sie den Ausgleich einrichten möchten.
- Erweitern Sie die „Sitzungsaffinität“ und wählen Sie „Durch Cloudflare-Cookie“, falls Sie die Sitzungsbindung aktivieren möchten.
- Geben Sie einen Poolnamen an, welcher für den Ursprungsserver steht (Server, an den der Datenverkehr weitergeleitet werden soll).
- Als Nächstes konfigurieren Sie die Zustandsprüfung.
Eine Zustandsprüfung ist unerlässlich. Cloudflare stoppt das Senden von Datenverkehr an einen fehlerhaften Server, sobald eine Zustandsprüfung fehlschlägt.
- Wenn Ihr Server auf Port 80 lauscht, wählen Sie HTTP oder HTTPS für Port 443.
Cloudflare ermöglicht Ihnen auch die Konfiguration erweiterter Zustandsprüfungseinstellungen, wie z.B.:
- GET- oder HEAD-Methode.
- Erwarteter HTTP-Statuscode.
- Inhaltsvalidierung im Antworttext.
- Anzahl der Versuche, bevor ein Server als gesund oder ungesund eingestuft wird.
- Überprüfung des Header-Namens.
Speichern Sie die Konfiguration und stellen Sie sie bereit.
- Der Load Balancer führt eine Zustandsprüfung durch. Nach wenigen Sekunden sollte der Status als fehlerfrei angezeigt werden.
Der Cloudflare Load Balancer ist nun bereit, Datenverkehr aus der ganzen Welt zu empfangen und an die konfigurierten Ursprungsserver weiterzuleiten.
Testen des Load Balancers
Führen wir einen grundlegenden Test durch, um die Funktionalität zu überprüfen.
- Rufen Sie die Domain im Browser auf.
Das ist wunderbar!
Der LB hat eine Anfrage an die Google Cloud VM weitergeleitet und eine Antwort erhalten. Die Anfrage ist auch in den Nginx-Logs sichtbar.
162.158.167.174 - - [19/Dec/2017:10:25:41 +0000] "GET / HTTP/1.1" 304 0 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.84 Safari/537.36"
- Deaktivieren Sie Nginx auf GCP und rufen Sie die Seite erneut auf.
- Wie erwartet, wird die Seite nun von AWS bereitgestellt.
Der LB hat das Mitglied des GCP-Pools deaktiviert.
In den Nginx-Zugriffsprotokollen wird standardmäßig die Cloudflare-IP angezeigt. Wenn Sie die Client-IP wiederherstellen möchten, finden Sie hier eine Anleitung.
Fazit
Die Implementierung eines Cloudflare Load Balancers ist unkompliziert und kann in kurzer Zeit erfolgen. Wenn Sie eine hohe Verfügbarkeit zwischen mehreren Rechenzentren oder Servern benötigen, sollten Sie es ausprobieren.
Hat Ihnen dieser Artikel gefallen? Teilen Sie ihn mit anderen!