MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Implantação e manutenção do MongoDB usando o Ansible


A tecnologia muda no dia a dia e os aplicativos modernos precisam fazer ajustes sérios para atender às expectativas de entrega rápida de suas organizações. Infelizmente, isso os torna mais complexos, mais sofisticados e mais difíceis de manter.

Em termos de gerenciamento de banco de dados, as estruturas de dados dentro do MongoDB mudam de acordo com as necessidades do aplicativo ao longo do tempo e pode ser bastante caro (ou bastante arriscado).

A longo prazo, precisamos ter um banco de dados eficiente configurado facilmente e garantir uma entrega de software competente. Conseguir tudo isso de forma manual vem com uma série de contratempos, como
  1. Coordenação complicada entre os membros da equipe.
  2. Altas chances de repetição de tarefas
  3. Suscetível a muitos erros e erros humanos
  4. Não é fácil superar a complexidade
  5. Redução da colaboração e insatisfação no trabalho
  6. Demora muito
  7. Má responsabilidade e conformidade

As dificuldades de administração de banco de dados estão principalmente centradas em
  • Implantando
  • Manutenção
  • Atualização que pode afetar a sobrecarga operacional em até 95% de redução.

Conseguir isso pode levar muito tempo e esforço manual para o MongoDB. Para garantir o sucesso, você precisará ter um sistema simples com o qual possa garantir que todos os contratempos listados acima possam ser resolvidos a partir de uma única plataforma em tempo hábil, ou seja, de alguma forma, um sistema automatizado. Existem várias opções, mas neste artigo, discutiremos como utilizar o Ansible.

O que é Ansible


Ansible é simplesmente uma linguagem universal que desvenda o mistério de como o trabalho é feito. Em outras palavras, é um mecanismo de orquestração de TI que automatiza a implantação de aplicativos, gerenciamento de configuração e orquestra tarefas de TI mais avançadas, como garantir atualizações sem interrupção e implantações contínuas.

As máquinas podem ser facilmente gerenciadas sem agentes, com foco maior em segurança e confiabilidade por meio do uso de uma linguagem projetada para “auditabilidade” por humanos.

Embora a implantação do MongoDB possa não ser tão difícil, manutenção, backup e monitoramento tornam-se fatores de preocupação crescentes com o passar do tempo. Além disso, não é tão fácil quando você é novo no gerenciamento de banco de dados. Com o Ansible, os desenvolvedores podem implantar e configurar aplicativos com facilidade, além de permitir entrega rápida para qualquer plataforma de hospedagem.

Como o Ansible não faz parte do sistema de cluster de banco de dados, ele pode ser instalado em qualquer computador remoto e uma configuração feita no host do banco de dados. Consulte o guia de instalação para saber qual versão é adequada para o seu sistema operacional.

O Ansible, por padrão, se conecta a um host de banco de dados por meio de um protocolo SSH.

Manuais do Ansible


Playbooks são modelos em que o código do Ansible é escrito, portanto, direciona o próprio Ansible para o que executar de maneira semelhante a uma lista de tarefas. Eles são escritos no formato YAML (Yet Another Markup Language). Cada um contém operações passo a passo que são seguidas pelo usuário em uma determinada máquina que são executadas sequencialmente. A sua estrutura é constituída por uma ou mais Peças. Um Play é basicamente um bloco de código que mapeia um conjunto de instruções definidas em relação a um host específico.

Tags YAML comumente usadas no Ansible

  1. nome


    Essa é a tag que define o nome do playbook do Ansible. É aconselhável definir um nome que defina precisamente o que será feito.
  2. anfitriões


    Isso define um grupo de hosts ou uma lista de hosts em relação aos quais as tarefas definidas devem ser executadas. É uma tag obrigatória que informa ao Ansible em quais hosts executar as tarefas listadas. Como as tarefas podem ser executadas em várias máquinas iguais ou remotas, pode-se definir um grupo de entradas de hosts nesta tag.
  3. var


    Como qualquer outra linguagem de programação, você precisará de variáveis. Com essa tag, você pode definir variáveis ​​que usará em seu playbook.
  4. tarefas


    Essa tag permitirá que você liste um conjunto de tarefas a serem executadas. Tarefas são, na verdade, ações que uma pessoa precisa realizar. Um campo de tarefa define o nome da tarefa que essencialmente ajuda o texto para o usuário durante a depuração do playbook. Um pedaço de código definido como um módulo é vinculado internamente por cada tarefa e quaisquer argumentos que devem ser usados ​​dentro do módulo são passados ​​pela tag tasks.

Uma estrutura simples de playbook se parece com isso...
---
 name: install and configure DB
   hosts: testServer
   become: yes

   vars: 
      mongoDB_Port : 27017
   
   tasks:
   -name: Install the mongodb
      yum: <code to install the DB>
    
   -name: Ensure the installed service is enabled and running
   service:
      name: <your service name>

