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

Vue + OpenLayers Schnellstart-Tutorial

Openlayers ist ein modulares, leistungsstarkes un...

MySQL 5.7.20 Win64 Installations- und Konfigurationsmethode

mysql-5.7.20-winx64.zipInstallationspaket ohne In...

Wie man die Idee von Vue nutzt, um einen Speicher zu kapseln

Inhaltsverzeichnis Hintergrund Funktion Zweck Ide...

Mysql-Datumsformatierung und komplexe Datumsbereichsabfrage

Inhaltsverzeichnis Vorwort Anwendungsszenarios fü...

Warum sollten MySQL-Felder NOT NULL verwenden?

Ich habe vor Kurzem in einer neuen Firma angefang...

Detaillierte Erklärung der Verwendung und Funktion des MySQL-Cursors

[Verwendung und Funktion des MySQL-Cursors] Beisp...

Erläuterung der Konfiguration und Verwendung der MySQL-Speicher-Engine InnoDB

MyISAM und InnoDB sind die gängigsten Speicher-En...

Konfigurationslösung für die MySQL Dual-Master-Architektur (Master-Master)

In Unternehmen hat die hohe Verfügbarkeit von Dat...

Lösung für die nicht angezeigte IP-Adresse unter Linux

Inhaltsverzeichnis Vorwort Lösung: Schritt 1 Schr...

MySQL 5.7.18 MSI-Installations-Grafik-Tutorial

In diesem Artikel wird das MySQL 5.7.18 MSI-Insta...