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 count: ausführliche Erklärung und Funktionsbeispielcode

Detaillierte Erklärung der MySQL-Anzahl Die Funkt...

Lösung für das Problem des MySQL-Datenverzögerungssprungs

Heute haben wir ein weiteres typisches Problem im...

Der Einsatz von MySQL Triggern und worauf zu achten ist

Inhaltsverzeichnis Über Trigger Verwendung von Tr...

Grundlegende Hinweise zu HTML und CSS (unbedingt für das Frontend lesen)

Als ich zum ersten Mal mit HTML in Berührung kam,...

Was Sie über die automatische ID-Inkrementierung in MySQL wissen müssen

Einführung: Wenn wir MySQL zum Erstellen einer Ta...

Eine detaillierte Erklärung, wie React Fiber funktioniert

Inhaltsverzeichnis Was ist React Fiber? Warum Rea...

Detaillierte Erläuterung des Überwachungsmethodenfalls von Vue

Überwachungsmethode in Vue betrachten Beachten Na...

Schritte für Vue3 zur Verwendung von Mitt für die Komponentenkommunikation

Inhaltsverzeichnis 1. Installation 2. Ins Projekt...

Nginx+FastDFS zum Erstellen eines Image-Servers

Installationsumgebung Centos Umgebungsabhängigkei...