So verwenden Sie Docker Compose zum Implementieren des Nginx-Lastausgleichs

So verwenden Sie Docker Compose zum Implementieren des Nginx-Lastausgleichs

Implementieren Sie den Nginx-Lastausgleich basierend auf Docker-Netzwerkverwaltung und Container-IP-Einstellungen

Alle Docker-Netzwerke anzeigen

Docker-Netzwerk ls

/*
NETZWERK-ID-NAME TREIBER-UMFANG
b832b168ca9a Brücke Brücke lokal
373be82d3a6a composetest_default Brücke lokal
a360425082c4 Host Host lokal
154f600f0e90 keine null lokal

*/

// composetest_default ist der Verzeichnisname, in dem sich die Datei docker-compose.yml bei der Einführung von Compose im vorherigen Artikel befindet.
// Daher erstellt der mit Docker-Compose erstellte Container standardmäßig ein Netzwerk mit dem Verzeichnisnamen als Netzwerknamen und ist vom Typ Dridge (Bridge).

Angeben der Container-IP-Adresse

Offizielle Website-Dokumentadresse: https://docs.docker.com/compose/compose-file/#ipv4_address-ipv6_address

Fahren Sie mit dem Schreiben der Datei docker-compose.yml aus dem vorherigen Artikel „12. Verwenden des Docker Compose Container Orchestration Tools“ fort.

Version: "3"
Leistungen:
  web1:
    Containername: web1
    Bild: "centos:httpd"
    Häfen:
      - „8080:80“
    privilegiert: wahr
    Bände:
      - "/app/www/web1/:/var/www/html/"
    Befehl: ['/usr/sbin/init']
    Netzwerke:
      nginx-lsb:
        IPv4-Adresse: 192.169.0.3
  web2:
    Containername: web2
    Bild: "centos:httpd"
    Häfen:
      - „8081:80“
    privilegiert: wahr
    Bände:
      - "/app/www/web2/:/var/www/html/"
    Befehl: ['/usr/sbin/init']
    Netzwerke:
      nginx-lsb:
        IPv4-Adresse: 192.169.0.2
Netzwerke:
  nginx-lsb:
    Treiber: Brücke
    ipam:
      Konfiguration:
        - Subnetz: 192.169.0.0/16

Starten Sie den Container mit Docker-Compose

docker-compose up -d

Überprüfen Sie, ob der Container gestartet ist und ob das Netzwerk nginx-lsb erstellt wurde

// Sie können den Containerstatus in der Containergruppe anzeigen, die durch die aktuelle Datei docker-compose.yml konfiguriert wurde docker-compose ps

Docker-Netzwerk ls

/*
NETZWERK-ID-NAME TREIBER-UMFANG
b832b168ca9a Brücke Brücke lokal
373be82d3a6a composetest_default Brücke lokal
de6f5b8df1c8 composetest_nginx-lsb Brücke lokal
a360425082c4 Host Host lokal
154f600f0e90 keine null lokal
*/

// Erstellt das nginx-lsb-Netzwerk, benannt nach dem Anfang der Containergruppe Projektdateiname_Netzwerkname

Netzwerk-nginx-lsb-Details anzeigen

Docker-Netzwerk überprüfen Composetest_nginx-lsb

// In den Details können Sie die IP-Adresse jedes Containers sehen, der dieses Netzwerk verwendet.

wie:

/*
...
 "Container": {
      "039aa860ef04f20a7566fdc943fb4398a61d2ad6dd3e373b17c86ac778af89e3": {
        "Name": "web2",
        "EndpointID": "1bc206661179e65999015f132c2889d3d4365b8d42b8a89cf9c260016fedd5ee",
        "MacAdresse": "02:42:c0:a9:00:02",
        "IPv4Adresse": "192.169.0.2/16",
        "IPv6Adresse": ""
      },
      "437ad7a07da8e46c0abaf845c4b08425338009fbe972bde69478cf47c75c315b": {
        "Name": "web1",
        "EndpointID": "5a36e602a5364ee9ad06e9816d09e3966d56ebf06b9394ebc25b8bcee9546607",
        "MacAdresse": "02:42:c0:a9:00:03",
        "IPv4Adresse": "192.169.0.3/16",
        "IPv6Adresse": ""
      }
    },
...
*/

Verwenden Sie die Umgebungsdatei env_file:

Es kann einfach so verstanden werden: Definieren Sie Variablen in docker-compose.yml und referenzieren Sie sie in externen .env-Dateien

Offizielle Dokumentationsadresse: https://docs.docker.com/compose/compose-file/#env_file

// Oder definieren Sie eine .env-Datei im Verzeichnis „composetest“, um die Variable „web1_addr=192.169.0.2“ zu speichern.
web2_addr=192.169.0.3

//Ändern Sie die Datei docker-compose.yml und fügen Sie die Variablendefinitionsversion hinzu: „3“
Leistungen:
  web1:
    Containername: web1
    Bild: "centos:httpd"
    Häfen:
      - „8080:80“
    privilegiert: wahr
    Bände:
      - "/app/www/web1/:/var/www/html/"
    Befehl: ['/usr/sbin/init']
    Netzwerke:
      nginx-lsb:
        IPv4-Adresse: ${web1_addr}
  web2:
    Containername: web2
    Bild: "centos:httpd"
    Häfen:
      - „8081:80“
    privilegiert: wahr
    Bände:
      - "/app/www/web2/:/var/www/html/"
    Befehl: ['/usr/sbin/init']
    Netzwerke:
      nginx-lsb:
        IPv4-Adresse: ${web2_addr}
Netzwerke:
  nginx-lsb:
    Treiber: Brücke
    ipam:
      Konfiguration:
        - Subnetz: 192.169.0.0/16

