1. Einleitung In diesem Artikel wird beschrieben, wie Sie mit Docker Swarm einen Nebula Graph-Cluster bereitstellen. 2. Aufbau von Nebelhaufen 2.1 Umweltvorbereitung Maschinenvorbereitung
Stellen Sie vor der Installation sicher, dass Docker auf allen Computern installiert ist. 2.2 Swarm-Cluster initialisieren Auf dem Rechner 192.168.1.166 ausführen $ Docker Swarm init --advertise-addr 192.168.1.166 Swarm initialisiert: Der aktuelle Knoten (dxn1zf6l61qsb1josjja83ngz) ist jetzt ein Manager. Um diesem Schwarm einen Arbeiter hinzuzufügen, führen Sie den folgenden Befehl aus: Docker-Schwarm beitreten \ --token SWMTKN-1-49nj1cmql0jkz5s954yi3oex3nedyz0fb0xx14ie39trti4wxv-8vxv8rssmk743ojnwacrr2e7c \ 192.168.1.166:2377 Um diesem Swarm einen Manager hinzuzufügen, führen Sie „Docker Swarm Join-Token Manager“ aus und folgen Sie den Anweisungen. 2.3 Einem Worker-Knoten beitreten Treten Sie gemäß der Init-Eingabeaufforderung dem Swarm-Worker-Knoten bei und führen Sie ihn unter 192.168.1.167 bzw. 192.168.1.168 aus. Docker-Schwarm beitreten \ --token SWMTKN-1-49nj1cmql0jkz5s954yi3oex3nedyz0fb0xx14ie39trti4wxv-8vxv8rssmk743ojnwacrr2e7c \ 192.168.1.166:2377 2.4 Überprüfen des Clusters Docker-Knoten ls ID HOSTNAME STATUS VERFÜGBARKEIT MANAGER STATUS ENGINE VERSION h0az2wzqetpwhl9ybu76yxaen * KF2-DATA-166 Bereit Aktiv Erreichbar 18.06.1-ce q6jripaolxsl7xqv3cmv5pxji KF2-DATA-167 Bereit Aktiver Leiter 18.06.1-ce h1iql1uvm7123h3gon9so69dy KF2-DATA-168 Bereit Aktiv 18.06.1-ce 2.5 Docker-Stack konfigurieren vi docker-stack.yml Konfigurieren Sie Folgendes Version: '3.6' Leistungen: metad0: Bild: vesoft/nebula-metad:nightly Umgebungsdatei: - ./nebula.env Befehl: – –meta_server_addrs=192.168.1.166:45500,192.168.1.167:45500,192.168.1.168:45500 – –local_ip=192.168.1.166 – –ws_ip=192.168.1.166 – --port=45500 – –data_path=/Daten/Meta – –log_dir=/Protokolle - --v=0 – --minloglevel=2 einsetzen: Replikate: 1 Neustartrichtlinie: Bedingung: bei Fehler Platzierung: Einschränkungen: - node.hostname == KF2-DATA-166 Gesundheitscheck: Test: ["CMD", "curl", "-f", "http://192.168.1.166:11000/status"] Intervall: 30s Zeitüberschreitung: 10 s Wiederholungsversuche: 3 Startzeitraum: 20 s Häfen: - Ziel: 11000 veröffentlicht: 11000 Protokoll: TCP Modus: Host - Ziel: 11002 veröffentlicht: 11002 Protokoll: TCP Modus: Host - Ziel: 45500 veröffentlicht: 45500 Protokoll: TCP Modus: Host Bände: – data-metad0:/data/meta – logs-metad0:/logs Netzwerke: - Nebel-Netz metad1: Bild: vesoft/nebula-metad:nightly Umgebungsdatei: - ./nebula.env Befehl: – –meta_server_addrs=192.168.1.166:45500,192.168.1.167:45500,192.168.1.168:45500 – –local_ip=192.168.1.167 – –ws_ip=192.168.1.167 – --port=45500 – –data_path=/Daten/Meta – –log_dir=/Protokolle - --v=0 – --minloglevel=2 einsetzen: Replikate: 1 Neustartrichtlinie: Bedingung: bei Fehler Platzierung: Einschränkungen: - node.hostname == KF2-DATA-167 Gesundheitscheck: Test: ["CMD", "curl", "-f", "http://192.168.1.167:11000/status"] Intervall: 30s Zeitüberschreitung: 10 s Wiederholungsversuche: 3 Startzeitraum: 20 s Häfen: - Ziel: 11000 veröffentlicht: 11000 Protokoll: TCP Modus: Host - Ziel: 11002 veröffentlicht: 11002 Protokoll: TCP Modus: Host - Ziel: 45500 veröffentlicht: 45500 Protokoll: TCP Modus: Host Bände: – data-metad1:/Daten/Meta – logs-metad1:/logs Netzwerke: - Nebel-Netz metad2: Bild: vesoft/nebula-metad:nightly Umgebungsdatei: - ./nebula.env Befehl: – –meta_server_addrs=192.168.1.166:45500,192.168.1.167:45500,192.168.1.168:45500 – –local_ip=192.168.1.168 – –ws_ip=192.168.1.168 – --port=45500 – –data_path=/Daten/Meta – –log_dir=/Protokolle - --v=0 – --minloglevel=2 einsetzen: Replikate: 1 Neustartrichtlinie: Bedingung: bei Fehler Platzierung: Einschränkungen: - node.hostname == KF2-DATA-168 Gesundheitscheck: Test: ["CMD", "curl", "-f", "http://192.168.1.168:11000/status"] Intervall: 30s Zeitüberschreitung: 10 s Wiederholungsversuche: 3 Startzeitraum: 20 s Häfen: - Ziel: 11000 veröffentlicht: 11000 Protokoll: TCP Modus: Host - Ziel: 11002 veröffentlicht: 11002 Protokoll: TCP Modus: Host - Ziel: 45500 veröffentlicht: 45500 Protokoll: TCP Modus: Host Bände: – data-metad2:/Daten/Meta – logs-metad2:/logs Netzwerke: - Nebel-Netz Speicherd0: Bild: vesoft/nebula-storaged:nightly Umgebungsdatei: - ./nebula.env Befehl: – –meta_server_addrs=192.168.1.166:45500,192.168.1.167:45500,192.168.1.168:45500 – –local_ip=192.168.1.166 – –ws_ip=192.168.1.166 – --port=44500 - --data_path=/Daten/Speicher – –log_dir=/Protokolle - --v=0 – --minloglevel=2 einsetzen: Replikate: 1 Neustartrichtlinie: Bedingung: bei Fehler Platzierung: Einschränkungen: - node.hostname == KF2-DATA-166 hängt ab von: -metad0 -metad1 -metad2 Gesundheitscheck: Test: ["CMD", "curl", "-f", "http://192.168.1.166:12000/status"] Intervall: 30s Zeitüberschreitung: 10 s Wiederholungsversuche: 3 Startzeitraum: 20 s Häfen: - Ziel: 12000 veröffentlicht: 12000 Protokoll: TCP Modus: Host - Ziel: 12002 veröffentlicht: 12002 Protokoll: TCP Modus: Host Bände: – data-storaged0:/Daten/Speicher – logs-storaged0:/logs Netzwerke: - Nebel-Netz Speicherd1: Bild: vesoft/nebula-storaged:nightly Umgebungsdatei: - ./nebula.env Befehl: – –meta_server_addrs=192.168.1.166:45500,192.168.1.167:45500,192.168.1.168:45500 – –local_ip=192.168.1.167 – –ws_ip=192.168.1.167 – --port=44500 - --data_path=/Daten/Speicher – –log_dir=/Protokolle - --v=0 – --minloglevel=2 einsetzen: Replikate: 1 Neustartrichtlinie: Bedingung: bei Fehler Platzierung: Einschränkungen: - node.hostname == KF2-DATA-167 hängt ab von: -metad0 -metad1 -metad2 Gesundheitscheck: Test: ["CMD", "curl", "-f", "http://192.168.1.167:12000/status"] Intervall: 30s Zeitüberschreitung: 10 s Wiederholungsversuche: 3 Startzeitraum: 20 s Häfen: - Ziel: 12000 veröffentlicht: 12000 Protokoll: TCP Modus: Host - Ziel: 12002 veröffentlicht: 12004 Protokoll: TCP Modus: Host Bände: – data-storaged1:/Daten/Speicher – Protokolle gespeichert1:/Protokolle Netzwerke: - Nebel-Netz Speicherd2: Bild: vesoft/nebula-storaged:nightly Umgebungsdatei: - ./nebula.env Befehl: – –meta_server_addrs=192.168.1.166:45500,192.168.1.167:45500,192.168.1.168:45500 – –local_ip=192.168.1.168 – –ws_ip=192.168.1.168 – --port=44500 – –data_path=/Daten/Speicher – –log_dir=/Protokolle - --v=0 – --minloglevel=2 einsetzen: Replikate: 1 Neustartrichtlinie: Bedingung: bei Fehler Platzierung: Einschränkungen: - node.hostname == KF2-DATA-168 hängt ab von: -metad0 -metad1 -metad2 Gesundheitscheck: Test: ["CMD", "curl", "-f", "http://192.168.1.168:12000/status"] Intervall: 30s Zeitüberschreitung: 10 s Wiederholungsversuche: 3 Startzeitraum: 20 s Häfen: - Ziel: 12000 veröffentlicht: 12000 Protokoll: TCP Modus: Host - Ziel: 12002 veröffentlicht: 12006 Protokoll: TCP Modus: Host Bände: – data-storaged2:/Daten/Speicher - Protokolle-gespeichert2:/Protokolle Netzwerke: - Nebel-Netz graphd1: Bild: vesoft/nebula-graphd:nightly Umgebungsdatei: - ./nebula.env Befehl: – –meta_server_addrs=192.168.1.166:45500,192.168.1.167:45500,192.168.1.168:45500 – --port=3699 – –ws_ip=192.168.1.166 – –log_dir=/Protokolle - --v=0 – --minloglevel=2 einsetzen: Replikate: 1 Neustartrichtlinie: Bedingung: bei Fehler Platzierung: Einschränkungen: - node.hostname == KF2-DATA-166 hängt ab von: -metad0 -metad1 -metad2 Gesundheitscheck: Test: ["CMD", "curl", "-f", "http://192.168.1.166:13000/status"] Intervall: 30s Zeitüberschreitung: 10 s Wiederholungsversuche: 3 Startzeitraum: 20 s Häfen: - Ziel: 3699 veröffentlicht: 3699 Protokoll: TCP Modus: Host - Ziel: 13000 veröffentlicht: 13000 Protokoll: TCP # Modus: Host - Ziel: 13002 veröffentlicht: 13002 Protokoll: TCP Modus: Host Bände: - Protokolle-graphd:/Protokolle Netzwerke: - Nebel-Netz graphd2: Bild: vesoft/nebula-graphd:nightly Umgebungsdatei: - ./nebula.env Befehl: – –meta_server_addrs=192.168.1.166:45500,192.168.1.167:45500,192.168.1.168:45500 – --port=3699 – –ws_ip=192.168.1.167 – –log_dir=/Protokolle - --v=2 – --minloglevel=2 einsetzen: Replikate: 1 Neustartrichtlinie: Bedingung: bei Fehler Platzierung: Einschränkungen: - node.hostname == KF2-DATA-167 hängt ab von: -metad0 -metad1 -metad2 Gesundheitscheck: Test: ["CMD", "curl", "-f", "http://192.168.1.167:13001/status"] Intervall: 30s Zeitüberschreitung: 10 s Wiederholungsversuche: 3 Startzeitraum: 20 s Häfen: - Ziel: 3699 veröffentlicht: 3640 Protokoll: TCP Modus: Host - Ziel: 13000 veröffentlicht: 13001 Protokoll: TCP Modus: Host - Ziel: 13002 veröffentlicht: 13003 Protokoll: TCP # Modus: Host Bände: - logs-graphd2:/logs Netzwerke: - Nebel-Netz graphd3: Bild: vesoft/nebula-graphd:nightly Umgebungsdatei: - ./nebula.env Befehl: – –meta_server_addrs=192.168.1.166:45500,192.168.1.167:45500,192.168.1.168:45500 – --port=3699 – –ws_ip=192.168.1.168 – –log_dir=/Protokolle - --v=0 – --minloglevel=2 einsetzen: Replikate: 1 Neustartrichtlinie: Bedingung: bei Fehler Platzierung: Einschränkungen: - node.hostname == KF2-DATA-168 hängt ab von: -metad0 -metad1 -metad2 Gesundheitscheck: Test: ["CMD", "curl", "-f", "http://192.168.1.168:13002/status"] Intervall: 30s Zeitüberschreitung: 10 s Wiederholungsversuche: 3 Startzeitraum: 20 s Häfen: - Ziel: 3699 veröffentlicht: 3641 Protokoll: TCP Modus: Host - Ziel: 13000 veröffentlicht: 13002 Protokoll: TCP # Modus: Host - Ziel: 13002 veröffentlicht: 13004 Protokoll: TCP Modus: Host Bände: - logs-graphd3:/logs Netzwerke: - Nebel-Netz Netzwerke: Nebel-Netz: extern: wahr anfügbar: wahr Name: Gastgeber Bände: Datenmetad0: Protokolle-Metadaten0: Datenmetad1: Protokollmetadaten1: Datenmetad2: Protokolle-Metadaten2: gespeicherte Daten0: Protokolle gespeichert0: gespeicherte Daten1: gespeicherte Protokolle1: gespeicherte Daten2: gespeicherte Protokolle2: Protokolle-graphd: Protokolle-graphd2: Protokolle-graphd3: docker-stack.yml
Fügen Sie den folgenden Inhalt hinzu TZ = UTC USER=root Nebel.env 2.6 Starten Sie den Nebelhaufen Docker-Stack stellt Nebula -c docker-stack.yml bereit 3. Cluster-Lastausgleich und Hochverfügbarkeitskonfiguration Der Nebula Graph-Client verfügt derzeit (1.X) nicht über Funktionen zum Lastenausgleich, sondern wählt nach dem Zufallsprinzip einen Graphd aus, mit dem eine Verbindung hergestellt wird. Daher müssen Sie beim Einsatz in der Produktion den Lastausgleich und die Hochverfügbarkeit selbst durchführen. Abbildung 3.1 Die gesamte Bereitstellungsarchitektur ist in drei Schichten unterteilt: Datendienstschicht, Lastausgleichsschicht und Hochverfügbarkeitsschicht. Wie in Abbildung 3.1 dargestellt Lastenausgleichsschicht: gleicht die Clientanforderungen aus und verteilt sie an die darunterliegende Datendienstschicht. Hochverfügbarkeitsschicht: Diese Schicht implementiert die Hochverfügbarkeit von Haproxy, stellt den Dienst der Lastausgleichsschicht sicher und gewährleistet somit den normalen Dienst des gesamten Clusters. 3.1 Lastenausgleichskonfiguration Haproxy wird mit Docker-Compose konfiguriert. Bearbeiten Sie die folgenden drei Dateien separat Dockerfile fügt den folgenden Inhalt hinzu VON haproxy:1.7 KOPIEREN Sie haproxy.cfg /usr/local/etc/haproxy/haproxy.cfg EXPOSE 3640 Docker-Datei Fügen Sie docker-compose.yml Folgendes hinzu Version: "3.2" Leistungen: Haproxy: Containername: Haproxy bauen: . Bände: - ./haproxy.cfg:/usr/local/etc/haproxy/haproxy.cfg Häfen: -3640:3640 Neustart: immer Netzwerke: - app_net Netzwerke: app_net: extern: wahr docker-compose.yml Fügen Sie Folgendes zu haproxy.cfg hinzu weltweit Daemon maxconn 30000 Protokoll 127.0.0.1 local0 info Protokoll 127.0.0.1 local1 Warnung Vorgabewerte Protokollformat %hr\ %ST\ %B\ %Ts globales Protokoll Modus http Option http-keep-alive Timeout beim Verbinden: 5000 ms Timeout-Client: 10.000 ms Timeout-Server 50000ms Timeout HTTP-Anfrage 20000ms # Passen Sie Ihre eigenen Frontends und Backends an und hören Sie sich die Konfiguration an #BRAUCH hören Sie Graphd-Cluster binden *:3640 TCP-Modus maxconn 300 Rundenturnier Server Server1 192.168.1.166:3699 Maxconn 300 prüfen Server Server2 192.168.1.167:3699 Maxconn 300 prüfen Server Server3 192.168.1.168:3699 Maxconn 300 prüfen Hörstatistiken binden *:1080 Statistikaktualisierung 30 s Statistik-URI /Statistiken 3.2 Starten Sie Haproxy docker-compose up -d 3.2 Hochverfügbarkeitskonfiguration Hinweis: Um Keepalive zu konfigurieren, müssen Sie im Voraus eine VIP (virtuelle IP) vorbereiten. In der folgenden Konfiguration ist 192.168.1.99 die virtuelle IP. Nehmen Sie die folgende Konfiguration auf 192.168.1.166, 192.168.1.167 und 192.168.1.168 vor Installieren Sie Keepalived apt-get update und apt-get upgrade und apt-get install keepalived -y Ändern Sie die Keepalived-Konfigurationsdatei /etc/keepalived/keepalived.conf (nehmen Sie auf den drei Maschinen die folgende Konfiguration vor, und die Priorität sollte auf unterschiedliche Werte eingestellt werden, um die Priorität zu bestimmen). 192.168.1.166 Maschinenkonfiguration global_defs { router_id lb01 #Identifikationsinformationen, nur ein Name; } vrrp_script chk_haproxy { Skript "killall -0 haproxy" Intervall 2 } vrrp_instance VI_1 { Zustand MEISTER Schnittstelle ens160 virtuelle_Router_ID 52 Priorität 999 # Stellen Sie das Zeitintervall für die Synchronisierungsprüfung zwischen MASTER- und BACKUP-Load Balancer in Sekunden ein advert_int 1 # Legen Sie den Authentifizierungstyp und die Kennwortauthentifizierung fest { # Legen Sie den Authentifizierungstyp fest. Es gibt zwei Haupttypen: PASS und AH auth_type PASS # Legen Sie das Authentifizierungskennwort fest. Unter derselben vrrp_instance müssen MASTER und BACKUP dasselbe Kennwort verwenden, um normal kommunizieren zu können. auth_pass amber1 } virtuelle_IP-Adresse { # Die virtuelle IP ist 192.168.1.99/24; die gebundene Schnittstelle ist ens160; der Alias ist ens169:1, die primäre und die Backup-Schnittstelle sind gleich 192.168.1.99/24 dev ens160 label ens160:1 } Titel_Skript { chk_haproxy } } 167 Maschinenkonfiguration global_defs { router_id lb01 #Identifikationsinformationen, nur ein Name; } vrrp_script chk_haproxy { Skript "killall -0 haproxy" Intervall 2 } vrrp_instance VI_1 { Status BACKUP Schnittstelle ens160 virtuelle_Router_ID 52 Priorität 888 # Stellen Sie das Zeitintervall für die Synchronisierungsprüfung zwischen MASTER- und BACKUP-Load Balancer in Sekunden ein advert_int 1 # Legen Sie den Authentifizierungstyp und die Kennwortauthentifizierung fest { # Legen Sie den Authentifizierungstyp fest. Es gibt zwei Haupttypen: PASS und AH auth_type PASS # Legen Sie das Authentifizierungskennwort fest. Unter derselben vrrp_instance müssen MASTER und BACKUP dasselbe Kennwort verwenden, um normal kommunizieren zu können. auth_pass amber1 } virtuelle_IP-Adresse { # Die virtuelle IP ist 192.168.1.99/24; die gebundene Schnittstelle ist ens160; der Alias ist ens160:1, die primäre und die Backup-Schnittstelle sind gleich 192.168.1.99/24 dev ens160 label ens160:1 } Titel_Skript { chk_haproxy } } 168 Maschinenkonfiguration global_defs { router_id lb01 #Identifikationsinformationen, nur ein Name; } vrrp_script chk_haproxy { Skript "killall -0 haproxy" Intervall 2 } vrrp_instance VI_1 { Status BACKUP Schnittstelle ens160 virtuelle_Router_ID 52 Priorität 777 # Stellen Sie das Zeitintervall für die Synchronisierungsprüfung zwischen MASTER- und BACKUP-Load Balancer in Sekunden ein advert_int 1 # Legen Sie den Authentifizierungstyp und die Kennwortauthentifizierung fest { # Legen Sie den Authentifizierungstyp fest. Es gibt zwei Haupttypen: PASS und AH auth_type PASS # Legen Sie das Authentifizierungskennwort fest. Unter derselben vrrp_instance müssen MASTER und BACKUP dasselbe Kennwort verwenden, um normal kommunizieren zu können. auth_pass amber1 } virtuelle_IP-Adresse { # Die virtuelle IP ist 192.168.1.99/24; die gebundene Schnittstelle ist ens160; der Alias ist ens160:1, die primäre und die Backup-Schnittstelle sind gleich 192.168.1.99/24 dev ens160 label ens160:1 } Titel_Skript { chk_haproxy } } Keepalived-bezogene Befehle # Keepalived starten systemctl start keepalived # Aktivieren Sie Keepalived, um beim Booten automatisch zu starten. systemctl enable keeplived # Keepalived neu starten systemctl Neustart keepalived IV. Sonstiges Wie erfolgt die Offlinebereitstellung? Ändere das Bild einfach in eine private Bildbibliothek. Bei Fragen kannst du uns gerne kontaktieren. Dies ist das Ende dieses Artikels zum schnellen Bereitstellen eines Nebula Graph-Clusters mit Docker Swarm. Weitere Informationen zum Bereitstellen eines Nebula Graph-Clusters mit Docker 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:
|
<<: MySql-Gruppierung und zufälliges Abrufen eines Datenelements aus jeder Gruppe
>>: JavaScript zum Erzielen eines einfachen Drag-Effekts
Inhaltsverzeichnis 1. Implementieren Sie die Komp...
Schritt 1: Ändern Sie DATABASES in setting.py # D...
Ich habe vor einiger Zeit ein Projekt entwickelt....
Bibliotheksverwaltung Erstellen einer Bibliothek ...
Als ich kürzlich an einem Frontend-Docking-Funkti...
Vorwort: Apropos Sandboxen: Wir denken vielleicht...
1. Installieren Sie grundlegende Komponenten Führ...
Dieser Statuscode gibt Auskunft über den Status d...
1. Erstellen Sie einen Runner-Container mk@mk-pc:...
Transaktionale Merkmale 1. Atomarität: Nach dem S...
Inhaltsverzeichnis Docker-Version Installieren Si...
1. Projektdokumente 2. Verwenden Sie HTML und CSS...
Inhaltsverzeichnis Unterschied zwischen MVC und M...
Generieren einer Zertifikatskette Verwenden Sie d...
Inhaltsverzeichnis Was ist nodejs Installieren Si...