Réplica MongoDB local Cluster para aplicativos de contêineres em tempo real (com Mongo Express)

Execute uma réplica completa de réplica de MongoDB de 3 nós localmente para aplicações em tempo real em tempo real, com autenticação, failover e Mongo Express-tudo em um compose.yml. Se você estiver desenvolvendo aplicativos de contêiner que precisam de recursos do MongoDB em tempo real, como fluxos de alteração, você deseja um conjunto de réplicas local. Este guia mostra como executar um cluster MongoDB de 3 nós com autenticação, failover automático e uma interface da web embutida-tudo em um arquivo compacto.yml. Eu construí essa configuração principalmente para o Podman, mas funciona com a maioria das plataformas de contêineres, incluindo o Docker, sem alterações. Você receberá: um conjunto de réplicas MongoDB de três nós-perfeito para o desenvolvimento local e recursos em tempo real, com base em réplica automática de autenticação baseada em file-keyfile, um usuário de administrador de raiz configurável via .env Mongo Express para gerenciamento de banco de dados baseado no navegador, o DB pronto para uso strings de conexão para os nós primários e secundários trabalha com o Docker & Podman, por que usar um replica se replica localmente? Running a MongoDB replica set locally lets you: Test high availability scenarios — simulate node failures Work with real-time features like Change Streams Develop apps that mirror production environments Explore read preference configurations with primary and secondary nodes The Setup The cluster is defined in a single compose.yml that includes: keyfile-generator – creates a secure keyfile for internal node authentication mongo1, mongo2, mongo3 -Os três membros do conjunto de réplica Mongo-Express-uma interface de administração do MongoDB baseada na Web 1 .env File Crie um arquivo .env no mesmo diretório: mongo_initdb_root_username = root mongo_initdb_root_password = passa Enter Fullscreen Modo de tela cheia altera esses valores para o seu administrador preferido. 2 Compose.yml Aqui está a configuração completa: Serviços: KeyFile-Generator: Imagem: Alpine: reinicialização mais recente: “não” comando:> sh -c “Apk Add–não-cache OpenSSL && se [ ! -f /data/keyfile ]; Em seguida, OpenSSL RAND -BASE64 756> /Data /KeyFile && CHMOD 400 /Data /KeyFile; Fi “Volumes: – keyfile_data:/dados mongon1: imagem: mongo: mais recente contêiner_name: mongo1 depende -se: – reinicialização do gênero -keyfile: a menos que portas paradas: – 27017: 27017 redes: – mongoclusterumes: – Mongo_data. keyfile_data:/etc/mongo -keyfile ambiente: – Mongo_initdb_root_username = $ {Mongo_initdb_root_username} – Mongo_initdb_root_password = $ {Mongo_initdb_root_rot_bort} comandante:> BENDBOLOTB_OTB_ROTDB_ROOT: [ ! -f /etc/mongo-keyfile/keyfile ]; ECHO “Aguardando KeyFile …” Dormir 2 Feito CHMOD 400/etc/mongo-keyfile/keyfile mongod-Represeamento RS0–Bind_ip_all –keyfile/etc/Mongo-KeyFile/KeyFile –Fork —-Logphpath /Var/Log/Mongod.Log para i em {130 Faça se MongoSh –quiet –eval “db.runcommand ({ping: 1})”> /dev /null 2> & 1; Em seguida, quebre o sono 2 feito se! mongosh –quiet –eval “rs.status ()”> /dev /null 2> & 1; Então MongoSh –eval “Rs.iniciate ({_id: \” rs0 \ “, membros: [
{ _id: 0, host: \”mongo1:27017\”, priority: 2 },
{ _id: 1, host: \”mongo2:27017\”, priority: 1 },
{ _id: 2, host: \”mongo3:27017\”, priority: 1 }
]
}) “fi para i em {1..60}; faça se mongosh –quiet –eval” db.hello (). iswritableprimary “2>/dev/null | grep -q true; então mongosh admin –quiet –eval –eval “db.createUser ({user: \” $ {Mongo_initdb_root_username} \ “, pwd: \” $ {mongo_initdb_root_password} \ “, paus:[{role:\”root\”,db:\”admin\”}]}) “Quebrar Fi Sleep 2 feito MongoD -Sleep 3 Exec MongoD -RePlSet RS0 – -BIND_IP_ALL –AUTH –KEYFILE/etc/Mongo -keyFile/KeyFile ‘Mongo2: Imagem: Mongo: Mongo: RENTAER_NAME: MONGO2 DEPEDS_ON: -KeyFile Restarl Restr. mongoCluster volumes: – mongo2_data:/data/db – mongo2_config:/data/configdb – keyfile_data:/etc/mongo-keyfile command: > bash -c ” chmod 400 /etc/mongo-keyfile/keyfile && exec mongod –replSet rs0 –bind_ip_all –auth –keyFile /etc/mongo-keyfile/keyfile ” mongo3: image: mongo:latest container_name: mongo3 depends_on: – keyfile-generator restart: unless-stopped ports: – 27019:27017 networks: – mongoCluster volumes: – mongo3_data:/data/db – mongo3_config:/data/configdb – keyfile_data:/etc/mongo-keyfile comando:> bash -c “chmod 400/etc/mongo-keyfile/keyfile && Exec MongoD –ReplSet rs0–bind_ip_all –auth –keyfile/etc/mongo-keyfile/keyfile” Mongo-Express. Depende -se: – Mongo1 – Mongo2 – Redução de Mongo3: a menos que pareça portas: – 8081: 8081 Redes: – MongoCluster Ambiente: – me_config_mongodb_adminusername = $ {Mongo_initdb_root_username} – Me_config_mongodb_adminpassword = $ {mongo_initdb_root_password} – Me_config_mongodb_url = mongodb: // $ {Mongo_initdb_root_username}: $ {Mongo_initdb_root_password}@Mongo1: 27017, Mongo2: 27017, Mongo3: 27017/? Me_config_basicauth_username = $ {mongo_initdb_root_username} – me_config_basicauth_password = $ {Mongo_initdb_root_password} redes: Mongocluster: Driver: Bridge Volumes: Mongo_DATATA: Mongo2_Config: Mongo3_Data: mongO3_config: keyfile_data: insira o modo de tela cheia de tela cheia mode 3, iniciando o cluster com podman: podman compõe o modo de verde fullcreen. (rs0) is initialized A root admin user is created MongoDB restarts in auth mode After the first Bootup is completed you may delete the keyfile-generator Container Connecting to the Cluster eg MongoDB Compass Direct node connections: Primary: mongodb://root:pass@localhost:27017/?authSource=admin&directConnection=true Secondary 1: mongodb: // raiz: passa@localhost: 27018/? authSource = admin & diretorConnection = verdadeiro secundário 2: mongodb: // root: passa@localhost: 27019/? authsource = admin & diretoConnection = true (replicar root/passa se alterado). Credenciais.

Fonte

Publicar comentário

Você pode ter perdido