O clustering de banco de dados geralmente envolve a configuração e manutenção de vários servidores e instâncias, todos com um propósito coletivo. Com isso queremos dizer que você pode ter diferentes servidores de banco de dados em diferentes hosts que estão servindo os mesmos dados.
Por exemplo, digamos que você tenha os servidores A, B, C e D, você decide instalar o MongoDB em cada um, mas depois percebe que há uma nova versão que você deveria ter usado. Quando você tem um grande número de servidores e precisa atualizar a versão do MongoDB, configurá-los manualmente (um por um) tem muitos contratempos. Esses contratempos podem incluir; demorar muito para reconfigurar (portanto, seu site terá um longo tempo de inatividade) ou tornar seu banco de dados propenso a alguns erros de configuração.
Além disso, sempre há tarefas repetitivas que você gostaria que fossem executadas automaticamente, em vez de passar pelas mesmas etapas repetidamente, toda vez que deseja fazer alterações semelhantes. Em algum momento também precisamos aprender novos módulos no que diz respeito ao avanço da tecnologia que pode nos ajudar a aumentar o desempenho do cluster
Em termos simples, precisamos de sistemas de automação que possam facilitar todos os empreendimentos mencionados. Puppet é um dos sistemas de software mais preferidos para conseguir isso desde:
- É fácil e rápido configurar e implantar o cluster MongoDB.
- Tarefas repetitivas podem ser facilmente automatizadas para que sejam executadas automaticamente mais tarde.
- Toda a infraestrutura de cluster pode ser gerenciada coletivamente a partir de uma única plataforma.
- Fácil provisionamento para novos nós na nuvem, ambiente híbrido ou físico.
- Orquestre mudanças e eventos em um cluster de nós.
- Descubra recursos em minutos que podem ajudar você a realizar tarefas diferentes com facilidade.
- Escalona bem de 1 a 200 mil nós.
- Suportado por várias plataformas
O que é Marionete?
Puppet é uma linguagem que é usada para levar uma máquina a um estado desejado, ou melhor, é um mecanismo usado para interpretar e aplicar algumas instruções definidas a um sistema servidor. Assim como o Ansible, o Puppet também é uma ferramenta de gerenciamento de configuração usada para automatizar e executar tarefas de cluster de banco de dados. No entanto, é mais avançado e bem estabelecido, considerando que é o mais antigo, portanto, muitos recursos recém-integrados que o tornariam mais sofisticado do que os outros. Uma das principais razões pelas quais eu prefiro o Puppet pessoalmente é a capacidade que ele me dá de configurar um grande número de nós conectados com balanceadores de carga, dispositivos de rede ou firewalls. O Puppet é frequentemente usado em grandes empresas com ambientes complexos.
Como funciona o fantoche
Puppet usa a técnica de idempotência que o ajuda a gerenciar uma determinada máquina desde o momento da criação e durante todo o seu ciclo de vida mesmo com alterações de configuração. A principal vantagem disso é que a máquina é atualizada ao longo de vários anos, em vez de ser construída várias vezes do zero. No caso de uma atualização, o Puppet verifica o status atual da máquina de destino e as alterações serão aplicadas somente quando houver uma alteração específica na configuração.
Idempotência
O fluxo de trabalho de idempotência é mostrado abaixo:
O Puppet master coleta detalhes sobre o estado atual da máquina de destino e o compara com os detalhes de configuração no nível da máquina e, em seguida, retorna os detalhes que são enviados para a camada de conversão.
A camada de conversão compara a configuração recuperada com os detalhes da configuração recém-definidos e, em seguida, cria um catálogo que é enviado para os agentes Puppet de destino, neste caso, os nós de destino para os quais as alterações devem ser aplicadas.
As alterações de configuração são então aplicadas ao sistema para transformá-lo em um estado desejado. Após a implementação das alterações, o agente Puppet envia um relatório de volta ao Puppet master que é documentado para definir o novo estado do sistema como o catálogo fornecido.
Componentes básicos do fantoche
-
Recursos de marionetes
Esses são os principais componentes de modelagem de uma determinada máquina cujas descrições levarão a máquina a um estado desejado.
-
Provedores
Os provedores são recursos específicos usados para adicionar pacotes ao sistema, por exemplo, yum e apt-get. Existem provedores padrão, mas pode-se adicionar mais quando precisar de alguns pacotes.
-
Manifesto
Esta é uma coleção de recursos que são definidos em uma função ou uma classe acoplada para configurar um sistema de destino.
A estrutura deve ser
resource:{‘module’: attribute => value }
Por exemplo instalando o mongodb podemos ter um arquivo manifesto chamado Mongodb.pp com o seguinte conteúdo:
package {‘mongodb’: ensure => installed }
-
Módulos
Este é o principal bloco de construção do Puppet, que é basicamente uma coleção de recursos, modelos e arquivos. Eles podem ser distribuídos em qualquer sistema operacional, portanto, podem ser usados várias vezes com a mesma configuração.
-
Modelos
Os modelos são usados para definir conteúdo personalizado e entrada variável. Eles usam a sintaxe Ruby, ou seja, se você deseja definir uma porta para ouvir:
Listen <% [email protected]_number %>
A variável Port_number neste caso é definida no manifesto que faz referência a este modelo.
-
Arquivos estáticos
Esses são arquivos gerais que podem ser necessários para executar tarefas específicas. Eles estão localizados no diretório de arquivos de qualquer módulo.
Instalação de marionetes
Para fins de aprendizado, vamos instalar e configurar o puppet em uma máquina virtual que criaremos em nossa máquina local. Antes de tudo, você precisará instalar o virtualbox e o vagrant. Após a instalação, abra um novo terminal e crie um diretório Puppet provavelmente em sua área de trabalho e execute o comando $ vagrant init. Isso criará uma máquina virtual e a rotulará como vagrant. Então podemos entrar nesta máquina com o comando $ vagrant ssh.
Se você receber uma tela como a abaixo, sua máquina está funcionando.
Caso contrário, se você estiver em uma máquina servidora, ignore esta etapa e continue adicionando o pacote fantoche como abaixo.
Adicione o pacote fantoche com o comando
$ wget https://apt.puppetlabs.com/puppet5-release-xenial.deb
E então descompacte o pacote e instale com
$ sudo dpkg -i puppet5-release-xenial.deb
Precisamos atualizar nossos repositórios para que executemos
$ sudo apt-get update
Instale o agente fantoche executando
$ sudo apt-get install puppet-agent
Após a conclusão da instalação, podemos confirmar verificando a versão. Você pode precisar sair de sua máquina virtual para que o caminho do Puppet seja adicionado ao ambiente, então execute $ puppet --version ou, se você não tiver feito logout, execute $ /opt/puppetlabs/bin/puppet --version. Se você obtiver um número de versão como 5.5.14, a instalação foi bem-sucedida.
Depois de instalar o MongoDB usando o Mongodb.pp que criamos acima, podemos simplesmente escrever alguma tarefa para configurar um produto de banco de dados e também adicionar um usuário a este banco de dados.
‘Mongodb_database’ é usado para criar e gerenciar bancos de dados dentro do MongoDB
mongodb_database{‘products’:
ensure => present,
tries => 10
}
'Mongodb_user pode ser usado para criar e gerenciar usuários em um banco de dados MongoDB.'
Para adicionar um usuário ao banco de dados de 'produtos'
mongodb_user {userprod:
username => ‘prodUser’,
ensure => present,
password_hash => mongodb_password(‘prodUser’, ‘passProdser’),
database => prodUser,
roles => [‘readWrite’, ‘dbAdmin’],
tries => 10
}
Conclusão
Neste blog aprendemos o que é Puppet, os méritos associados a ele e sua arquitetura de trabalho. O Puppet é um pouco mais complexo em relação às outras ferramentas de gerenciamento (como Chef e Ansible), mas possui muitos módulos que podem ser usados para resolver problemas relacionados ao gerenciamento de banco de dados. Na próxima parte, discutiremos como conectar máquinas remotas para que possam ser reconfiguradas usando os arquivos de manifesto definidos.