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

Tutorial zu HTML-Formular-Tags (2):

Dieses Tutorial stellt die Anwendung verschiedene...

Bedingte Kommentare zur Bestimmung des Browsers (IE-Reihe)

<!--[if IE 6]> Nur IE6 kann erkennen <![e...

So verwenden Sie JavaScript zum Implementieren von Sortieralgorithmen

Inhaltsverzeichnis Blasensortierung Auswahl Sorti...

Element Plus implementiert Affix

Inhaltsverzeichnis 1. Komponenteneinführung 2. Qu...

Erstellen eines sekundären Menüs mit JavaScript

In diesem Artikelbeispiel wird der spezifische Ja...

Docker-Netzwerkprinzipien und detaillierte Analyse benutzerdefinierter Netzwerke

Docker virtualisiert eine Brücke auf dem Host-Rec...

JS implementiert einfachen Kalendereffekt

In diesem Artikel wird der spezifische JS-Code zu...

mysql5.7.18 dekomprimierte Version zum Starten des MySQL-Dienstes

Die dekomprimierte Version von mysql5.7.18 starte...

Einführung in die Bereitstellung des Selenium-Crawler-Programms unter Linux

Inhaltsverzeichnis Vorwort 1. Was ist Selen? 2. N...

So beheben Sie die durch MySQL DDL verursachte Synchronisierungsverzögerung

Inhaltsverzeichnis Vorwort Lösung Tool-Einführung...

ElementUI implementiert kaskadierenden Selektor

In diesem Artikelbeispiel wird der spezifische Co...

Auszeichnungssprache - Bildersetzung

Klicken Sie hier, um zum Abschnitt „HTML-Tutorial“...