Cómo: Dockerized MongoDB Replication en Elastic Container Service

10

Tengo una aplicación Node.js junto con una base de datos MongoDB que se ejecuta en AWS ECS. La configuración que tengo actualmente está formada por 2 ELB y 2 instancias que ejecutan cada uno un contenedor Docker con su servicio asignado (nodo / mongo):

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

Estoy ejecutando la imagen oficial de Docker para MongoDB disponible aquí: https://registry.hub.docker.com/_/mongo/

¿Alguna sugerencia sobre cómo podría implementar un replicaSet para MongoDB usando Docker y ECS, cada réplica se ejecuta en una instancia diferente?

Claudiu S
fuente

Respuestas:

2

No dockerize bases de datos. Los contenedores Docker deben ser efímeros y no contener datos. Eso no es apropiado para las bases de datos.

En particular, no intente dockerizar un clúster MongoDB . La configuración de los conjuntos de réplica es extremadamente dinámica y compleja. Tienes que ejecutar muchos comandos en orden y solo una vez . Si omite algún comando o si un nodo se apaga, todo el clúster podría bloquearse y se verá obligado a comenzar de nuevo.

Docker tiene su propia idea de cómo deberían comportarse las aplicaciones. Sería realmente difícil hacer que eso funcione dentro de Docker.

Si desea un clúster con 3 réplicas, debe obtener 3 instancias de AWS y configurar MongoDB en las instancias. Busque mongodb setting up a replica set on <OS>en Google, que le dará un tutorial actualizado.

usuario5994461
fuente
2

FireCamp lo hace. FireCamp podría implementar MongoDB ReplicaSet en AWS ECS con mucha facilidad. 1) implementar el clúster ECS con plantilla de formación en la nube, 2) implementar MongoDB ReplicaSet con un solo comando. Consulte la wiki de instalación de FireCamp para obtener más detalles.

Por seguridad, es mejor ejecutar la aplicación Node.js en otro clúster ECS. Las instancias EC2 que ejecutan MongoDB no deben exponerse al mundo externo.

Elastic Load Balancer no es necesario para que la aplicación Node.js acceda a MongoDB ReplicaSet. Cada réplica recibe un nombre DNS único. La aplicación Node.js podría simplemente acceder a MongoDB por el nombre dns.

CloudStax
fuente