As organizações estão usando a infraestrutura na nuvem porque ela oferece velocidade, flexibilidade e escalabilidade. Você pode imaginar se pudermos criar uma nova instância de banco de dados com apenas um clique e levar alguns minutos até que esteja pronto, também podemos implantar o aplicativo mais rapidamente do que quando comparado ao ambiente local.
A menos que você esteja usando o próprio serviço de nuvem do MongoDB, os principais provedores de nuvem não oferecem um serviço MongoDB gerenciado, portanto, não é realmente uma operação de um clique para implantar uma única instância ou cluster. A maneira comum é ativar VMs e implantá-las nelas. A implantação precisa ser cuidada de A a Z - precisamos preparar a instância, instalar o software de banco de dados, ajustar algumas configurações e proteger a instância. Essas tarefas são essenciais, embora nem sempre sejam devidamente cumpridas - com consequências potencialmente desastrosas.
A automação desempenha um papel importante para garantir que todas as tarefas, desde a instalação, configuração, proteção e até que o serviço de banco de dados esteja pronto. Neste blog, discutiremos a automação de implantação para o MongoDB.
Orquestrador de software
Há muitas ferramentas de software novas para ajudar os engenheiros a implantar e gerenciar sua infraestrutura. O gerenciamento de configuração ajuda os engenheiros a implantar de forma mais rápida e eficaz, reduzindo o tempo de implantação de novos serviços. As opções populares incluem Ansible, Saltstack, Chef e Puppet. Todos os produtos têm vantagens e desvantagens, mas todos funcionam muito bem e são muito populares. A implantação de um serviço com estado, como um MongoDB ReplicaSet ou um cluster fragmentado, pode ser um pouco mais desafiador, pois são configurações de vários servidores e as ferramentas têm suporte insuficiente para coordenação incremental e entre nós. Os procedimentos de implantação geralmente exigem orquestração entre nós, com tarefas executadas em uma ordem específica.
Tarefas de implantação do MongoDB para automatizar
A implantação de um servidor MongoDB envolve várias coisas; adicione o repositório MongoDB no local, instale o pacote MongoDB, configure a porta, o nome de usuário e inicie o serviço.
Tarefa:instalar o MongoDB
- name: install mongoDB
apt:
name: mongodb
state: present
update_cache: yes
Tarefa:copie o mongod.conf do arquivo de configuração.
- name: copy config file
copy:
src: mongodb.conf
dest: /etc/mongodb.conf
owner: root
group: root
mode: 0644
notify:
- restart mongodb
Tarefa:criar configuração de limite do MongoDB:
- name: create /etc/security/limits.d/mongodb.conf
copy:
src: security-mongodb.conf
dest: /etc/security/limits.d/mongodb.conf
owner: root
group: root
mode: 0644
notify:
- restart mongodb
Tarefa:configurar o swappiness
- name: config vm.swappiness
sysctl:
name: vm.swappiness
value: '10'
state: present
Tarefa:configurar TCP Keepalive time
- name: config net.ipv4.tcp_keepalive_time
sysctl:
name: net.ipv4.tcp_keepalive_time
value: '120'
state: present
Tarefa:certifique-se de que o MongoDB será iniciado automaticamente
- name: Ensure mongodb is running and and start automatically on reboots
systemd:
name: mongodb
enabled: yes
state: started
Podemos combinar todas essas tarefas em um único manual e executá-lo para automatizar a implantação. Se executarmos um playbook Ansible no console:
$ ansible-playbook -b mongoInstall.yml
Veremos o progresso da implantação do nosso script Ansible, a saída deve ser algo como abaixo:
PLAY [ansible-mongo] **********************************************************
GATHERING FACTS ***************************************************************
ok: [10.10.10.11]
TASK: [install mongoDB] *******************************************************
ok: [10.10.10.11]
TASK: [copy config file] ******************************************************
ok: [10.10.10.11]
TASK: [create /etc/security/limits.d/mongodb.conf]*****************************
ok: [10.10.10.11]
TASK: [config vm.swappiness] **************************************************
ok: [10.10.10.11]
TASK: [config net.ipv4.tcp_keepalive_time]*************************************
ok: [10.10.10.11]
TASK: [config vm.swappiness] **********************************************
ok: [10.10.10.11]
PLAY RECAP ********************************************************************
[10.10.10.11] : ok=6 changed=1 unreachable=0 failed=0
Após a implantação, podemos verificar o serviço MongoDB no servidor de destino.
Automação de implantação do MongoDB usando a GUI do ClusterControl
Existem duas maneiras de implantar o MongoDB usando o ClusterControl. Podemos usá-lo a partir do painel do ClusterControl, é baseado em GUI e precisa apenas de 2 diálogos até acionar um novo trabalho para nova implantação do MongoDB.
Primeiro precisamos preencher o usuário SSH e senha, preencher o Nome do Cluster conforme mostrado abaixo:
E então, escolha o fornecedor e a versão do MongoDB, defina o usuário e senha, e a última é preencher o endereço IP de destino
Automação de implantação do MongoDB usando s9s CLI
A partir da interface de linha de comando, pode-se usar as ferramentas s9s. A implantação do MongoDB usando s9s é apenas um comando de uma linha como abaixo:
$ s9s cluster --create --cluster-type=mongodb --nodes="10.10.10.15" --vendor=percona --provider-version=4.2 --db-admin-passwd="12qwaszx" --os-user=vagrant --cluster-name="MongoDB" --wait
Create Mongo Cluster
/ Job 183 FINISHED [██████████] 100% Job finished.
A implantação do MongoDB, seja um ReplicaSet ou um cluster fragmentado, é muito fácil e totalmente automatizada pelo ClusterControl.