Introdução do Docker 1.12 Serviços. Um serviço replicado, distribuído e com balanceamento de carga pode ser facilmente criado usando serviço docker create comando. Um "estado desejado" do aplicativo, como executar 3 contêineres do Couchbase, é fornecido e o mecanismo de autocorreção do Docker garante que muitos contêineres sejam executados no cluster. Se um contêiner for desativado, outro contêiner será iniciado.
Se um nó for desativado, os contêineres desse nó serão iniciados em um nó diferente. Este blog mostrará como configurar um cluster do Couchbase usando o Docker Services. Muito obrigado a @marcosnils, outro colega Capitão do Docker,
para me ajudar a depurar a rede!
Cluster do Couchbase
Um cluster de servidores Couchbase é normalmente implantado em servidores de commodity. O Couchbase Server tem uma topologia ponto a ponto em que todos os nós são iguais e se comunicam entre si sob demanda. Não existe o conceito de nós mestres, nós escravos e nós de configuração,
O sistema permite que os nós de nome, os nós principais etc. e todo o software carregado em cada nó sejam idênticos. Isso permite que os nós sejam adicionados ou removidos sem considerar seu "tipo". Esse modelo funciona particularmente bem com a infraestrutura de nuvem em geral.
- Iniciar o Couchbase: Iniciar n servidores Couchbase
- Criar cluster: Escolha qualquer servidor e adicione todos os outros servidores a ele para criar o cluster
- Rebalancear o cluster: Reequilibrar o cluster para que os dados sejam distribuídos pelo cluster
ser acessível de fora do cluster.
Configurar o modo Swarm no Ubuntu
- Inicie uma instância do Ubuntu na Amazon. Este blog usou
mx4.largepara a AMI. - Instalar o Docker:
1enrolar -sSL https://get.docker.com/ | sh - Modo Docker Swarm é um recurso opcional e precisa ser ativado explicitamente. Inicializar o modo Swarm:
1doca enxame inicial
Criar o serviço "mestre" do Couchbase
- Crie uma rede de sobreposição:
1doca rede criar -d sobreposição couchbase
Isso é necessário para que vários contêineres do Docker do Couchbase no cluster possam se comunicar entre si. - Crie um serviço "mestre":
1doca serviço criar --nome couchbase-mestre -p 8091:8091 --réplicas 1 --rede couchbase -e TIPO=MESTRE arungupta/couchbase:enxameEssa imagem é criada usando o Dockerfile aqui. Este Dockerfile usa um arquivo script de configuração para
configuram a imagem base do Docker do Couchbase. Primeiro, ele usa API REST do Couchbase para configurar a cota de memória, índice de configuração, dados e
serviços de consulta, credenciais de segurança e carrega um bucket de dados de amostra. Em seguida, ele invoca o CLI do Couchbase para adicionar os comandos
nó do Couchbase ao cluster ou adicionar o nó e reequilibrar o cluster. Isso se baseia em três variáveis de ambiente:TIPO: Define se o pod de ingresso é de trabalho ou mestreMESTRE DA BASE DE SOFÁ: Nome do serviço mestreAUTO_REBALANCE: Define se o cluster precisa ser rebalanceado
Para esse primeiro arquivo de configuração, a variável de ambiente TYPE é definida como MASTER e, portanto, nenhuma configuração adicional é feita na imagem do Couchbase.Esse serviço também usa a rede de sobreposição criada anteriormente chamada
couchbase. Ele expõe a porta 8091 que faz com que o Console da Web do Couchbase acessível fora do cluster. Esse serviço contém apenas uma réplica do contêiner. - Verificar o status do serviço do Docker:
123ubuntu@ip-172-31-26-234:~$ doca serviço lsID NOME RÉPLICAS IMAGEM COMANDOcecl1rl5ecyr couchbase-mestre 1/1 arungupta/couchbase:enxame
Isso mostra que o serviço está em execução. O número "desejado" e "esperado" de réplicas é 1 e, portanto, está correspondendo.
- Verifique as tarefas no serviço:
123ubuntu@ip-172-31-26-234:~$ doca serviço ps couchbase-mestreID NOME IMAGEM NÓ DESEJADO ESTADO ATUAL ESTADO ERRO2xuw1h0jvantsgj9f8zuj03k8 couchbase-mestre.1 arungupta/couchbase:enxame ip-172-31-26-234 Em execução Em execução 30 segundos atrás
Isso mostra que o contêiner está em execução.
- Acesse o Console da Web do Couchbase usando o endereço IP público e ele deverá ter a seguinte aparência:
A imagem usada no arquivo de configuração é configurada com o parâmetroAdministradornome de usuário esenhasenha. Digite as credenciais para ver o console:
- Clique em Server Nodes (Nós do servidor) para ver quantos nós do Couchbase fazem parte do cluster. Como esperado, ele mostra apenas um nó:

