É muito simples executar uma instância do Couchbase Server em um contêiner do Docker. É preciso um pouco mais de trabalho para instalar e configurar totalmente um cluster. Nesta postagem, vou apresentar um script de shell que escrevi para automatizar o processo.

Histórico

Para o Couchbase Connect 2017, criamos um aplicativo que mostra tudo, desde o Serviço de análise do Couchbase até a sincronização de dados móveis em tempo real usando Couchbase Mobile. Usamos um patch de detecção de temperatura NFC, geramos alertas por meio do cliente da Web baseado em Vue.js, alteramos esquemas em tempo real, enviamos notificações por push, fazemos fail over de clusters e muito mais. Confira este vídeo do sistema em ação.

Na demonstração, Servidor Couchbase, Gateway de sincronizaçãoe o back-end da Web estão todos em execução na nuvem. Estamos trabalhando para liberar o código de todo o projeto. Como parte disso, quero poder executar uma versão reduzida em uma única máquina.

Isso significa, idealmente, executar dois clusters do Couchbase Server, o Sync Gateway e o aplicativo de backend Node.js, todos simultaneamente.

O Docker facilita muito a execução de instâncias separadas do Couchbase. No entanto, a configuração completa de um cluster inteiro ainda requer algum trabalho. É aí que entra o script que escrevi.

Um script flexível de criação de clusters

O script foi escrito usando o Bash. Eu tinha alguns objetivos em mente ao desenvolvê-lo:

  1. Crie algo de uso geral e fácil de usar.
  2. Permitir uma configuração flexível e, ao mesmo tempo, voltar a padrões sensatos.
  3. Minimize as dependências do Bash, dos utilitários padrão comuns (vale a pena fazer algumas coisas no awk) e do cli do Docker.

Publiquei o código e outras partes relacionadas no Github em esta informação. Aqui está o script de formação do cluster.

https://gist.github.com/HodGreeley/fa88c74baf55115ef83135d4d069e796#file-server

Esboço

Em termos gerais, na ordem, o script cuida do seguinte:

  • Configuração de parâmetros
  • Iniciar o número solicitado de instâncias do Couchbase Server, uma por contêiner do Docker, usando a imagem de produção mais recente
  • Mapeamento das portas necessárias (compensando cada instância para evitar colisões)
  • Configuração da conta administrativa e da senha
  • Selecionar os serviços disponíveis e definir as alocações de memória para eles
  • Criação de um balde
  • Concessão de direitos a uma conta de cliente usando RBAC
  • Combinando os nós em um cluster
  • Rebalanceamento do cluster final

Não analisarei o roteiro em detalhes. Há comentários que informam qual seção corresponde ao esboço. Fique à vontade para deixar um comentário aqui ou no Github se tiver dúvidas.

Uso

Escrevi isso para configurar clusters em meu Mac. Espero que funcione igualmente bem em qualquer máquina que possa executar o Bash e o Docker. O script não tem opções. Tudo é controlado pelo fornecimento de parâmetros como pares de chave/valor. Eles são fornecidos de quatro maneiras. Em ordem de prioridade, da menor para a maior,

  • Padrões (gravados no próprio script)
  • Variáveis de ambiente existentes
  • Linhas alimentadas na entrada padrão
  • Fornecidos como argumentos de linha de comando

Nas duas últimas instâncias, os parâmetros são fornecidos da mesma forma que você definiria uma variável de ambiente. Por exemplo, para solicitar 3 nós, adicione COUCHBASE_NODE_COUNT=3na linha de comando ou redirecionado de um arquivo. Observe onde os padrões estão definidos para ver o que você pode controlar.

O mapeamento de portas requer uma pequena explicação. O Couchbase usa vários intervalos de portas. Para criar um cluster, várias portas precisam ser expostas pelo Docker e mapeadas para portas abertas no computador host. Para fazer isso, especifique blocos de intervalos e mapeamentos, separados por dois pontos (::). Por exemplo, a configuração COUCHBASE_SERVER_PORTS="9091-9094:8091-8094::12210:11210 mapeia as portas padrão do Couchbase 8091-8094 e 11210 para as portas do computador host 9091-9094 e 12210, respectivamente.

Exemplo

Em um cenário típico, você pode ter as informações da conta do administrador do cluster atribuídas em variáveis de ambiente. Ou seja

Você pode então manter outras informações gerais de configuração em um arquivo. O nome não importa. Aqui está um que eu uso e chamo de cluster de londres


Por fim, para iniciar o cluster, você invocaria algo como o seguinte na linha de comando.

No lista você também pode encontrar um script semelhante para configurar o Sync Gateway. Esse script é um pouco mais desenvolvido em termos de comandos para criar um contêiner, iniciá-lo, interrompê-lo e removê-lo. Como o Sync Gateway requer um arquivo de configuração, o script precisa trabalhar um pouco mais para fazer as substituições de parâmetros. Fora isso, ele é semelhante e mais simples do que o script do servidor.

Há também um script que configura toda a demonstração, incluindo o uso dos dois scripts anteriores. Como mencionei anteriormente, estamos trabalhando para liberar o código de todo o aplicativo, de ponta a ponta. O script de configuração dá uma ideia do que está envolvido.

Pós-escrito

O Couchbase é de código aberto e grátis para experimentar.
Comece a usar com código de amostra, consultas de exemplo, tutoriais e muito mais.
Encontre mais recursos em nosso portal do desenvolvedor.
Siga-nos no Twitter @CouchbaseDev.
Você pode postar perguntas em nosso fóruns.
Participamos ativamente de Estouro de pilha.
Entre em contato comigo pelo Twitter com perguntas, comentários, tópicos que você gostaria de ver etc. @HodGreeley

Autor

Postado por Hod Greeley, Advogado do desenvolvedor, Couchbase

Hod Greeley é um defensor dos desenvolvedores da Couchbase e mora no Vale do Silício. Ele tem mais de duas décadas de experiência como engenheiro de software e gerente de engenharia. Trabalhou em diversas áreas de software, incluindo física e química computacional, segurança de computadores e redes, finanças e dispositivos móveis. Antes de ingressar na Couchbase em 2016, Hod liderou as relações com desenvolvedores para dispositivos móveis na Samsung. Hod é Ph.D. em física química pela Universidade de Columbia.

Deixar uma resposta