‫Bevor wir unsere Services so erweitern, dass sie über mehrere Knoten laufen und alle Services miteinander kommunizieren, gehen wir
‫zunächst ein paar neue Konzepte durch, die Swarm auf den Tisch bringt.
‫Der erste ist ein neuer Netzwerktreiber namens Overlay, und Sie erstellen wirklich nur ein Netzwerk, wie
‫Sie es
‫gewohnt sind, Docker-Netzwerk zu erstellen, und Sie fügen ein --driver-Overlay ein.
‫Im Grunde genommen wird ein schwarmweites Brückennetzwerk erstellt, in dem die Container auf Hosts im
‫selben virtuellen Netzwerk wie in einem VLAN auf einander zugreifen können.
‫Dies gilt nur für die Intra-Swarm-Kommunikation.
‫Der Overlay-Treiber spielt im eingehenden Datenverkehr keine große Rolle, da er versucht, eine vollständige
‫Schwarmansicht des Netzwerks zu erhalten, damit Sie nicht ständig an den Netzwerkeinstellungen einzelner
‫Knoten herumspielen.
‫Sie können auch die vollständige Netzwerkverschlüsselung mit IPiece SEC aktivieren, um IPSec-Tunnel zwischen den
‫verschiedenen Knoten Ihres Schwarms einzurichten.
‫Aber es ist standardmäßig wirklich nur aus Leistungsgründen deaktiviert.
‫Wenn Sie Ihre Dienste erstellen, können Sie sie keinem Overlay-Netzwerk oder einem oder mehreren Overlay-Netzwerken hinzufügen.
‫Es hängt wirklich vom Design Ihrer Anwendung ab.
‫Sie wissen, dass viele traditionelle Designs die Datenbanken in einem Back-End-Netzwerk und die
‫Webserver in einem Front-End-Netzwerk haben würden. Dann hätten Sie vielleicht eine API zwischen den beiden, die sich in beiden Netzwerken
‫befinden würde, oder so ähnlich.
‫Und das können Sie in Swarm voll und ganz.
‫Lassen Sie uns dies in Aktion sehen. Ich möchte Ihnen zeigen, wie es
‫wäre, wenn wir das Drupal-Beispiel aus einer früheren Aufgabe mit der Postgres-Datenbank als Dienste bereitstellen und dann ein Overlay-Netzwerk
‫erstellen, in dem sie miteinander kommunizieren können.
‫Zuerst müssen wir ein Netzwerk erstellen, also Docker-Netzwerk erstellen, und dies hat sich für Swarm nicht geändert, abgesehen
‫von der Tatsache, dass wir einen neuen Treiber verwenden werden.
‫Ich werde es nur mydrupal nennen.
‫OKAY.
‫Also mache ich ein Docker-Netzwerk und du wirst sehen, dass ich ein neues Overlay habe. Der Eingang ist standardmäßig vorhanden.
‫Sie werden auch einen neuen sehen, weil es sich um einen Schwarm handelt, der eigentlich ein ausgehendes Netzwerk ist, mit dem wir uns nicht
‫anlegen müssen.
‫Also, lasst uns unseren Postgres-Service erstellen ... Docker-Dienst Name erstellen ... Nennen wir es psql-Netzwerk.
‫Wir werden es mit dem Mydrupal-Netzwerk verbinden.
‫Die Netzwerknamen sind tatsächlich durch Tabulatoren vervollständigt.
‫Denken Sie dann daran, dass ich in dieser Umgebungsvariablen das Postgres-Kennwort hinzufügen muss.
‫So können wir später eine Verbindung herstellen.
‫Dann werden wir das Postgres-Bild verwenden. Sieht gut aus.
‫Sie werden hier feststellen, dass wir nicht das gesamte Bild herunterladen und das alles, weil die Dienste nicht im Vordergrund ausgeführt
‫werden können, weil sie den Orchestrator und den Scheduler durchlaufen müssen. Wir können also einen
‫Docker-Dienst ausführen und sehen, dass einer von ihnen ausgeführt wird.
‫Wenn wir einen Docker-Dienst ps psql ausführen, können wir feststellen, dass dieser tatsächlich auf Knoten 1 ausgeführt wird.
‫So kann ich ein Docker-Container-Log psql machen, und dann kann ich die Logs davon sehen.
‫Ja. Sieht aus wie es läuft.
‫Gut.
‫Lassen Sie uns unseren anderen Service erstellen, damit ich ihn
‫einfach als Drupal bezeichnen kann.
‫Wir müssen uns auch mit demselben Netzwerk verbinden. Dann wollen wir den Port 80:80 veröffentlichen, wie wir
‫es mit einem Docker-Run-Befehl getan haben. Und wir werden das Drupal-Image verwenden.
‫OKAY.
‫Wir können sehen, dass es dort beginnt.
‫Es gibt einen Trick. Sie können den Befehl watch unter Linux tatsächlich zum Überwachen verwenden. Es wird im
‫Grunde ... es führt immer wieder einen Befehl aus. Es ist standardmäßig auf
‫Ubuntu installiert.
‫Wenn Sie dem Docker-Dienst ls nur die Uhr vorlegen, wird sie standardmäßig alle zwei Sekunden ausgeführt,
‫bis ... ah, siehst du?
‫Jetzt haben wir eins nach dem anderen.
‫In Ordnung, und dann werde ich einfach c aus dem heraus kontrollieren. Wir können einen Docker-Dienst ps
‫drupal ausführen und feststellen, dass Drupal tatsächlich auf Knoten 2 ausgeführt wird.
‫Wir haben die Datenbank auf Knoten 1 ausgeführt.
‫Wir haben die Drupal-Website auf Node 2.
‫Woher wissen sie also, wie man miteinander spricht?
‫Nun, mit den Dienstnamen.
‫Wenn ich eine der IP-Adressen einfüge, sollte diese bei der Drupal-Installation erscheinen. Und wenn ich die Datenbank hier sage,
‫Datenbankname, werden wir nur die Postgres wiederholen,
‫Postgres, mein Passwort.
‫Für den Host haben wir, genau wie bei Compose, die Dienstnamen in der Compose-Datei erstellt. Hier verwenden wir
‫den Dienstnamen, den wir für den Datenbankserver erstellt haben. Also, das war psql.
‫Dieser Bildschirm sagt uns im Grunde, dass es in der Lage ist, über die Knoten hinweg mit der Datenbank zu
‫kommunizieren und das System einzurichten.
‫Das ist das Tolle an Overlay: Es verhält sich wirklich so, als würde sich alles im selben Subnetz befinden.
‫Gut.
‫Das brauchen wir also nicht mehr.
‫Ich werde dieses Beispiel ganz schnell beenden, um dir die nächste coole Sache über Swarm zu zeigen. OKAY.
‫Jetzt läuft diese Seite. Aber ich habe drei Knoten. Woher weiß ich, auf
‫welchem Knoten und an welchem Port sich mein DNS befindet, wenn ich diesen Website-Namen erstelle?
‫In meinem Fall habe ich drei IP-Adressen, und ich kann alle drei kopieren und alle drei dieser
‫IP-Adressen
‫in und ... Hoppla... Ich habe dort den falschen gefunden.
‫Wenn Sie also sehen, sieht es so aus, als würde die Website auf allen drei Knoten ausgeführt, da ich
‫alle drei IP-Adressen überprüfe.
‫Aber wenn ich hier rüber gehe und diesen Dienst ps drupal mache, weiß ich, dass es nur Knoten 2 ausführt.
‫Ich kann sogar einen Docker-Service inspizieren und feststellen, dass es in der Tat nur eine IP-Adresse in diesem Overlay-Netzwerk
‫gibt ... genau hier.
‫Warum reagiert es also auf allen drei Hosts?
‫Das führt uns zu unserem nächsten neuen Feature.