Hervorragende Software und praktische Tutorials
Verwenden von Cloudflare Workers zum Offloading von Websites
So verwenden Sie Cloudflare Workers zum Lastenausgleich, Cloudflare Konfiguration der Umleitung des Website-Verkehrs der Mitarbeiter, Codebeispiele für den Lastenausgleich von Cloudflare Workers, Implementierung einer gewichtsbasierten Verkehrsverteilung, Leistungsüberwachung und -optimierung von Cloudflare Workers!
Cloudflare-Mitarbeiter Cloudflare Workers ist eine leistungsstarke serverseitige JavaScript-Laufzeitumgebung, mit der Sie benutzerdefinierten Code im Edge-Netzwerk von Cloudflare ausführen können. Mit Cloudflare Workers können Sie den Website-Verkehr flexibel verwalten, Splitting implementieren undLastenausgleichDieser Artikel zeigt Ihnen, wie Sie Cloudflare Workers verwenden, umWebsite-UmleitungLaden, Verbessern der Website-Stabilität und -Leistung.
1. Erstellen eines Cloudflare-Workers
- Registrieren und anmelden: Zuerst müssen Sie sich auf der offiziellen Cloudflare-Website registrieren und bei Ihrem Konto anmelden.
- Erstellen eines Workers: Wählen Sie im Cloudflare-Dashboard die Option „Worker“ und klicken Sie auf die Schaltfläche „Dienst erstellen“. Geben Sie Ihrem Worker einen Namen und erstellen Sie den Dienst.
- Code schreiben: Sie können Ihren Worker-Code im Online-Editor von Cloudflare schreiben oder mithilfe einer lokalen Entwicklungsumgebung entwickeln und auf Cloudflare bereitstellen.
2. Implementierung eines grundlegenden Lastenausgleichs
Schreiben von Lastausgleichscode: Im Worker-Code können Sie JavaScript verwenden, um einen grundlegenden Lastenausgleich zu implementieren. Im Folgenden sehen Sie ein einfaches Beispiel, das den Datenverkehr auf mehrere Server umleitet:
const BACKENDS = [ 'https://backend1.example.com', 'https://backend2.example.com', 'https://backend3.example.com' ]; addEventListener('fetch', event => { event.respondWith(handleRequest(event.request)); }); asynchrone Funktion handleRequest(Anfrage) { const url = neue URL(Anfrage.url); const backend = BACKENDS[Math.floor(Math.random() * BACKENDS.length)]; url.hostname = neue URL(backend).hostname; return fetch(url.toString(), Anfrage); }
Dieser Codeausschnitt verteilt Anfragen nach dem Zufallsprinzip an
BACKENDS
Verschiedene Backend-Server in einem Array.Konfigurieren von Routing-Regeln: Richten Sie auf der Konfigurationsseite von Cloudflare Workers Routing-Regeln ein, um festzulegen, welche Anfragen den von Ihnen erstellten Worker verwenden sollen. Sie können diese Regeln basierend auf Pfad, Hostname oder anderen Anfrageattributen konfigurieren.
3. Implementieren eines gewichtsbasierten Lastenausgleichs
Gewichte einstellen: Wenn Sie den Datenverkehr nach bestimmten Gewichtungen verteilen möchten, können Sie den obigen Code ändern und Gewichtungen zur Bestimmung der Anforderungsverteilung verwenden. Das folgende Beispiel zeigt:
const BACKENDS = [ { url: 'https://backend1.example.com', Gewicht: 1 }, { url: 'https://backend2.example.com', Gewicht: 3 }, { url: 'https://backend3.example.com', Gewicht: 1 } ]; addEventListener('fetch', Ereignis => { event.respondWith(handleRequest(Ereignis.Anfrage)); }); asynchrone Funktion handleRequest(Anfrage) { const url = neue URL(Anfrage.URL); const backend = getWeightedBackend(); url.hostname = neue URL(backend.url).hostname; return fetch(url.toString(), Anfrage); } Funktion getWeightedBackend() { let totalWeight = BACKENDS.reduce((Summe, Backend) => Summe + Backend.Gewicht, 0); let random = Math.random() * Gesamtgewicht; für (let Backend von BACKENDS) { wenn (random < backend.weight) { return backend; } random -= backend.weight; } }
Dieser Code wählt den Backend-Server entsprechend der angegebenen Gewichtung aus und erreicht dadurch eine gewichtete Verteilung des Datenverkehrs.
4. Überwachung und Optimierung
- Überwachung der Mitarbeiterleistung: Verwenden Sie die Analysetools von Cloudflare, um die Worker-Leistung zu überwachen, einschließlich der Anfrageantwortzeit, Fehlerrate usw. Diese Daten können Ihnen dabei helfen, Ihre Lastausgleichsstrategie anzupassen, um die Leistung zu optimieren.
- Optimierung des Codes: Optimieren Sie Ihren Worker-Code basierend auf den Überwachungsergebnissen, um eine effiziente und stabile Lastverteilung sicherzustellen.
5. Testen und Bereitstellen
- Testarbeiter: Testen Sie vor der Bereitstellung die Funktionalität Ihres Workers mit den Testtools von Cloudflare, um sicherzustellen, dass er wie erwartet funktioniert.
- Bereitstellen in der Produktionsumgebung: Nachdem der Test erfolgreich war, stellen Sie den Worker in der Produktionsumgebung bereit und nehmen Sie Anpassungen basierend auf den Verkehrsbedingungen vor.
Praktisches Tutorial zu Cloudflare Workers
Nachdem der Domänenname auf der Cloudflare-Plattform gehostet wurde, wird Cloudflare Workers zum Lastenausgleich des Domänennamens der Website verwendet.
Hier sind einige Strategien zur Umleitung von Ressourcen:
- DNS-Round-Robin
- Open-Source-Plattformen Nginx, Apache usw.
- Loadloader-Dienste großer Cloud-Anbieter usw.
- CND
Zuerst wollte ich den Smart-DNS-Dienst der Cloudflare-Plattform ausprobieren, der jedoch kostenpflichtig ist ($5/Monat). Deshalb wollte ich ihn über Cloudflare Workers testen.
Registrieren Sie sich für ein Cloudflare-Konto
- Gehen Cloudflare Registrieren Sie ein Konto und hosten Sie den Domänennamen bei CF
- Das Hinzufügen eines CNAME-Eintrags wird
a.aaa.com
Auflösen in eine Server-IP - Das Hinzufügen eines A-Eintrags wird
b.aaa.com
Auflösen auf Server B IP - SSL/TLS ist im vollständig strikten Modus
- (muss) Proxy im DNS-Eintrag aktivieren (Xiaoju Cloud)
Arbeiter erstellen
- Gehe zu Arbeitern und Seiten
- wählen
Erstellen einer Anwendung
- Fügen Sie den folgenden Code ein
addEventListener('fetch', event => {event.respondWith(handleRequest(event.request)) }) // Zieldienst abfragen const TARGETS = [ 'a.aaa.com', 'b.aaa.com' ] async function handleRequest(request) {const url = new URL(request.url) url.hostname = getRandomServer() return await fetch(url, request) } // Jede Stunde zwischen anderen Zielen wechseln function getServerEveryHour() {const d = new Date() const h = d.getHours() return TARGETS[h%TARGETS.length] } // Jedes Mal zufälliges Ziel (achten Sie darauf, ob es eine domänenübergreifende Beziehung zwischen den Zielen gibt) function getRandomServer() {return TARGETS[Math.floor(Math.random() * TARGETS.length)] }
- Speichern und bereitstellen
Arbeiter verwenden
- Sehen Sie sich den neu erstellten Worker an und wählen Sie den Trigger auf der Detailseite aus
- Im RoutingKlicken Sie auf die SchnittstelleRouten hinzufügen
- Route: optional
aaa.com
, Platzhalter können verwendet werden.Spezifische sichtbare - Wählen Sie den Bereich aus, den Sie gerade erstellt haben.
aaa.com
- Route: optional
verifizieren
Klicken Sie auf die obere rechte Ecke der soeben erstellten Workers-Konfigurationsseite, um den JavaScript-Code zu bearbeiten, zu debuggen und in der Vorschau anzuzeigen.
Ändern Sie diesen Code, um zu überprüfen, ob die Umleitung wirksam ist:
// Zieldienst abfragen const TARGETS = [ 'a.aaa.com', 'b.aaa.com' ]
Aktualisieren Sie die Seite. Manchmal werden Sie feststellen, dass sie zu a.aaa.com geladen wird. Das bedeutet, dass die Konfiguration wirksam ist!