Bringen Sie Ihnen bei, schnell ein Webclusterprojekt basierend auf Nginx zu erstellen

Bringen Sie Ihnen bei, schnell ein Webclusterprojekt basierend auf Nginx zu erstellen

1. Projektumgebung

8 Centos7/8-Server, Nginx 1.21.1, ab, NFS4,
Zabbix, Keepalived 2.1.5, Ansible, Bind

2. Projektbeschreibung

Erstellen Sie ein 4/7-Layer-Load-Balancing-Webclusterprojekt auf Basis von Nginx

Simulieren Sie die Geschäftsumgebung eines Unternehmens, um einen Webcluster mit hoher Parallelität und Verfügbarkeit aufzubauen.

Testen Sie mit Stresstests die Leistung des gesamten Clusters, identifizieren Sie Engpässe und führen Sie kontinuierliche Optimierungen durch.

3. Projektschritte

1. Installation

Installieren und Bereitstellen von Ansible-Diensten, Einrichten eines kennwortfreien Kanals mit anderen Servern und Schreiben eines Playbooks zum Installieren und Bereitstellen von Nginx und Zabbix

2. Konfiguration

Stellen Sie Nginx und Zabbix über Ansible bereit, konfigurieren Sie die lange Nginx-Verbindung, die Anzahl der Parallelitäten, die Anzahl der Arbeitsprozesse, die Geschwindigkeitsbegrenzung und die zugehörige Konfiguration von Zabbix, laden Sie Website-Inhalte hoch (erstellen Sie ein WordPress-Blogsystem oder eine Website mit Flask-Schnittstelle usw.).

3. Lastenausgleich implementieren

Verwenden Sie zwei Server als Dual-VIP-Load Balancer, verwenden Sie die 4/7-Layer-Load Balancing-Funktion von nginx und verwenden Sie den gewichteten Round-Robin-Planungsalgorithmus

4. Erstellen Sie den Server

Erstellen Sie einen NFS-Server, um die Datenkonsistenz der Website sicherzustellen, und richten Sie den Backend-Realserver/Backend-Server so ein, dass er beim Booten automatisch gemountet wird.

5. Stresstests

Verwenden Sie die AB-Software, um Stresstests auf dem Client durchzuführen

6. Überwachung

Fügen Sie relevante Server und Überwachungselemente auf der Zabbix/Prometheus-Überwachungsplattform hinzu, um die Leistung des gesamten Webclusters zu überwachen - „Zabbi

7. Hohe Verfügbarkeit

Verwenden Sie Keepalived-Software, um den Load Balancer hochverfügbar zu machen und einen einzelnen Ausfallpunkt zu verhindern – „Keepalived“

8. Domänennamenauflösung

Erstellen Sie einen DNS-Server, um die Domänennamenauflösung für den gesamten Webcluster durchzuführen. Binden Sie durch Lastenausgleich der DNS-Domänennamenauflösung zwei VIPs für den Benutzerzugriff an einen Domänennamen und importieren Sie so den Datenverkehr in verschiedene Lastenausgleichsmodule.

9. Leistung verbessern

Versuchen Sie, den gesamten Webcluster zu optimieren, um die Leistung zu verbessern: Optimieren Sie Kernelparameter, Nginx-Parameter, erwägen Sie das Hinzufügen eines Caches und anderer Maßnahmen

10. Verwenden Sie Ansible zum Schreiben von Playbooks

Versuchen Sie, mit Ansible Playbooks zum Installieren aller Software zu schreiben: nginx, zabbix, keepalived, ab, nfs usw.

IV. Projektzusammenfassung

1. Verstehen Sie nach und nach das Konzept des Clusters, von 1 bis zu mehreren
2. Verfügen Sie über ein gewisses Verständnis von hoher Leistung und hoher Verfügbarkeit, haben Sie ein gewisses Verständnis der Leistungsindikatoren und -parameter des Systems, haben Sie ein gewisses Verständnis des Brain-Split-Phänomens und wissen Sie, wie Sie es vermeiden können
3. Ich habe ein gewisses Verständnis für die Bereitstellung und Installation mit einem Klick, was sehr praktisch und schnell ist. Ich werde in Zukunft bessere Automatisierungsvorgänge ausprobieren -- 》ansible
4. Verschaffen Sie sich einen Gesamtüberblick über den Engpass des gesamten Clusters bei Stresstests
5. Ich verfüge über ein gewisses Verständnis von Systemoptimierung und bin der Meinung, dass die Leistung ohne Kostensteigerung verbessert werden muss.
6. Ich habe auch einige Erfahrungen mit der Überwachung gesammelt. Die Überwachung ist eine sehr grundlegende Betriebs- und Wartungsarbeit. Sie kann Probleme im Voraus erkennen und frühzeitig Warnungen ausgeben.
7. Grundstein für zukünftiges Cluster-Lernen im großen Maßstab legen und allgemeine Planungsfähigkeiten verbessern
8. Die Fehlerbehebungsfunktionen wurden verbessert
9. Verfügen Sie über ein gewisses Verständnis für die Koordination vieler grundlegender Funktionssoftware, wie z. B.: Zabbix, Keepalived, Ansible, Nginx, NFS, Ab, Bind usw.
10. Verfügen Sie über ein gewisses Verständnis von DNS-Lastausgleich und Layer 4/7-Lastausgleich

