Arkadiusz Borucki trabalha como a Engenheiro de confiabilidade de sites na Amadeus, com foco em bancos de dados NoSQL e automação. Em seu trabalho diário, ele usa Couchbase, MongoDB, Oracle, Python e Ansible. Ele se autoproclama um entusiasta de big data, interessado em tecnologias de armazenamento de dados, sistemas distribuídos, análise e automação. Ele dá palestras em várias conferências e grupos de usuários nos Estados Unidos e na Europa. Você pode encontrá-lo no Twitter em @_Aras_B

pasted image 0 1

Motivação: Por que usar a infraestrutura como código?

Muitas equipes de TI ainda dependem da configuração manual para gerenciar a infraestrutura - procedimentos antigos e scripts de shell desatualizados ainda estão em uso.

Às vezes, os membros de uma equipe usam procedimentos e scripts diferentes para o mesmo banco de dados. Essas pessoas podem deixar a empresa sem compartilhar conhecimentos ou dicas. Essa abordagem resulta em problemas, erros, implementações lentas e ambientes inconsistentes.

Os farms de servidores estão ficando cada vez maiores e o tamanho dos dados está crescendo de gigabytes para tera ou petabytes. Máquinas individuais não são mais capazes de lidar com essa quantidade de dados. Portanto, temos que dimensionar nosso banco de dados horizontalmente, usar mais máquinas e distribuir os dados entre elas.

Quando tivermos dois, cinco ou dez clusters da "velha escola" configurados com base em procedimentos e scripts, isso será suficiente. Os problemas surgem quando a fazenda está crescendo rapidamente.

  • O que fazer quando sua implantação tem centenas de servidores? 
  • Como ter certeza o ambiente é consistente?
  • Como controlar o que está instalado no o máquinas?
  • Como rastrear tudo o mudanças?

As informações sobre a configuração da infraestrutura devem ser centralizadas. A infraestrutura deve ser tratada como um software. como código que podem ser gerenciados com as mesmas ferramentas e processos usados pelos desenvolvedores de software. Por exemplo, use código para descrever a infraestrutura. Crie um modelo de sua implantação do Couchbase - como um código com controle de versão nele. Você não só poderá rastrear quem fez o quê, como também poderá reverter para uma configuração anterior. A implementação do Couchbase será consistente porque as mesmas configurações serão aplicadas a todas as máquinas. Para evitar problemas e interrupções futuras, seu farm do Couchbase deve ser consistente, a configuração deve ser centralizada e dividida entre ambientes de produção e de não produção.

Você pode testar novas configurações e definições no ramo de teste ou desenvolvimento antes de aplicar essas alterações na produção!

Codificar tudo

Use o código para descrever a infraestrutura. Uso Ansible para gerenciamento de servidores físicos ou virtuais (aplicação de patches, atualizações, gerenciamento de configuração, gerenciamento de rede, implantações de novos clusters, orquestração).

Versão tudo

Uso Git para gerenciar a infraestrutura como um repositório de código. Git é um sistema de controle de versão distribuído de código aberto. Use um ramificação de acordo com suas necessidades comerciais (filial de produção e filial de teste).

Gerencie sua implantação do Couchbase com o Git

pasted image 0

Um repositório

Use uma infraestrutura do Git como um repositório de código por organização ou empresa. Em um repositório Git, você pode ter algumas ramificações (produção, desenvolvimento, teste, preparação etc.).

Aresponsável: Como operar com o sistema distribuído Couchbase agrupamento

As operações manuais em um farm de banco de dados consomem tempo e recursos. Mais operações manuais trazem mais erros humanos, mais sobrecarga e inconsistência.

Você consegue imaginar uma fazenda com 400 servidores? Quanto tempo leva para fazer login em cada máquina e alterar as configurações? E se você pular uma ou duas máquinas? E se você aplicar configurações diferentes em algumas máquinas por engano?

Ansible é uma ferramenta perfeita para o gerenciamento de configurações e a orquestração de sua infraestrutura. Ao usar o Ansible, você pode usar Infraestrutura como código (mantenha a definição do servidor Couchbase no repositório Git, acompanhe as alterações e use todas as vantagens do controle de versão Git).

Use o Ansible módulo git para implementar alterações do repositório Git em seu farm de banco de dados distribuído. O módulo git do Ansible obtém o código da url git especificada e o envia para o diretório de destino.

  • O Ansible não tem agente e usa uma abordagem push (SSH).
  • O Ansible é baseado em arquivos YAML.
  • É uma boa alternativa ao Puppet.
  • O Ansible reduz as etapas manuais nos servidores.
  • O Ansible ajuda Redução 95% em despesas gerais operacionais

Automação

  • Reduza a sobrecarga e os erros humanos, acelere os processos e forneça consistência - use o Ansible para a automação do seu farm do Couchbase.

Orquestração

  • Vamos colocar lógica na automação e eliminar etapas repetitivas. O Ansible também pode ser usado como um orquestrador!

Automação está preocupado com uma única tarefa: iniciar o serviço do Couchbase, configurar um cluster, interromper o processo do Couchbase.

Orquestração está preocupado em automatizar a execução de um fluxo de trabalho de um processo.

