Docker-Compose-Skala

Docker-Compose-Skala
Docker -Behälter sollen als Vieh behandelt werden, nicht als Haustiere. Dies bedeutet, dass ihre Erstellung, Konfiguration, Verwaltung und Entsorgung von oben nach unten automatisiert werden sollten. Wir erstellen und konfigurieren keine einzelnen Container. Vielmehr skalieren wir horizontal, indem wir mehr Behälter aufspinnen.

Die horizontale Skalierung bezieht sich auf das Spinnen mehr Computer, ich.E, VMs, Container oder physische Server, um einen Anstieg der Anforderungen zu erfüllen. Dies steht im Gegensatz zur Skalierung 'vertikal ', Dies bezieht sich normalerweise auf das Ersetzen einer langsameren Maschine (mit kleinerem Speicher und Speicher) durch schneller. 'größer ' eins.

Mit der Skalierung beider Arten der Behälter ist sehr dynamisch geworden. Sie können Quoten für bestimmte Anwendungen festlegen. Diese Quote kann nach Bedarf geändert werden, um nach oben oder unten zu skalieren. In ähnlicher Weise können Sie horizontal skalieren, indem Sie mehr Behälter aufspinnen, die einen Anstieg der Nachfrage berücksichtigen und später den Überschuss der von Ihnen erstellten Behälter zerstören. Wenn Sie Cloud -Hosted -Dienste verwenden, die Sie stundenlang (oder in Minute) anbieten, kann dies Ihre Hosting -Rechnungen erheblich reduzieren.

In diesem Artikel konzentrieren wir uns nur auf die horizontale Skalierung, die nicht so dynamisch ist wie die obige Beschreibung, aber es ist ein guter Ausgangspunkt für jemanden, der die Grundlagen lernt. So lass uns anfangen.

Skalierung über die Docker-Compose CLI

Wenn Sie Ihren Anwendungsstapel starten, indem Sie Ihre Komponierungsdatei an die CLI weitergeben Docker-Compose Sie können die Flagge verwenden -Skala Um die Skalierbarkeit eines bestimmten Dienstes anzugeben, der dort angegeben ist.

Zum Beispiel für meine Docker-Compose-Datei:

Version: "3"
Dienstleistungen:
Netz:
Bild: "nginx: letztes"
Häfen:
- "80-85: 80"
$ docker -compose up -d -scale web = 5

Hier wird der Dienst in der YML -Erklärung als Web bezeichnet, kann jedoch eine einzelne Komponente Ihrer Bereitstellung sein.E, Web Front-End, Datenbank, Beobachtung von Daemon usw. Die allgemeine Syntax verlangt, dass Sie eines der Elemente im Bereich der obersten Ebene auswählen müssen. Abhängig von Ihrem Service müssen Sie möglicherweise andere Teile des Skripts ändern. Zum Beispiel wird die 80-85-Reihe von Host-Ports für 5 Instanzen von Nginx-Containern vergeben Nginx Instanzen.

Um zu sehen, welcher Container die Portnummer erhält, können Sie den Befehl verwenden:

$ docker ps -a
Befehl Container -ID -Bild erstellt
D02E19D1B688 NGINX: Neueste "Nginx -g 'Daemon von ..." vor ungefähr einer Minute
34b4dd74352d nginx: neuestes "nginx -g 'Daemon von ..." vor ungefähr einer Minute
98549c0f3dcf nginx: neuestes "nginx -g 'Daemon von ..." vor ungefähr einer Minute
Statusanschlüsse Namen
Ca. ca. eine Minute 0.0.0.0: 83-> 80/TCP Project_Web_1
Ca. ca. eine Minute 0.0.0.0: 82-> 80/TCP Project_Web_3
Ca. ca. eine Minute 0.0.0.0: 81-> 80/TCP Project_Web_2

Um mehr als einen Dienst zu skalieren, müssen Sie sie individuell mit dem Parameter Flag- und Zahl der Skala und Zahl erwähnen, um sicherzustellen, dass die gewünschte Anzahl von Instanzen erstellt wird. Wenn Sie beispielsweise zwei verschiedene Dienste haben, müssen Sie so etwas tun:

$ docker -compose up -d -scale service1 = 5 -scale service2 = 6

Dies ist der einzige Weg, um dies zu tun, da Sie den Befehl docer -compose -up -scale für jeden Dienst nicht doppelt so weit ausführen können. Dies würde den vorherigen Dienst an einen einzelnen Container zurückschätzen.

Später werden wir sehen, wie Sie den Skalenwert für ein bestimmtes Bild aus dem Docker-Compose festlegen können.YML. Falls in der Datei eine Skalenoption festgelegt ist.

Skala

Diese Option wurde in Docker-Compose-Dateiversion 2 hinzugefügt.2 und kann technisch gesehen verwendet werden, obwohl ich es nicht empfehle, es zu verwenden. Es wird hier aus der Vollständigkeit erwähnt.

Für meinen Docker-Compose.YML -Datei:

Version 2.2 "
Dienstleistungen:
Netz:
Bild: "nginx: letztes"
Häfen:
- "80-85: 80"
Skala: 3

Dies ist eine vollkommen gültige Option. Obwohl es für Docker Engine 1 funktioniert.13.0 und höher.

Verwenden Sie Repliken in der Produktion

Anstatt den Befehl scale oder den veralteten Skalierungswert in Ihrer Komponierungsdatei zu verwenden, sollten Sie die Replica -Variable verwenden. Dies ist eine einfache Ganzzahl, die einem bestimmten Service zugeordnet ist, und funktioniert genauso wie die Skalierungsvariable. Der entscheidende Unterschied besteht darin, dass Docker Swarm ausdrücklich für ein verteiltes System bestimmt ist.

Dies bedeutet. Auf diese Weise können Sie wirklich von der Vielzahl von Serviceinstanzen profitieren, die ausgeführt werden.

Sie können Ihre Anwendung nach oben und unten skalieren, indem Sie eine einzelne Variable ändern. Sie bietet eine größere Belastbarkeit gegen Ausfallzeiten. Wenn ein Rechenzentrum nicht mehr ist oder ein Netzwerkverknüpfung fehlschlägt, können die Benutzer weiterhin auf die Anwendung zugreifen, da eine andere Instanz an einem anderen Ort ausgeführt wird. Wenn Sie Ihre Anwendungsbereitstellung in mehreren geografischen Regionen verbreiten, e.G, EU, USA und asiatisch -pazifik Es wird die Latenz für die Benutzer verringern, die versuchen, auf Ihre Anwendung aus der genannten Region zuzugreifen.

Abschluss

Während die Docker-Compose-Skala für kleine Umgebungen wie einen einzigen Docker-Host, der in der Produktion ausgeführt wird, nützlich ist. Es ist auch sehr nützlich für Entwickler, die Docker auf ihrer Workstation leiten. Es kann ihnen helfen, zu testen, wie die App in der Produktion und unter verschiedenen Umständen skaliert wird. Der Befehl scale umgeht den Ärger, einen neuen Docker -Schwarm einzurichten.

Wenn Sie eine Docker -Swarm -Instanz laufen lassen, können Sie gerne mit Repliken herumspielen. Hier ist die Dokumentation in dieser Angelegenheit,