O objetivo deste projeto é a automatização da instalação e configuração de uma replicação (simples) de um ambiente de mongoDB. Assim, o usuário pode ter em poucos minutos uma replicação de três serviços (nós de mongoDB) para testes e desenvolvimento em uma máquina stand alone.
Como dicionário de dados, vamos chamar o projeto de robô.
Sugestões:
- Rode o robô em uma máquina virtual.
- Antes de executar o robô, crie um snapshot da maquina virtual.
- Para instalação do Python 3, o primeiro método do síte 2daygeek é mais interessante. Acesse o link e confira: 3-methods-to-install-latest-python3-package-on-centos-6-system
OBS. Para mongoDB, o robô utilizará distribuição da Percona mongoDB
Link para download do projeto: download github
Pré requisitos:
- Linux CentOS (Distribuições suportadas: 6, 7 e 8) – (Próxima versão suportará também Debian 9 e 10);
- Conexão com a internet;
- Python 3;
- Ser administrador da máquina;
- Ip fixo.
Instalação:
Baixe o projeto para um diretório dentro do sistema operacional ao qual irá hospedar o conjunto de replicas.
Entre no diretório principal do projeto, teremos um arquivo e uma pasta:
- src
- index.py
Execução:
Entre no diretório ao qual encontrará a pasta chamado DeployMongoDB.
OBS. execute o python neste diretório e não dentro da pasta DeployMongoDB.
>python3
>from DeployMongoDB.index import C_index as c
c.cor_index()
… Agora é aguardar o robô concluir a instalação e a configuração do ambiente de replicação-=.
O robô fará os seguintes passos:
- Verifica qual o sistema operacional em uso;
- Verifica qual versão do sistema operacional em uso;
- Verifica qual versão do Python em uso. Caso seja < que 3, o robô interromperá a instalação e sugerirá a instalação do Python 3;
- Instalação de dependência: wget
- Download mongoDB de acordo com a versão/distribuição do sistema operacional;
- Cria diretório para extração dos binários do Percona MongoDb: /usr/perconaMongodb/;
- Copia o arquivo de download do Percona MongoDB para o diretório criado na etapa anterior;
- Extrai o arquivo de download;
- Instala a distribuição do Percona MongoDB no sistema operacional;
- Inicia o serviço do Percona MongoDB;
- Cria os diretório de dados para cada um dos serviços de replicação: Raiz /mongodb;
- Cria um arquivo de KeyFile para que as replicas se “enxerguem”;
- Altera o Owner do diretório raiz (/mongodb) para usuário mongod;
- Instala requerimento: pip3;
- Instala pymongo através do pip3;
- Cria um usuário com permissão de root no mongodb; (O robô exibirá o nome de usuário e senha ao termino de sua execução);
- Reconfigura mongo.conf para o IP atual do host;
- Reconfigura a porta padrão para conexão no mongodb de 27017 para 47017;
- Habilita na configuração de mongo.conf o modo de autenticação;
- Habilita na configuração de mongo.conf o modo de replicação;
- Substitui na configuração de mongo.conf o dbpath para Raiz /mongodb;
- Reinicia o serviço do mongodb;
- Testa o novo usuário e senha; (saída será o resultado do comando show dbs);
- Cria diretório para replicar a configuração do mongo.conf: /etc/mongo_config;
- Replica 2 copias do mongo.conf para o diretório criado na etapa anterior;
- Em cada uma das cópias do mongo.conf para os serviços de replicação são alterados os: dbpath para cada um dos diretórios criados no diretório raiz /mongodb;
Altera a porta padrão com base na porta reconfigurada, adicionando + 1.
Exemplo: Master: 47017. Nó 2: 47018. Nó 3: 47019; - Para o serviço do mongodb;
- Inicia o serviço de replicação; 1 para cada nó na máquina, ao total de 3 serviços;
- Configuração da replicação:
- Adiciona cada um dos nós ao nó principal eleito como Master;
- Insere 1001 linhas no eleito Master;
- Exibi IP, Porta, Usuário e senha para poder conectar ao nó Master.
String de conexão para nó master:
mongo –host IPHost –port 47017 -u Usuário -p Senha
A string de conexão para os nós slaves, basta somar + 1 a Porta do Master.
Exemplo:
Master: –host 10.10.11.1 –port 47017;
Slave-01: –host 10.10.11.1 –port 47018;
Slave-01: –host 10.10.11.1 –port 47019;
Agora basta entrar em um dos nós slaves, colocar como leitura rs.slaveOk() e verificar se os dados foram replicados:
use test;
db.test.percona.find({}).count();
db.test.percona.find({}).top(10);
Deixe um comentário