# Exemplo de checkout do git a partir do Ansible Playbook

Use a opção de versão para especificar um determinado ramo, tag ou ID de confirmação. Depois de extrair o código do repositório do Git, você poderá aplicá-lo à sua implantação do Couchbase. Você pode aplicá-lo em todos os servidores ou apenas em parte do farm. Você também pode especificar uma lista de hosts no arquivo de inventário do Ansible e executá-lo desta forma:

# Exemplo de execução do Ansible Playbook para o cluster "couchstg"

 

Git: O que podemos manter no Git?

Configuração do servidor repositórios:

  • O layout padrão dos sistemas de arquivos
  • Lista de pacotes necessários para o Linux
  • Parâmetros do kernel
  • Usuários e grupos necessários
  • Scripts Cron
  • Configurações de segurança

Repositórios Couchbase/Ansible:

  • Definição do cluster do Couchbase
  • Couchbase Ansible playbooks
  • Funções do Couchbase
  • Arquivos de inventário de hosts do Couchbase
  • Configuração do RBAC
  • Configuração do XDCR

Aresponsável: O que deve ser automatizado?

  • Implementação de cluster
  • Atualizações
  • Dimensionamento
  • Resiliência
  • Monitoramento
  • Alerta
  • Configurações de segurança
  • Backup e restauração
  • Rebalanceamento do cluster do Couchbase

  • Failover do Couchbase
  • Criação do bucket do Couchbase
  • Kernel do Linux e patches de segurança
  • Qualquer atividade manual da GUI ou do shell do Couchbase

Não deve haver suporte para instalações manuais de clusters e gerenciamento manual de nós. Automatize o máximo possível e sempre envie as alterações de código para o Git. O Couchbase fornece API REST endpoints. No manual do Ansible, você pode usar os métodos HTTP - GET, POST, PUT, DELETE.

A API REST do Couchbase permite que você faça qualquer alteração em um farm do Couchbase sem um único clique na GUI.

O playbook do Ansible também pode executar comandos CLI do Couchbase:

Exemplo de failover automático # (comandos CLI) do Ansible Playbook

ou # Exemplo de rebalanceamento do Ansible Playbook

 

Exemplo # Instalar o servidor couchbase a partir do Ansible Playbook

 

Couchbase: API REST

O Couchbase API REST permite que você gerencie uma implantação do servidor Couchbase, bem como execute operações como o armazenamento de documentos de design e a consulta de resultados diretamente do playbook do Ansible.

Você pode facilmente fazer chamadas à API REST do Couchbase a partir do seu código Ansible. Você também pode criar funções personalizadas do Ansible para o Couchbase!

O Couchbase oferece o seguinte API RESTs:

  • API de cluster - A API REST do cluster gerencia as operações do cluster
  • API de nós do servidor - A API REST dos nós do servidor gerencia os nós em um cluster
  • API de grupos de servidores - A API REST de grupos de servidores refere-se ao recurso Rack Zone Awareness, que permite agrupamentos lógicos de servidores em um cluster em que cada grupo de servidores pertence fisicamente a um rack ou zona de disponibilidade
  • API de baldes - A API REST de buckets cria, exclui, libera e recupera informações sobre buckets e operações de buckets
  • API de visualizações - A API REST de visualizações é usada para indexar e consultar documentos JSON.
  • API DO XDCR - A API REST do XDCR é usada para gerenciar as operações do XDCR (Cross Datacenter Replication)
  • API de registros - A API REST de registros fornece os pontos de extremidade da API REST para recuperar informações de registro e diagnóstico, além de mostrar como um SDK pode adicionar entradas a um registro
  • API do usuário - Um usuário somente leitura é criado com o ponto de extremidade /settings/readOnlyUser URI - somente um usuário somente leitura pode ser criado

Exemplo # O Ansible esvazia o conteúdo do bucket especificado por meio da API REST:

Resumo

Em um mundo moderno, quando os dados estão crescendo mais rápido do que nunca e precisamos de mais e mais máquinas para manter e conservar nossos dados, o gerenciamento centralizado e a automação com orquestração são muito importantes. Consistência, redução de despesas gerais, redução de erros humanos e processos mais rápidos são bons motivos para começar a usar a infraestrutura como código, juntamente com automação, orquestração, ferramentas e técnicas relacionadas a isso.

O cluster distribuído do Couchbase é um candidato perfeito. O Couchbase funciona bem com ferramentas como o Ansible e também oferece uma interface útil de API REST. Os métodos da API REST do Couchbase podem ser chamados a partir de playbooks do Ansible ou scripts Python.

A prática de DevOps aumenta a velocidade e a estabilidade das implementações e, ao mesmo tempo, reduz o tempo de recuperação de falhas e os prazos de atualização de software.

Na segunda parte deste tutorial, mostrarei passo a passo como criar a função do Ansible para um cluster do Couchbase usando métodos da API REST do Couchbase e comandos de linha de comando.

Autor

Postado por Laura Czajkowski, gerente da comunidade de desenvolvedores, Couchbase

Laura Czajkowski é a Snr. Developer Community Manager da Couchbase, supervisionando a comunidade. Ela é responsável pelo nosso boletim informativo mensal para desenvolvedores.

Deixar uma resposta