Criar o serviço "worker" do Couchbase
- Criar o serviço "worker":
1doca serviço criar --nome couchbase-trabalhador --réplicas 1 -e TIPO=TRABALHADOR -e MESTRE DA BASE DE SOFÁ=couchbase-mestre.couchbase --rede couchbase arungupta/couchbase:enxame
Esse RC também cria uma única réplica do Couchbase usando o mesmo
arungupta/couchbase:swarmimagem. As principais diferenças aqui são:TIPOé definida comoTRABALHADOR. Isso adiciona um nó de trabalho do Couchbase ao cluster.MESTRE DA BASE DE SOFÁé passado o nome do serviço mestre,couchbase-master.couchbaseno nosso caso. Isso usa o mecanismo de descoberta de serviços incorporado ao Docker para o trabalhador e o
o mestre para se comunicar.
- Verificar o serviço:
1234ubuntu@ip-172-31-26-234:~$ doca serviço lsID NOME RÉPLICAS IMAGEM COMANDOaw22g79o3u8z couchbase-trabalhador 1/1 arungupta/couchbase:enxamececl1rl5ecyr couchbase-mestre 1/1 arungupta/couchbase:enxame - A verificação do Console da Web do Couchbase mostra a saída atualizada:

Isso mostra que um servidor está pendente para ser rebalanceado,AUTO_REBALANCEA variável de ambiente poderia ter sido definida comoverdadeirooufalsopara
ativar reequilíbrio. Isso garante que o nó seja apenas adicionado ao cluster, mas que o cluster em si não seja rebalanceado. Para rebalancear o cluster, é necessário
redistribuir os dados em vários nós do cluster. A maneira recomendada é adicionar vários nós e, em seguida, reequilibrar manualmente o cluster usando o Console da Web.
Adicionar nós do Couchbase por meio do dimensionamento do serviço do Docker
- Dimensionar o serviço:
1doca serviço escala couchbase-trabalhador=2 - Verifique o serviço:
1234ubuntu@ip-172-31-20-209:~$ doca serviço lsID NOME RÉPLICAS IMAGEM COMANDO1k650zjrwz00 couchbase-mestre 1/1 arungupta/couchbase:enxame5o1i4eckr9d3 couchbase-trabalhador 2/2 arungupta/couchbase:enxame
Isso mostra que duas réplicas do trabalhador estão em execução. - Verifique o Console da Web do Couchbase:

Como esperado, dois servidores foram adicionados ao cluster e estão pendentes de rebalanceamento. - Opcionalmente, você pode reequilibrar o cluster clicando no botão
Reequilíbrioe ele será exibido como:

Após a conclusão do rebalanceamento, o Console da Web do Couchbase é atualizado conforme mostrado:

- Veja todos os contêineres em execução usando
docker ps:
12345ubuntu@ip-172-31-26-234:~$ doca psCONTAINER ID IMAGEM COMANDO CRIADO STATUS PORTOS NOMESa0d927f4a407 arungupta/couchbase:enxame "/entrypoint.sh /opt/" 21 segundos atrás Para cima 20 segundos 8091-8094/tcp, 11207/tcp, 11210-11211/tcp, 18091-18093/tcp couchbase-trabalhador.2.4ufdw5rbdcu87whgm94yfv9yk22bde7f6471c arungupta/couchbase:enxame "/entrypoint.sh /opt/" 2 minutos atrás Para cima 2 minutos 8091-8094/tcp, 11207/tcp, 11210-11211/tcp, 18091-18093/tcp couchbase-trabalhador.1.f22c2gghu88bnbjl5ko1wlru5f97e8bc091c3 arungupta/couchbase:enxame "/entrypoint.sh /opt/" 7 minutos atrás Para cima 7 minutos 8091-8094/tcp, 11207/tcp, 11210-11211/tcp, 18091-18093/tcp couchbase-mestre.1.2xuw1h0jvantsgj9f8zuj03k8
Além de criar um cluster, o Couchbase Server oferece suporte a uma série de alta disponibilidade e recuperação de desastres (HA/DR). A maioria das estratégias de HA/DR
Os sistemas de gerenciamento de dados do Couchbase dependem de uma abordagem multifacetada para maximizar a disponibilidade, aumentar a redundância dentro e entre os data centers e realizar backups regulares. Agora que seu cluster do Couchbase está pronto, você pode executar seu primeiro aplicativo de amostra.
Saiba mais sobre o Couchbase e os contêineres:
- Couchbase em contêineres
- Siga-nos em @couchbasedev ou @couchbase
- Faça perguntas sobre Fóruns do Couchbase

Hi,
obrigado pelo guia e pelo couchbase :)
Estou tentando essa solução em meu swarm. Meu objetivo é NÃO usar volumes persistentes e ter certeza de que pelo menos um contêiner está preservando os dados para que as outras instâncias possam recuperar seus dados por meio deles. Sua solução parece viável, mas como posso armazenar a configuração de todos os nós? Preciso passar um arquivo ini para cada um deles, certo? Posso definir a senha ou outra configuração na inicialização por meio de variáveis de ambiente?