Starten Sie das Composetest-Projekt neu und überprüfen Sie die Netzwerkdetails, um zu bestätigen, ob die Container-IP erfolgreich festgelegt wurde

// Starten Sie das Composetest-Projekt neu docker-compose up -d

// Netzwerkdetails anzeigen Docker-Netzwerk überprüfen Composetest_nginx-lsb

Fügen Sie im Composetest-Projekt einen Nginx-Server als Lastenausgleichsserver hinzu

// Fügen Sie der .env-Datei eine Variable nginx_lsb hinzu
web1_addr=192.169.0.2
web2_addr=192.169.0.3
nginx_lsb=192.169.0.100

//Ändern Sie die Datei docker-compose.yml und fügen Sie die Variablendefinitionsversion hinzu: „3“
Leistungen:
  nginx-lsb:
    Containername: nginx-lsb
    Bild: „centos:nginx“
    Häfen: 
      - "8000:80"
    privilegiert: wahr
    Bände:
      – „/app/nginx/nginx.conf:/etc/nginx/nginx.conf“
    Netzwerke:
      nginx-lsb:
        IPv4-Adresse: ${nginx_lsb}
  web1:
    Containername: web1
    Bild: "centos:httpd"
    Häfen:
      - „8080:80“
    privilegiert: wahr
    Bände:
      - "/app/www/web1/:/var/www/html/"
    Befehl: ['/usr/sbin/init']
    Netzwerke:
      nginx-lsb:
        IPv4-Adresse: ${web1_addr}
  web2:
    Containername: web2
    Bild: "centos:httpd"
    Häfen:
      - „8081:80“
    privilegiert: wahr
    Bände:
      - "/app/www/web2/:/var/www/html/"
    Befehl: ['/usr/sbin/init']
    Netzwerke:
      nginx-lsb:
        IPv4-Adresse: ${web2_addr}
Netzwerke:
  nginx-lsb:
    Treiber: Brücke
    ipam:
      Konfiguration:
        - Subnetz: 192.169.0.0/16

// Starten Sie das Composetest-Projekt neu docker-compose up -d

Ändern Sie die Konfigurationsdatei nginx.conf und konfigurieren Sie den Lastenausgleich

upstream meinDocker {
  Server 192.169.0.2;
  Server 192.169.0.3;
}

Server {
  hören Sie 80;
  Servername mydocker;
  Standort / {
    Proxy_Set_Header Host $host;
    Proxy_Set_Header X-Real-IP $Remote_Addr;
    proxy_set_header X-Weitergeleitet-Für $proxy_add_x_forwarded_for;
    Proxy-Pufferung aus;
    Proxy-Passwort http://mydocker;
  }
}

Starten Sie nginx-lsb neu und laden Sie die Konfigurationsdatei

Docker-Composer startet Nginx-LSB neu

Besuchen Sie http://Server-IP-Adresse:8000, um den Server-Lastausgleich zu testen!

Hinweis: Im vorherigen Artikel wurden verschiedene Webdateien auf zwei httpd-Servern abgelegt.

Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, er wird für jedermanns Studium hilfreich sein. Ich hoffe auch, dass jeder 123WORDPRESS.COM unterstützen wird.

Das könnte Sie auch interessieren:
  • Docker Nginx-Container und Tomcat-Container zur Realisierung von Lastausgleich und dynamischen und statischen Trennungsvorgängen
  • So verwenden Sie Docker zum Erstellen eines Tomcat-Clusters mit Nginx (mit Bildern und Text)
  • Detaillierte Erläuterung zur Verwendung von Nginx und Docker zur Erzielung eines einfachen Lastenausgleichs
  • Zusammenfassung der Bereitstellung des Tomcat-Clusters und des Nginx-Lastausgleichs basierend auf Docker

<<:  JavaScript zum Erzielen eines Taobao-Produktbild-Umschalteffekts

>>:  Detaillierte Erklärung des Ausführungskontexts und des Aufrufstapels in JavaScript

Artikel empfehlen

Detaillierte Erläuterung der einfachen Verwendung des MySQL-Abfragecaches

Inhaltsverzeichnis 1. Implementierungsprozess des...

HTML-Tabellen-Tag-Tutorial (25): vertikales Ausrichtungsattribut VALIGN

In vertikaler Richtung können Sie die Zeilenausri...

JavaScript implementiert die Eingabeüberprüfung im Kennwortfeld

Manchmal ist es notwendig, bei Benutzereingaben e...

Tutorial zur Installation und Konfiguration der Linux CentOS MySQL-Datenbank

Hinweise zur Installation der MySQL-Datenbank, mi...

jQuery Canvas generiert ein Poster mit einem QR-Code

In diesem Artikel wird der spezifische Code zur V...

Detaillierte grafische Erklärung zur Verwendung von SVG im Vue3+Vite-Projekt

Heute habe ich bei der Verwendung von SVG in der ...

Ein einfaches Beispiel für die MySQL-Suche nach Daten im Umkreis von N Kilometern

Gemäß dem Koeffizienten von Pi und dem Radius der...

Lassen Sie uns über die Speicher-Engine in MySQL sprechen

Grundlagen In einer relationalen Datenbank entspr...

Zusammenfassung der Verwendung von MySQL Online DDL gh-ost

Hintergrund: Als DBA werden die meisten DDL-Änder...

Detaillierte Erläuterung der MySQL-Fremdschlüsseleinschränkungen

Amtliche Dokumentation: https://dev.mysql.com/doc...

Äußerst detaillierte Freigabe der MySQL-Nutzungsspezifikation

In letzter Zeit waren viele datenbankbezogene Vor...

JavaScript-Makrotasks und Mikrotasks

Makrotasks und Mikrotasks JavaScript ist eine Sin...