É 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:
- Crie algo de uso geral e fácil de usar.
- Permitir uma configuração flexível e, ao mesmo tempo, voltar a padrões sensatos.
- 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=3
na 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
1 2 |
exportação COUCHBASE_ADMINISTRATOR_USERNAME=Administrador exportação COUCHBASE_ADMINISTRATOR_PASSWORD=senha |
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
1 2 3 4 5 6 7 8 |
NOME DO NÓ DA BASE DE SOFÁ=Londres COUCHBASE_CLUSTER_NAME=Londres-agrupamento COUCHBASE_BUCKET=saúde NOME DE USUÁRIO DO COUCHBASE_RBAC=administrador COUCHBASE_RBAC_PASSWORD=senha NOME_DA_BASE_DO_CAMA='J. D. User FUNÇÕES DE SOFÁ-BASE_RBAC=Administrador COUCHBASE_SERVER_PORTS="11091-11094:8091-8094::14210:11210" |
Por fim, para iniciar o cluster, você invocaria algo como o seguinte na linha de comando.
1 |
$ ./servidor CONTAGEM DE NÓS DE BASE DE SOFÁ=3 < Londres-agrupamento |
Scripts relacionados
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