Come: Replica Docko MongoDB su Elastic Container Service


10

Ho un'app Node.js insieme a un database MongoDB in esecuzione su AWS ECS. L'impostazione che ho attualmente è formata da 2 ELB e 2 istanze che eseguono ciascuna un contenitore Docker con il servizio assegnato (nodo / mongo):

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

Sto eseguendo l'immagine Docker ufficiale per MongoDB disponibile qui: https://registry.hub.docker.com/_/mongo/

Qualche suggerimento su come sarei in grado di distribuire un set di repliche per MongoDB usando Docker ed ECS, ogni replica in esecuzione su un'istanza diversa?

Risposte:


2

Non agganciare i database. I contenitori Docker sono pensati per essere effimeri e non contenere dati. Questo non è appropriato per i database.

In particolare, non tentare di agganciare un cluster MongoDB . L'impostazione per i set di repliche è estremamente complessa e di stato. Devi eseguire molti comandi in ordine e solo una volta . Se perdi qualche comando o se un nodo si spegne, l'intero cluster potrebbe bloccarsi e sarai costretto a ricominciare da capo.

Docker ha una sua idea di come dovrebbero comportarsi le applicazioni. Sarebbe davvero difficile farlo funzionare all'interno di Docker.

Se si desidera un cluster con 3 repliche, è necessario ottenere 3 istanze AWS e configurare MongoDB sulle istanze. Cerca mongodb setting up a replica set on <OS>su Google, che ti darà un tutorial aggiornato.


2

FireCamp lo fa. FireCamp potrebbe implementare molto facilmente un ReplicaSet MongoDB su AWS ECS. 1) distribuire il cluster ECS con modello di cloudformation, 2) distribuire MongoDB ReplicaSet con un singolo comando. Controlla il wiki di installazione di FireCamp per i dettagli.

Per motivi di sicurezza, è meglio eseguire l'app Node.js in un altro cluster ECS. Le istanze EC2 che eseguono MongoDB non devono essere esposte al mondo esterno.

Elastic Load Balancer non è necessario per l'app Node.js per accedere a MongoDB ReplicaSet. Ogni replica ha un nome DNS univoco. L'app Node.js potrebbe semplicemente accedere a MongoDB con il nome dns.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.