A implantação de banco de dados para vários servidores se torna mais complexa e demorada com o tempo ao adicionar novos recursos ou fazer alterações. Além disso, existe a probabilidade de erros humanos que podem levar a resultados catastróficos sempre que o sistema for configurado manualmente.
Uma ferramenta de automação de implantação de banco de dados nos permitirá implantar um banco de dados em vários servidores, desde ambientes de desenvolvimento a produção. Os resultados de uma implantação automatizada são confiáveis, mais eficientes e previsíveis, além de fornecer as informações de estado atual de seus nós, que podem ser usadas posteriormente para planejar os recursos que você precisará adicionar aos seus servidores. Com uma implantação bem gerenciada, a produtividade das equipes de desenvolvimento e operacionais melhora, permitindo que a empresa se desenvolva mais rapidamente, realize mais e, devido à fácil implantação frequente, a configuração geral do software será melhor e funcionará de maneira confiável para os usuários finais.
O MongoDB pode ser implantado manualmente, mas a tarefa se torna cada vez mais complicada quando você precisa configurar um cluster de muitos membros hospedados em servidores diferentes. Portanto, precisamos resolver usar uma ferramenta automotiva que pode nos poupar o estresse. Algumas das ferramentas disponíveis que podem ser usadas incluem Puppet, Chef, Ansible e SaltStack.
Os principais benefícios de implantar seu MongoDB com qualquer uma dessas ferramentas são:
- Economia de tempo. Imagine ter 50 nós para seu banco de dados e você precisa atualizar a versão do MongoDB para cada um. Isso levará séculos para passar pelo processo. No entanto, com uma ferramenta automática, você só precisará escrever algumas instruções e emitir um comando para fazer o restante da atualização para você. Os desenvolvedores terão tempo para trabalhar em novos recursos em vez de corrigir implantações manuais.
- Erros reduzidos e, portanto, satisfação do cliente. Fazer novas atualizações pode introduzir erros em um sistema de banco de dados, especialmente se a configuração tiver que ser feita manualmente. Com uma ferramenta como o SaltStack, a remoção de etapas manuais reduz o erro humano e as atualizações frequentes com novos recursos atenderão às necessidades do cliente, mantendo a organização competitiva.
- Custo de configuração mais baixo. Com uma ferramenta de implantação, qualquer pessoa pode implantar até você mesmo, pois o processo em si será muito mais fácil. Isso eliminará a necessidade de especialistas fazerem o trabalho e reduzirá os erros
O que é SaltStack
SaltStack é uma ferramenta de execução remota de código aberto e um sistema de gerenciamento de configuração desenvolvido em Python.
Os recursos de execução remota são usados para executar comandos em várias máquinas em paralelo com um sistema de direcionamento flexível. Se, por exemplo, você tiver 3 máquinas servidoras e quiser instalar o MongoDB para cada uma, poderá executar os comandos de instalação nessas máquinas simultaneamente a partir de um nó mestre.
Em termos de gerenciamento de configuração, uma interface cliente-servidor é estabelecida para facilitar e transformar com segurança os componentes da infraestrutura no estado desejado.
Arquitetura SaltStack
O modelo básico de configuração para SaltStack é Cliente-Servidor onde o servidor pode ser referido como mestre e os Clientes como escravos. O mestre emite comandos ou instruções como o sistema de controle que precisam ser executados pelos clientes/minions que são os sistemas controlados.
Componentes do SaltSack
A seguir está do que o SaltStack é feito
- Mestre :Responsável por emitir instruções aos escravos e alterá-los para o estado desejado após a execução.
- Minion :é o sistema controlado que precisa ser transformado em algum estado desejado.
- Grãos de Sal : são dados estáticos ou metadados sobre o minion e constituem informações como modelo, número de série, capacidade de memória e sistema operacional. Eles são coletados quando o lacaio se conecta pela primeira vez ao servidor. Eles podem ser usados para atingir um determinado grupo de lacaios em relação a algum aspecto. Por exemplo, você pode executar um comando informando, instale o MongoDB para todas as máquinas com sistema operacional Windows.
- EMódulos/instruções de execução :estes são comandos Ad hoc emitidos para um ou mais lacaios alvo e são executados a partir da linha de comando.
- Pilares :são variáveis definidas pelo usuário distribuídas entre os minions. Eles são usados para:configuração de minion, dados altamente confidenciais, dados arbitrários e variáveis. Nem todos os lacaios são acessíveis a todos os pilares, pode-se restringir quais pilares são para um determinado grupo de lacaios.
- Arquivos de estado . Este é o núcleo do Salt state System (SLS) e representa o estado em que o sistema deve estar. É equivalente a um playbook no caso do Ansible, considerando que eles também estão no formato YAML, ou seja,
#/srv/salt/mongodbInstall.sls (file root)
install_mongodb: (task id)
pkg.installed: (state declaration)
-name:mongodb (name of package to install)
-
Arquivo principal :Usado para mapear um grupo de máquinas e definir quais arquivos de estado devem ser aplicados. ou seja
#/srv/salt/top.sls
base:
‘minion1’:
-mongodb
-
Salt Proxy : Este é um recurso que permite controlar dispositivos que não podem executar um salt-minion padrão. Eles incluem equipamentos de rede com uma API rodando em um sistema operacional proprietário, dispositivos com limitações de CPU e memória ou aqueles que não podem executar minions por motivos de segurança. Um proxy Junos deve ser usado para descoberta, controle, execução remota e gerenciamento de estado desses dispositivos.
Instalação do SaltStack
Podemos usar o comando pip para instalar SaltStack como
$ pip install salt
Para confirmar a instalação, execute o comando $ salt --version e você deverá obter algo como salt 2019.2.2 (Fluorine)
Antes de se conectar ao mestre, o minion exigirá uma configuração mínima do endereço IP do mestre e do id do minion que será usado pelo mestre para sua referência. Essas configurações podem ser feitas nos arquivos /etc/salt/minion.
Podemos então executar o mestre em vários modos que é daemon ou no modo de depuração. Para o caso do daemon, você terá $salt-master -d e para o modo de depuração, $salt-master -l debug. Você precisará aceitar a chave do lacaio antes de iniciá-lo executando $ salt-key -a nameOfMinion. Para listar as chaves disponíveis, execute $ salt-key -l
No caso do lacaio, podemos iniciá-lo com $salt-minion -l debug.
Por exemplo, se quisermos criar um arquivo em todos os minions do master, podemos executar o comando
$ salt ‘’*” file.touch ‘/tmp/salt_files/sample.text
Todos os nós terão um novo arquivo sample.text na pasta salt_files. A opção * é usada para se referir a todos os lacaios. Para especificar, por exemplo, todos os minions com id name tendo a string minion, usaremos uma expressão regex como abaixo
$ salt “minion*” file.touch ‘/tmp/salt_files/sample.text
Para ver os metadados coletados para um determinado lacaio, execute:
$salt ‘minion1’ grains.items.
Configurando o MongoDB com SaltStack
Podemos criar um banco de dados chamado myAppdata com o setDatabase.sls com o conteúdo abaixo
classes:
- service.mongodb.server.cluster
parameters:
_param:
mongodb_server_replica_set: myAppdata
mongodb_myAppdata_password: myAppdataPasword
mongodb_admin_password: cloudlab
mongodb_shared_key: xxx
mongodb:
server:
database:
myAppdata:
enabled: true
password: ${_param:mongodb_myAppdata_password}
users:
- name: myAppdata
password: ${_param:mongodb_myAppdata_password}
Iniciando um único servidor MongoDB
mongodb:
server:
enabled: true
bind:
address: 0.0.0.0
port: 27017
admin:
username: admin
password: myAppdataPasword
database:
myAppdata:
enabled: true
encoding: 'utf8'
users:
- name: 'username'
password: 'password'
Configurando um cluster MongoDB com SaltStack
mongodb:
server:
enabled: true
logging:
verbose: false
logLevel: 1
oplogLevel: 0
admin:
user: admin
password: myAppdataPasword
master: mongo01
members:
- host: 192.168.100.11
priority: 2
- host: 192.168.101.12
- host: 192.168.48.13
replica_set: default
shared_key: myAppdataPasword
Conclusão
Assim como o ClusterControl, o SaltStack é uma ferramenta de automação que pode ser usada para facilitar as tarefas de implantação e operações. Com uma ferramenta de automação, há redução de erros, redução do tempo de configuração e resultados mais confiáveis.