2016-07-12 11 views
0

Meine aktuelle Konfiguration ist eine Node.js-Anwendung, die ein Angular-Frontend bereitstellt, eine zweite Node.js-Anwendung, die Express besitzt und als API dient. und eine MongoDB-Instanz. Einfach gesagt, die clientseitige App spricht mit der Back-End-App und die Back-End-App spricht mit MongoDB.Skalierung einer zweistufigen MEAN-Anwendung mit Docker auf AWS

Ich habe untersucht, wie diese Anwendungen zu docken und es scheint, als ob einige Beispiele Verknüpfung verwenden. Meine Frage lautet daher, ob die Verknüpfung nur auf demselben Host (dh einer einzigen EC2-Instanz in AWS) oder mehreren EC2-Instanzen funktioniert. Wenn nur der ehemalige und wenn ich beide Apps und Mongo Container in einer Instanz haben, wie skaliere ich? Wie würde ich, wenn ich eine zweite EC2-Instanz hochfahre, beide Container-Knoten-Apps und Mongo wieder auf diese zweite Instanz setzen? Hat ein Mongo-Container auf der gleichen Instanz mit den Knoten-Apps einen einzigen Fehlerpunkt? Wie ist das fehlertolerant?

Ich versuche nur, meinen Kopf darum zu wickeln und entschuldige mich für meine Unwissenheit zu diesem Thema. Vielen Dank!

Antwort

1

Sie sollten jede App sowie den MongoDB-Server in separaten Containern (was ich denke, dass Sie beabsichtigen) und die Verknüpfung (über Docker-Compose oder andere Methode) nur Vernetzung ist. Wenn Sie Docker-Links verwenden, wird ein privates Netzwerk erstellt. Sie können andere Netzwerke erstellen, um miteinander zu kommunizieren, auch mit einem LAN, WAN, was auch immer.

Ja, wenn Sie alle auf dieselbe EC2-Instanz setzen, wird ein SPOF erzeugt.

Wenn das ein Problem ist, schauen Sie in: https://docs.docker.com/swarm/networking/

Docker Swarm mit Docker der Networking-Funktionen voll kompatibel ist. Dies beinhaltet die Multi-Host-Netzwerkfunktion, die die Erstellung von benutzerdefinierten Container-Netzwerken, die sich über mehrere Docker-Hosts erstrecken, ermöglicht.

Oder Lastenausgleich Ihrer Apps und Verwendung eines von AWS gehosteten MongoDB-Clusters. Es gibt viele mögliche Ansätze, die auf Ihren Bedürfnissen und Ihrem Budget basieren.