Escrevendo um manual simples para instalar e iniciar o MongoDB

  1. Ativando o acesso SSH raiz


    Algumas configurações de nós gerenciados podem impedi-lo de fazer login como usuário root, portanto, é necessário definir um manual para resolver isso. Vamos criar um playbook enable-root-access.yml que ficará assim
    ---
    - hosts: ansible-test
      remote_user: ubuntu
      tasks:
        - name: Enable root login
          shell: sudo cp ~/.ssh/authorized_keys /root/.ssh/

    Ao executar o comando
    $ ansible-playbook -i inventory.txt -c ssh enable-root-access.yaml 

    Você deve ver algo como
    PLAY [ansible-test] ***********************************************************
    GATHERING FACTS ***************************************************************
    TASK: [Enable root login] *****************************************************
    PLAY RECAP ********************************************************************
  2. Selecionando hosts e usuários em mongodbInstall.yaml

    ---
    - hosts: ansible-test
      remote_user: root
      become: yes
  3. Adicionando tarefas a serem executadas


    As tarefas são executadas sequencialmente, portanto, precisamos descrevê-las de maneira sequencial, ou seja,
    1. apt_key para adicionar chaves de repositório. A chave GPG pública do MongoDB precisa ser importada primeiro
      - name: Import the public key used by the package management system
          apt_key: keyserver=hkp://keyserver.ubuntu.com:80 id=7F0CEB10 state=present
    2. Adicionando MongoDB apt_repository
      - name: Add MongoDB repository
        apt_repository: repo='deb http://downloads-distro.mongodb.org/repo/ubuntu-upstart dist 10gen' state=present
    3. Instalando pacotes e iniciando o mongod, então recarregue o banco de dados de pacotes local
      - name: install mongodb
        apt: pkg=mongodb-org state=latest update_cache=yes
        notify:
        - start mongodb
    4. Gerenciando serviços, usando handler para iniciar e reiniciar serviços
      handlers:
        - name: start mongodb
          service: name=mongod state=started
Vários noves Torne-se um DBA do MongoDB - Trazendo o MongoDB para a produçãoSaiba mais sobre o que você precisa saber para implantar, monitorar, gerenciar e dimensionar o MongoDBBaixe gratuitamente
O código geral do manual deve ficar assim
---
- hosts: ansible-test
  remote_user: root
  become: yes
  tasks:
  - name: Import the public key used by the package management system
    apt_key: keyserver=hkp://keyserver.ubuntu.com:80 id=7F0CEB10 state=present
  - name: Add MongoDB repository
    apt_repository: repo='deb http://downloads-distro.mongodb.org/repo/ubuntu-upstart dist 10gen' state=present
  - name: install mongodb
    apt: pkg=mongodb-org state=latest update_cache=yes
    notify:
    - start mongodb
  handlers:
    - name: start mongodb
      service: name=mongod state=started

Podemos então executar este arquivo com ansible usando o comando
ansible-playbook -i inventory.txt -c ssh mongodbInstall.yaml

Se o playbook foi executado com sucesso, você deverá ver isso no seu terminal
PLAY [ansible-test] ***********************************************************

GATHERING FACTS ***************************************************************
ok: [12.20.3.105]
ok: [12.20.3.106]

TASK: [Import the public key used by the package management system] ***********
changed: [12.20.3.105]
changed: [12.20.3.106]

TASK: [Add MongoDB repository] ************************************************
changed: [12.20.3.105]
changed: [12.20.3.106]

TASK: [install mongodb] *******************************************************
changed: [12.20.3.105]
changed: [12.20.3.106]

NOTIFIED: [start mongodb] *****************************************************
ok: [12.20.3.106]
ok: [12.20.3.105]

PLAY RECAP ********************************************************************
12.20.3.105                : ok=5    changed=3    unreachable=0    failed=0
12.20.3.106                : ok=5    changed=3    unreachable=0    failed=0

Se agora você executar o mongo, você será direcionado para o shell do mongo
MongoDB shell version v4.0.3
connecting to: mongodb://127.0.0.1:27017
Implicit session: session { "id" : UUID("07c88442-0352-4b23-8938-fdf6ac66f253") }
MongoDB server version: 4.0.3
Welcome to the MongoDB shell.
For interactive help, type "help".
For more comprehensive documentation, see
    http://docs.mongodb.org/
Questions? Try the support group
    http://groups.google.com/group/mongodb-user

Conclusão


O Ansible é um mecanismo de TI de código aberto simples que automatiza a implantação de aplicativos, a orquestração de serviços e o provisionamento de nuvem.

Ele funciona conectando nós de banco de dados e enviando instruções definidas conhecidas como módulos para eles, executando-os por meio de SSH por padrão e, em seguida, se livrando deles quando terminar. Ele não executa nenhum daemons ou servidores, portanto, pode ser executado a partir de qualquer máquina remota. No próximo tutorial, discutiremos como manter um conjunto de réplicas do MongoDB na nuvem usando o Ansible.