Gewusst wie: Dockerisierte MongoDB-Replikation im Elastic Container Service


10

Ich habe eine Node.js-App zusammen mit einer MongoDB-Datenbank, die auf AWS ECS ausgeführt wird. Das Setup, das ich derzeit habe, besteht aus 2 ELBs und 2 Instanzen, auf denen jeweils ein Docker-Container mit dem zugewiesenen Dienst (Knoten / Mongo) ausgeführt wird:

Elastic Load Balancer -> Dockerized Node -> Elastic Load Balancer -> Dockerized MongoDB

Ich verwende das offizielle Docker-Image für MongoDB, das hier verfügbar ist: https://registry.hub.docker.com/_/mongo/

Gibt es Hinweise, wie ich ein ReplicaSet für MongoDB mithilfe von Docker und ECS bereitstellen kann, wobei jedes Replikat auf einer anderen Instanz ausgeführt wird?

Antworten:


2

Dockerisieren Sie keine Datenbanken. Docker-Container sollen kurzlebig sein und keine Daten enthalten. Das ist nicht für Datenbanken geeignet.

Versuchen Sie insbesondere nicht, einen MongoDB-Cluster anzudocken . Das Setup für Replikatsätze ist äußerst statusbehaftet und komplex. Sie müssen viele Befehle der Reihe nach und nur einmal ausführen . Wenn Sie einen Befehl verpassen oder ein Knoten ausfällt, wird der gesamte Cluster möglicherweise blockiert und Sie müssen neu beginnen.

Docker hat eine eigene Vorstellung davon, wie sich Anwendungen verhalten sollen. Es wäre wirklich schwierig, dies in Docker zum Laufen zu bringen.

Wenn Sie einen Cluster mit 3 Replikaten möchten, sollten Sie 3 AWS-Instanzen abrufen und MongoDB für die Instanzen einrichten. Suchen Sie bei mongodb setting up a replica set on <OS>Google nach, um ein aktuelles Tutorial zu erhalten.


2

FireCamp macht es. FireCamp kann sehr einfach ein MongoDB ReplicaSet auf AWS ECS bereitstellen. 1) Bereitstellen des ECS-Clusters mit Cloudformationsvorlage, 2) Bereitstellen des MongoDB ReplicaSet mit einem einzigen Befehl. Weitere Informationen finden Sie im FireCamp-Installations-Wiki .

Aus Sicherheitsgründen ist es besser, die Node.js-App in einem anderen ECS-Cluster auszuführen. Die EC2-Instanzen, auf denen MongoDB ausgeführt wird, sollten nicht der Außenwelt ausgesetzt sein.

Der Elastic Load Balancer ist nicht erforderlich, damit die Node.js-App auf MongoDB ReplicaSet zugreifen kann. Jedes Replikat erhält einen eindeutigen DNS-Namen. Die Node.js-App kann einfach über den DNS-Namen auf MongoDB zugreifen.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.