{"id":26862112,"url":"https://github.com/gabriel-dev-c/cluster-mongodb","last_synced_at":"2026-05-08T04:09:54.161Z","repository":{"id":285113707,"uuid":"957094352","full_name":"Gabriel-Dev-C/Cluster-MongoDB","owner":"Gabriel-Dev-C","description":"Repositório criado para documentar o processo de criação de um cluster de 4 nós no MongoDB via Docker Desktop.","archived":false,"fork":false,"pushed_at":"2025-03-29T15:25:53.000Z","size":36,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-03-29T16:27:57.370Z","etag":null,"topics":["cluster","docker","docker-container","docker-image","mongodb","mongodbcompass","server"],"latest_commit_sha":null,"homepage":"","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Gabriel-Dev-C.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2025-03-29T14:44:22.000Z","updated_at":"2025-03-29T15:25:56.000Z","dependencies_parsed_at":"2025-03-29T16:38:04.629Z","dependency_job_id":null,"html_url":"https://github.com/Gabriel-Dev-C/Cluster-MongoDB","commit_stats":null,"previous_names":["gabriel-dev-c/cluster-mongodb"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Gabriel-Dev-C%2FCluster-MongoDB","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Gabriel-Dev-C%2FCluster-MongoDB/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Gabriel-Dev-C%2FCluster-MongoDB/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Gabriel-Dev-C%2FCluster-MongoDB/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Gabriel-Dev-C","download_url":"https://codeload.github.com/Gabriel-Dev-C/Cluster-MongoDB/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246404493,"owners_count":20771620,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cluster","docker","docker-container","docker-image","mongodb","mongodbcompass","server"],"created_at":"2025-03-31T02:23:11.086Z","updated_at":"2026-05-08T04:09:54.106Z","avatar_url":"https://github.com/Gabriel-Dev-C.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# Cluster MongoDB\n\n\u003e Repositório criado para documentar o processo de criação de um cluster de 4 nós no MongoDB utilizando o Docker Container.\n\nNesse arquivo irei listar e documentar o processo completo realizado em vídeo para que seja possível criar um sistema Replica Set funcional dentro do MongoDB.\n\n\n\u003cp align=\"center\"\u003e\n\u003cimg src=\"mongodb-capa.png\" alt=\"MongoDB.\"\u003e\n\u003c/p\u003e\n\n## Ambiente de trabalho\n\nPrimeiro criamos um ambiente de trabalho favorável para a execução do projeto. Para isso devemos baixar e configurar o Docker Desktop e instalar o MongoDb Compass, para que seja mais fácil visualizar o processo.\n\n## Docker Desktop\n\nJá baixado e configurado, entramos no Docker e baixamos a imagem do MongoDB. Para isso, abrimos um terminal e rodamos o código:\n\n``` docker pull mongodb/mongodb-community-server:latest ```\n\nO próximo passo é criar uma rede Docker. Essa rede, chamada de \"mongoCluster\" permitirá que cada um dos contêineres em execução nessa rede vejam uns aos outros. Para criar uma rede, execute o comando:\n\n``` docker network create mongoCluster ```\n\nCom imagem baixada e network criado, podemos instânciar nossos contêiners, e para isso usamos o comando:\n\n``` docker run -d --rm -p 27017:27017 --name mongo10 --network mongoCluster mongodb/mongodb-community-server:latest --replSet myReplicaSet --bind_ip localhost,mongo10 ```\n\nCom esse comando criamos o primeiro contêiner na porta host 27017 com o nome \"mongo10\". Repetimos esse mesmo comando para os próximos 3 contêiners alterando apenas esses dois detalhes mencionados. Ficando assim:\n\n``` docker run -d --rm -p 27018:27017 --name mongo20 --network mongoCluster mongodb/mongodb-community-server:latest --replSet myReplicaSet --bind_ip localhost,mongo20 ```\n\nTerceiro contêiner:\n\n``` docker run -d --rm -p 27019:27017 --name mongo30 --network mongoCluster mongodb/mongodb-community-server:latest --replSet myReplicaSet --bind_ip localhost,mongo30 ```\n\nQuarto e último contêiner:\n\n``` docker run -d --rm -p 27020:27017 --name mongo40 --network mongoCluster mongodb/mongodb-community-server:latest --replSet myReplicaSet --bind_ip localhost,mongo40 ```\n\nO próximo passo é criar o conjunto de réplicas real com os quatro membros. Para isso utilizamos o comando:\n\n``` docker exec -it mongo10 mongosh ```\n\nApós isso, salvamos a string \"Connection To\" em um bloco de notas para que voce possa utilizar depois, na string de conexão do MongoDB Compass:\n\n``` mongodb://127.0.0.1:27017/?directConnection=true\u0026serverSelectionTimeoutMS=2000\u0026appName=mongosh+2.3.8 ```\n\nVerificamos se o container docker conectado está executando, com o comando:\n\n``` db.runCommand ({hello:1}) ```\n\nAgora, precisamos inicializar o nosso Replica Set para que seja feita a criação dos nós entre cada um dos contêiners criados. Para isso, usamos:\n\n``` rs.initiate ({ _id: \"myReplicaSet\", members:[{_id:0, host: \"mongo10\"}, {_id:1, host: \"mongo20\"}, {_id:2, host: \"mongo30\"}, {_id:3, host: \"mongo40\"}]}) ```\n\nAgora podemos sair do Contâiner Shell usando o comando:\n\n``` exit ```\n\nPara verificar se o conjunto de réplicas está em execução, podemos utilizar o comando:\n\n``` docker exec -it mongo10 mongosh --eval \"rs.status()\" ```\n\n## MongoDB Compass\n\nAgora, dentro do MongoDB Compass, adicionamos uma nova conexão e inserimos a string anteriormente salva, assim iremos criar uma conexão direta com o nó primário do nosso Cluster.\n\n``` mongodb://127.0.0.1:27017/?directConnection=true\u0026serverSelectionTimeoutMS=2000\u0026appName=mongosh+2.3.8 ```\n\nDentro do mongosh, podemos ver qual nó estamos conectados usando o comando:\n\n``` rs.isMaster().primary ```\n\nAgora podemos inserir dados através do nó primário usando o sistema corporativo:\n\n```\nuse CorporeSystem\n\ndb.cliente.insertOne({codigo:1, nome: \"Ana Maria\"});\ndb.cliente.insertOne({codigo:2, nome: \"Maria Jose\"});\ndb.cliente.insertOne({codigo:3, nome: \"Jose Silva\"});\ndb.cliente.insertOne({codigo:4, nome: \"Luis Souza\"});\ndb.cliente.insertOne({codigo:5, nome: \"Fernanda Silva\"});\n\ndb.cliente.find()\n\n```\n\nPara verificação se o conjunto de réplicas está funcionando, iremos parar o contêiner primário com docker stop e tentar ler do seu banco de dados novamente:\n\n``` docker stop mongo10 ```\n\nVerificamos novamente o estado do Cluster:\n\n``` docker exec -it mongo20 mongosh --eval \"rs.status()\" ```\n\nSe tentarmos dar um novo insert na mesma seção aberta anteriormente, com esse comando:\n``` db.cliente.insertOne({codigo:6, nome: \"Teresa Maria\"}); ```\nirá dar um erro.\n\nPara corrigir, abrimos outra conexão com a porta do Cluster primário, de acordo com o que o MongoDB elegeu:\n\n``` mongodb://127.0.0.1:27018/?directConnection=true\u0026serverSelectionTimeoutMS=2000\u0026appName=mongosh+2.3.8 ```\n\nUsaremos o banco de dados CorporeSystem e faremos a consulta de um registro:\n\n```\nuse CorporeSystem\n\ndb.cliente.findOne()\n```\n\nE então faremos uma nova inserção de dados para verificar se o cluster continuou ativo:\n\n``` db.cliente.insertOne({codigo:7, nome: \"Joao Cardoso\"}); ```\n\nAgora podemos voltar novamente o nó \"mongo10\" para reestabelecer uma conexão:\n\n``` docker run -d --rm -p 27017:27017 --name mongo10 --network mongoCluster mongodb/mongodb-community-server:latest --replSet myReplicaSet --bind_ip localhost,mongo10 ```\n\nE por fim podemos verificar novamente o estado atual do nosso Cluster:\n\n``` docker exec -it mongo20 mongosh --eval \"rs.status()\" ```\n\nConfirmando assim que o Cluster se manteve ativo mesmo com a queda do servidor primário.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgabriel-dev-c%2Fcluster-mongodb","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgabriel-dev-c%2Fcluster-mongodb","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgabriel-dev-c%2Fcluster-mongodb/lists"}