Práticas recomendadas para plataformas virtualizadas fornecem as práticas recomendadas para executar o Couchbase em uma plataforma virtualizada, como Amazon Web Services e Azure.
Além disso, ele também fornece algumas recomendações para executá-lo como contêiner do Docker.
Uma das recomendações é mapear os dados específicos do nó do Couchbase para uma pasta local.
Vamos entender isso com mais detalhes.
Armazenamento implícito por contêiner
Se um contêiner do Couchbase for iniciado como:
|
1 |
doca executar -d -p 8091-8093:8091-8093 -p 11210:11210 --nome db couchbase/servidor:caixa de areia |
Esse contêiner:
- Inicia em um modo desvinculado usando
-d - Diferentes portas de consulta, armazenamento em cache e administração são mapeadas usando
-p - Um nome é fornecido usando
--name - A imagem é
couchbase/server:sandbox
Por padrão, os dados do contêiner são armazenados em um volume gerenciado. Verificação de montagens de volume usando o inspeção de docas mostra o comando:
|
1 2 3 4 5 6 7 8 9 10 11 12 |
doca inspecionar --formato '{{json .Suportes }}' db | jq [ { "Nome": "aa3c06f9c506d52bfb5d3d265f7b63045df0fea996998f12ce08b2543345e948", "Fonte": "/var/lib/docker/volumes/aa3c06f9c506d52bfb5d3d265f7b63045df0fea996998f12ce08b2543345e948/_data", "Destino": "/opt/couchbase/var", "Motorista": "local", "Modo": "", "RW": verdadeiro, "Propagação": "" } ] |
Os dados do Couchbase são armazenados no sistema de arquivos do contêiner definido pelo valor de Fonte atributo. No Docker para Mac ou Windows, isso pode ser verificado fazendo login no sistema de arquivos raiz:
|
1 |
doca executar -ele --pid=hospedeiro --privilegiado debian:jessie nsenter -t 1 -m -p -n |
Em uma máquina Linux, isso pode ser verificado diretamente no sistema de arquivos do host.
Agora você pode ver o diretório de dados:
|
1 2 |
010e52853bc6:~# ls /var/lib/docker/volumes | grep aa3c aa3c06f9c506d52bfb5d3d265f7b63045df0fea996998f12ce08b2543345e948 |
Um novo diretório é criado para uma nova execução do contêiner. Esse diretório ainda estará disponível quando o contêiner for parado e removido, mas não será mais facilmente acessível. Portanto, nenhum dado é preservado durante as reinicializações do contêiner. O volume pode ser explicitamente
removido, juntamente com o contêiner, usando o comando:
|
1 |
doca rm -v db |
Se o contêiner for encerrado, todo o estado do aplicativo será perdido.
Mapeamento explícito do diretório do host
Agora, vamos iniciar um contêiner do Couchbase com mapeamento explícito de volume:
|
1 |
doca executar -d -p 8091-8093:8091-8093 -p 11210:11210 --nome db -v ~/couchbase:/optar/couchbase/var couchbase/servidor:caixa de areia |
Esse contêiner é muito semelhante ao contêiner iniciado anteriormente. A principal diferença é que um diretório do host ~/couchbase é mapeado para um diretório no contêiner /opt/couchbase/var. O contêiner do Couchbase persiste
quaisquer dados em /opt/couchbase/var no sistema de arquivos do contêiner. Agora, esse diretório é mapeado para um diretório no sistema de arquivos do host. Isso permite manter o estado do contêiner fora do sistema de arquivos do host. O
ignora o sistema de arquivos de união usado pelo Docker e expõe o sistema de arquivos do host ao contêiner. Isso permite que o estado persista entre as reinicializações do contêiner. O novo contêiner só precisa começar exatamente com o mesmo mapeamento de volume. Mais detalhes
sobre o contêiner pode ser visto como:
|
1 |
doca inspecionar --formato '{{json .Suportes }}' db | jq |
jq é um processador JSON que precisa ser instalado separadamente. E a saída é mostrada como:
|
1 2 3 4 5 6 7 8 9 |
[ { "Fonte": "/Usuários/arungupta/couchbase", "Destino": "/opt/couchbase/var", "Modo": "", "RW": verdadeiro, "Propagação": "rprivate" } ] |
Isso mostra o diretório de origem e de destino. RW mostra que o volume é de leitura/gravação. Se o contêiner for iniciado usando o Docker para Mac, então Console da Web do Couchbase é
acessível em http://localhost:8091. O Compartimentos de dados mostra a guia padrão amostra de viagem balde:

Clique em Criar novo bucket de dados para criar um novo bucket de dados. Dê a ele o nome amostra:

O Compartimentos de dados é atualizada com esse bucket recém-criado:

Agora pare e remova o contêiner:
|
1 2 |
doca parar db doca rm db |
Inicie o contêiner novamente usando o mesmo comando:
|
1 |
doca executar -d -p 8091-8093:8091-8093 -p 11210:11210 --nome db -v ~/couchbase:/optar/couchbase/var couchbase/servidor:caixa de areia |
Compartimentos de dados mostrará os mesmos dois buckets no Console da Web do Couchbase. Nesse caso, se o contêiner for iniciado em um host diferente, o estado não estará disponível. Ou, se o host morrer, o estado será perdido.
Uma alternativa e uma maneira mais robusta e infalível de gerenciar a persistência em contêineres é usar um sistema de arquivos de rede compartilhado, como o Ceph, GlusterFS ou Sistema de arquivos de rede.
Algumas outras abordagens comuns são o uso de Plug-ins de volume do Docker como Flocker do ClusterHQ ou do armazenamento definido por software
tais como PortWorx. Todas essas técnicas de armazenamento simplificam a forma como o estado de um contêiner pode ser salvo em um ambiente com vários contêineres e vários hosts. Um blog futuro abordará essas técnicas em detalhes.
Leia mais detalhes em Gerenciamento de dados em contêineres.
couchbase.com/containers fornecem mais detalhes sobre como executar o Couchbase em diferentes estruturas de contêineres.
Mais informações sobre o Couchbase:
Para fins de posteridade, a abordagem acima não funcionará, pois o endereço IP no contêiner será alterado após a reinicialização.
Veja:
https://github.com/couchbase/docker/issues/82
https://github.com/couchbase/kubernetes/issues/27