Como: Replicação do MongoDB encaixada no serviço de contêiner elástico

10

Eu tenho um aplicativo Node.js junto com um banco de dados MongoDB em execução no AWS ECS. A configuração que eu tenho atualmente é formada por 2 ELBs e 2 Instâncias executando cada um contêiner do Docker com seu serviço atribuído (nó / mongo):

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

Estou executando a imagem do Official Docker para MongoDB disponível aqui: https://registry.hub.docker.com/_/mongo/

Qualquer ponteiro sobre como eu seria capaz de implantar um replicaSet para MongoDB usando o Docker e o ECS, cada réplica sendo executada em uma instância diferente?

Claudiu S
fonte

Respostas:

2

Não encaixe os bancos de dados em docker. Os contêineres do Docker devem ser efêmeros e não conter dados. Isso não é apropriado para bancos de dados.

Em particular, não tente dockerize um cluster MongoDB . A configuração para conjuntos de réplicas é extremamente estável e complexa. Você precisa executar muitos comandos em ordem e apenas uma vez . Se você perder algum comando ou se um nó for desativado, todo o cluster poderá ficar bloqueado e você será forçado a reiniciar.

O Docker tem sua própria idéia de como os aplicativos devem se comportar. Seria realmente difícil fazer esse trabalho dentro do Docker.

Se você deseja um cluster com 3 réplicas, deve obter 3 instâncias da AWS e configurar o MongoDB nas instâncias. Pesquise mongodb setting up a replica set on <OS>no Google, que fornecerá um tutorial atualizado.

user5994461
fonte
2

FireCamp faz isso. O FireCamp pode implantar um MongoDB ReplicaSet no AWS ECS com muita facilidade. 1) implante o cluster do ECS com o modelo de formação em nuvem, 2) implante o MongoDB ReplicaSet por um único comando. Verifique o wiki de instalação do FireCamp para obter detalhes.

Por segurança, é melhor executar o aplicativo Node.js em outro cluster do ECS. As instâncias do EC2 que executam o MongoDB não devem ser expostas ao mundo externo.

O Elastic Load Balancer não é necessário para que o aplicativo Node.js acesse o MongoDB ReplicaSet. Cada réplica recebe um nome de DNS exclusivo. O aplicativo Node.js poderia simplesmente acessar o MongoDB pelo nome do DNS.

CloudStax
fonte