Como: Replicação do MongoDB com Dockerized no Elastic Container Service

9

Eu tenho um aplicativo Node.js junto com um banco de dados MongoDB em execução no AWS ECS. A configuração que tenho atualmente é formada por 2 ELB's e 2 Instances executando cada container do Docker com seu serviço designado (node / mongo):

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

Estou executando a imagem do Docker oficial do MongoDB disponível aqui: link

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

    
por Claudiu S 24.07.2015 / 11:37

2 respostas

2

Não dockerize bancos de dados. 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 fazer o dockerize de um cluster do MongoDB . A configuração para conjuntos de réplica é extremamente stateful e complexa. Você tem que executar muitos comandos em ordem e somente uma vez . Se você perder algum comando ou se um nó falhar, todo o cluster poderá ser bloqueado e você será forçado a começar de novo.

O Docker tem uma ideia própria de como os aplicativos devem se comportar. Seria muito difícil fazer esse trabalho dentro do Docker.

Se você quiser um cluster com três réplicas, deverá obter três instâncias do AWS e configurar o MongoDB nas instâncias. Pesquise mongodb setting up a replica set on <OS> no Google, que lhe dará um tutorial atualizado.

    
por 27.04.2017 / 00:58
2

O FireCamp faz isso. O FireCamp poderia implantar um ReplicaSet do MongoDB no AWS ECS com muita facilidade. 1) implantar o cluster do ECS com o modelo de cloudformation, 2) implantar o ReplicaSet do MongoDB 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 ReplicaSet do MongoDB. Cada réplica recebe um nome de DNS único. O aplicativo Node.js pode simplesmente acessar o MongoDB pelo nome do DNS.

    
por 29.08.2017 / 20:25