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

MySQL: MySQL-Funktionen

1. Integrierte Funktionen 1. Mathematische Funkti...

Untersuchung des Wertes des Positionsattributs in CSS (Zusammenfassung)

Das CSS-Positionsattribut gibt den Positionierung...

Webdesign-TabIndex-Element

TabIndex dient zum Drücken der Tabulatortaste, um ...

Detaillierte Erklärung wichtiger Kaskadierungskonzepte in CSS

Kürzlich stieß ich im Verlauf des Projekts auf ei...

MySQL kann tatsächlich verteilte Sperren implementieren

Vorwort Im vorherigen Artikel habe ich Ihnen anha...

Einige Einstellungen von Div bezüglich Rahmen und Transparenz

rahmen: Stil = „Rahmenstil: durchgezogen; Rahmenbr...

Ändern Sie den Stil des HTML-Textkörpers in JS

Inhaltsverzeichnis 1. Ursprüngliche Definition 2....

So implementieren Sie einen Kennwortstärke-Detektor in React

Inhaltsverzeichnis Vorwort verwenden Komponentens...

Einige Tipps zur Beschleunigung der Entwicklung von WeChat-Miniprogrammen

1. Erstellen Sie eine Seite mit app.json Gemäß un...

Wie lang ist eine Funktion in js?

Inhaltsverzeichnis Vorwort Warum Wie viel kostet ...