Ich versuche herauszufinden, wie man den Schwarm-Modus in Docker richtig einsetzt. Zuerst habe ich versucht, Container auf meinen 2 Arbeitern und dem Manager-Rechner auszuführen, ohne ein benutzerdefiniertes Netzwerk anzugeben (daher verwende ich das Standard-Ingress-Overlay-Netzwerk). Wenn ich jedoch das Ingress-Netzwerk verwende, kann ich tasks.myservice
aus irgendeinem Grund nicht auflösen.
Also habe ich versucht, ein benutzerdefiniertes Netzwerk wie folgt zu konfigurieren:
%Vor% Nun, wenn ich bash
in einen der Container gesetzt habe, kann ich tasks.myservice
erfolgreich auflösen, aber ich kann nicht mehr auf den Port zugreifen, den ich in meiner Serviceerstellung unter --publish
extern definiert habe (was ich könnte, wenn Ich benutzte das Ingress-Netzwerk).
Gibt es einen der beiden Wege:
Verwenden Sie das Ingress-Netzwerk und können Sie tasks.myservice
oder einen anderen DNS-Eintrag auflösen, der an alle meine Service-Container weitergeleitet wird?
Oder verwenden Sie ein benutzerdefiniertes Netzwerk, aber --publish
ports, damit ich extern darauf zugreifen kann?
BEARBEITEN
So erstelle ich meinen Service,
Ohne ein benutzerdefiniertes Netzwerk:
%Vor%Mit einem benutzerdefinierten Netzwerk:
%Vor%Sehen Sie sich das folgende Beispiel an:
1.Erstellen Sie ein benutzerdefiniertes Overlay-Netzwerk:
%Vor%2. Führen Sie einen Dienst mit verfügbaren Ports und drei Replikaten aus:
%Vor% Sie müssen endpoint-mode
nicht angeben, wenn Sie VIP
verwenden möchten, das ist der Standardwert.
3.Überprüfung: Test Offener Port von einem der Knoten:
%Vor%Freigegebenen Port von externem Host testen:
%Vor%Testen der DNS-Suche von innerhalb von Containern:
%Vor%ElasticSearch-spezifischer Vorschlag :
Elasticseach verfügt über ein eigenes Clustering, das Funktionen Failover
und Loadbalancing
bietet.
Sie können shards
und replicas
pro index
in elasticsearch-Hosts verwenden, die Teil von elasticsearch cluster sind.
Ich schlage vor, dass Sie 3 Services
mit jeweils 1 replica
erstellen, dann verbinden Sie sich dann in einem Elasticsearch-Cluster und erstellen dann indexes
mit 3 shards
und 3 replicas
. Sie werden loadbalancing
und failover
innerhalb von elasticsearch cluster haben.
Um mehr über shards
zu erfahren, Verwenden Sie dies .
Was uns hier fehlt, ist Ihre Service-Definition, oder verwenden Sie nur einen guten alten Mode-Docker, wenn Sie Ihre Container definieren.
Wenn Sie die Docker-Service-Funktionalität (in Docker 1.12 verfügbar) verwendet haben, können Sie Ihre Ports weiterhin nach Dienst
anzeigen %Vor%Ihr Dienst wird im Anti-Spam-Netzwerk erstellt. Wenn Sie einen anderen Dienst nodejs2 erstellen, können Sie sich gegenseitig mit dem Dienstnamen wie ein Hostname erreichen.
Das Publizieren würde immer noch auf dem Schwarm funktionieren, aber jeder Host würde nach Port 1230 lauschen und ihn dann mit Mesh zu einem der Container leiten.
Tags und Links docker docker-swarm docker-networking