Comment: réplication de Dockerized MongoDB sur Elastic Container Service

10

J'ai une application Node.js avec une base de données MongoDB fonctionnant sur AWS ECS. La configuration que j'ai actuellement est formée de 2 ELB et 2 instances exécutant chacune un conteneur Docker avec son service assigné (node ​​/ mongo):

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

J'utilise l'image Docker officielle pour MongoDB disponible ici: https://registry.hub.docker.com/_/mongo/

Avez-vous des indications sur la façon de déployer un replicaSet pour MongoDB à l'aide de Docker et ECS, chaque réplique s'exécutant sur une instance différente?

Claudiu S
la source

Réponses:

2

Ne dockez pas les bases de données. Les conteneurs Docker sont censés être éphémères et ne pas contenir de données. Ce n'est pas approprié pour les bases de données.

En particulier, n'essayez pas de docker un cluster MongoDB . La configuration des jeux de réplicas est extrêmement dynamique et complexe. Vous devez exécuter de nombreuses commandes dans l'ordre et une seule fois . Si vous manquez une commande ou si un nœud s'éteint, le cluster entier peut se bloquer et vous serez obligé de recommencer.

Docker a sa propre idée du comportement des applications. Il serait vraiment difficile de faire fonctionner cela dans Docker.

Si vous voulez un cluster avec 3 répliques, vous devez obtenir 3 instances AWS et configurer MongoDB sur les instances. Recherchez mongodb setting up a replica set on <OS>sur Google, qui vous donnera un tutoriel à jour.

user5994461
la source
2

FireCamp le fait. FireCamp pourrait déployer très facilement un ReplicaSet MongoDB sur AWS ECS. 1) déployer le cluster ECS avec un modèle de cloudformation, 2) déployer MongoDB ReplicaSet par une seule commande. Consultez le wiki d'installation de FireCamp pour plus de détails.

Pour des raisons de sécurité, il est préférable d'exécuter l'application Node.js dans un autre cluster ECS. Les instances EC2 qui exécutent MongoDB ne doivent pas être exposées au monde extérieur.

Elastic Load Balancer n'est pas requis pour que l'application Node.js accède à MongoDB ReplicaSet. Chaque réplique obtient un nom DNS unique. L'application Node.js pourrait simplement accéder à MongoDB par le nom DNS.

CloudStax
la source