5. Hinweise zum Erstellen einer Website

1. Website-Inhalte, die Sie bestimmen müssen: Blog, Schnittstellenwebsite, Testseite usw. Probleme mit der Datenkonsistenz: NFS, SAN, Cloud-Speicher, NAS usw.

2. Optimierung der Kernel-Parameter:

[root@docker ~]# sysctl -p
net.ipv4.ip_forward = 0
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.default.accept_source_route = 0
kernel.core_uses_pid = 1
net.ipv4.tcp_syncookies = 1
kernel.msgmnb = 65536
kernel.msgmax = 65536
net.ipv4.conf.all.promote_secondaries = 1
net.ipv4.conf.default.promote_secondaries = 1
net.ipv6.neigh.default.gc_thresh3 = 4096
net.ipv4.neigh.default.gc_thresh3 = 4096
kernel.softlockup_panic = 1
net.ipv6.conf.all.disable_ipv6 = 0
net.ipv6.conf.default.disable_ipv6 = 0
net.ipv6.conf.lo.disable_ipv6 = 0
kernel.shmmax = 68719476736
kernel.printk = 5
kernel.sysrq = 1
kernel.numa_balancing = 0
[root@docker ~]# ulimit
unbegrenzt
[root@docker ~]# ulimit -a
Kerndateigröße (Blöcke, -c) unbegrenzt
Datensegmentgröße (KB, -d) unbegrenzt
Planungspriorität (-e) 0
Dateigröße (Blöcke, -f) unbegrenzt
ausstehende Signale (-i) 14826
maximal gesperrter Speicher (KB, -l) 64
maximale Speichergröße (kByte, -m) unbegrenzt
Dateien öffnen (-n) 100001
Pipe-Größe (512 Bytes, -p) 8
POSIX-Nachrichtenwarteschlangen (Bytes, -q) 819200
Echtzeitpriorität (-r) 0
Stapelgröße (KB, -s) 8192
CPU-Zeit (Sekunden, -t) unbegrenzt
Maximale Benutzerprozesse (-u) 14826
virtueller Speicher (kByte, -v) unbegrenzt
Dateisperren (-x) unbegrenzt
[root@docker ~]

ab -c 2000 -n 100000 http://192.168.0.92/

Dies ist das Ende dieses Artikels zum Erstellen eines Webclusterprojekts auf Basis von nginx. Weitere relevante Inhalte zu nginx-Webclusterprojekten finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen!

Das könnte Sie auch interessieren:
  • Keepalived+Nginx+Tomcat-Beispielcode zur Implementierung eines hochverfügbaren Webclusters
  • Verwenden eines Software-Load-Balancers zum Implementieren eines Webserver-Clusters (iis+nginx)
  • nginx+apache+mysql+php+memcached+squid zum Erstellen einer Cluster-Webumgebung

<<:  Lösung für das Problem des Springens der Textposition, wenn das Suchtextfeld den Fokus verlässt

>>:  CSS Lieferadresse Parallelogramm Linienstil Beispielcode

Artikel empfehlen

10 tödliche semantische Fehler in der Webtypografie

<br />Dies stammt aus dem Inhalt von „Web Fr...

Lösung für das Problem, dass sich der mysql8.0.11-Client nicht anmelden kann

In diesem Artikel erfahren Sie, wie Sie das Probl...

Detaillierte Erklärung der grundlegenden Interaktion von Javascript

Inhaltsverzeichnis 1. So erhalten Sie Elemente Ho...

Detailliertes Beispiel der CSS3-Boxschatteneigenschaft

CSS3 – Schatten hinzufügen (mithilfe von Boxschat...

favico.ico --- Schritte zum Einrichten des Website-ICO-Symbols

1. Laden Sie die erfolgreich generierte Symboldate...

So zeichnen Sie eine vertikale Linie zwischen zwei Div-Tags in HTML

Als ich kürzlich eine Schnittstelle zeichnete, st...

...

Beispiel einer Autorisierungsüberprüfungsmethode von Nest.js

Inhaltsverzeichnis 0x0 Einführung 0x1 RBAC-Implem...

CSS-Animation kombiniert mit SVG zur Erzeugung eines Energieflusseffekts

Der endgültige Effekt ist wie folgt: Die Animatio...

Integrierte Objekte, Werttypen und Referenztypen in JavaScript-Objekten erklärt

Inhaltsverzeichnis Objekt Objektdefinition Iterie...

Beispielcode zur Implementierung eines 3D-Bucheffekts mit CSS

Schauen wir uns zunächst ohne Umschweife die Rend...