Docker schwärmen mit einem benutzerdefinierten Netzwerk

8

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:

  1. 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?

  2. 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%     
Or Weinberger 01.12.2016, 12:49
quelle

2 Antworten

1

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.

%Vor%

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 .

    
Farhad Farahi 08.12.2016 08:15
quelle
0

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.

    
Dockstar 02.12.2016 20:18
quelle