2016-04-25 2 views
3

Ich möchte einen RabbitMQ-Cluster erstellen, der sehr widerstandsfähig gegen Ausfälle ist.RabbitMQ Cluster im Docker Container unter verschiedenen Hosts

Bis jetzt ist es mir gelungen, einen Cluster mit drei Knoten zu erstellen, wobei jeder dieser Knoten in einem Andock-Container ausgeführt wird. Damit die Knoten einem Cluster beitreten können, müssen sich die Hosts über Links kennen.

Jetzt läuft die gesamte Architektur in der Cloud (genauer gesagt bei AWS). Bisher können meine Container nur dann miteinander verknüpft werden, wenn sie auf derselben AWS-Instanz laufen. Ich möchte den Cluster so erstellen, dass Knoten auf verschiedenen Hosts liegen können.

Bisher habe ich versucht:

  1. Mit Verband/Schaufel statt. Dies dient nicht meinem Zweck, denn ich brauche CP aus dem CAP-Theorem und nicht CA. Ich brauche meine Knoten, um alle Repliken voneinander zu sein und in der Lage zu sein, als der gleiche Vermittler zu Klienten zu fungieren.

  2. Erstellen eines Docker-Schwarms. Ich bin in der Lage, den Docker-Schwarm einzurichten und zwei Instanzen über Docker-Schwarm zu verbinden. Aber wenn ich versuche, mehrere Kaninchen-Container auf diesem Schwarm zu betreiben, werden sie entweder auf denselben Knoten gelegt oder ich kann sie nicht miteinander verbinden. Also habe ich die gleiche Konstellation, alle meine Hosts laufen auf demselben Knoten.

Gibt es eine Lösung oder anderer Ansatz, mit dem ich unter verschieden AWS-Instanzen/hosts einen rabbitmMQ-Cluster innerhalb Docker-Container erstellen kann?

+0

Wie wäre es mit Docker Overlay-Netzwerk? https://docs.docker.com/engine/userguide/networking/dockernetworks/#an-overlay-network – cantSleepNow

Antwort

0

Sie erwähnten "Um die Knoten einem Cluster beitreten zu können, müssen sich die Hosts über Links kennen" .. aber ich bin nicht sicher, warum Sie die Links benötigen. Die Hauptsache ist, dass jeder der Container in der Lage ist, sich gegenseitig zu lokalisieren, was im Grunde ein Service-Discovery-Problem ist. Ich habe etwas ähnliches (mit Rabbitmq) unter Verwendung von consul auf einer Reihe von verschiedenen VMs (nicht einmal mit Schwarm), aber wenn Sie bereits einen Schwarm-Cluster ausführen, dann können Sie möglicherweise die API zu entdecken, andere Instanzen der Container?

Verwandte Themen