Portworx Logo Couchbase Logo

Os contêineres são feitos para serem efêmeros e, portanto, escalam muito bem para aplicativos sem estado. Os contêineres com estado, como o Couchbase, precisam ser tratados de forma diferente. Gerenciando a persistência para contêineres do Docker fornecem uma excelente visão geral de como gerenciar a persistência para contêineres com estado.

Este blog explicará como usar o Plug-ins de volume do Docker e Portworx para criar um contêiner com estado.

Por que a Portworx?

Portworx é um serviço de dados de contêiner fácil de implantar que oferece persistência, replicação, instantâneos, criptografia, RBAC seguro e muito mais. Alguns dos benefícios são:

  1. Volumes granulares de contêineres - A Portworx pode pegar vários volumes EBS por host, agregar a capacidade e derivar volumes virtuais (soft) granulares de contêineres por contêiner.
  2. HA de zona de disponibilidade cruzada - A Portworx protegerá os dados, em nível de bloco, em várias instâncias de computação em zonas de disponibilidade. Como os controladores de replicação reiniciam os pods em nós diferentes, os dados ainda estarão altamente disponíveis nesses nós.
  3. Suporte para operações de dados corporativos - A Portworx implementa snapshots granulares de contêineres, classe de serviço e classificação por níveis sobre os volumes físicos disponíveis.
  4. Facilidade de implementação e provisionamento - A própria Portworx é implantada como um contêiner e integrada às ferramentas de orquestração. O DevOps pode provisionar programaticamente o armazenamento granular do contêiner com qualquer propriedade, como tamanho, classe de serviço, chave de criptografia etc.

Configurar a instância do AWS EC2

A Portworx é executada somente no Linux ou no CoreOS. Configure uma instância do Ubuntu no AWS EC2:

  1. Inicie a instância do Ubuntu 14.04 com m3.medium tipo de instância. Certifique-se de adicionar a porta 8091 às regras de segurança de entrada. Isso permite que Console da Web do Couchbase para ficar acessível depois.
  2. Faça login na instância do EC2 usando o comando: ssh -i ~/.ssh/arun-cb-west1.pem ubuntu@
  3. Atualize a instância do Ubuntu: sudo apt-get update
  4. Instalar o Docker: curl -sSL https://get.docker.com/ | sh. Instruções mais detalhadas estão disponíveis em Obter o Docker para Ubuntu.
  5. Habilite o acesso não raiz para o comando docker: sudo usermod -aG docker ubuntu
  6. Faça logout da instância do EC2 e faça login novamente

Criar volume do AWS EBS

  1. Crie um volume EBS de 10 GB usando o console do EC2, conforme explicado em documentos.
  2. Obtenha o ID da instância no console do EC2. Anexe esse volume à instância do EC2 usando esse ID de instância e use o nome de dispositivo padrão /dev/sdf.
    Portworx EC2 Create Volume
  3. Uso lsblk na instância do EC2 para verificar se o volume está anexado à instância:

Contêineres Portworx

  1. A composição do armazenamento físico de cada nó, todos os volumes provisionados no cluster, bem como seus mapeamentos de contêineres, são armazenados em um cluster etcd. Inicie um cluster etcd:
  2. Por padrão, os volumes montados na raiz não podem ser compartilhados. Ative essa opção usando o comando:

    Isso é explicado com mais detalhes em Configuração do Ubuntu e montagens compartilhadas.
  3. O contêiner do PX-Developer (px-dev) em um servidor com o Docker Engine transforma esse servidor em um nó de armazenamento de expansão horizontal. O PX-Enterprise, por outro lado, oferece suporte a vários clusters e várias nuvens, em que o armazenamento sob gerenciamento pode estar no local ou em uma nuvem pública como a AWS.
    Para este blog, iniciaremos um contêiner px-dev:

    Detalhes completos sobre esse comando estão disponíveis em Executar o PX com o Docker.
  4. Procure por registros que usem registros do contêiner docker -f px e fique atento às declarações a seguir:
  5. Verifique o status dos volumes anexados que estão disponíveis para a Portworx usando sudo /opt/pwx/bin/pxctl status para ver a saída:

    Ele mostra a capacidade total disponível e utilizada.

Volume do Docker

  1. Vamos criar um volume do Docker:

    Mais detalhes sobre esse comando estão em Criar volumes com o Docker.
  2. Verifique a lista de volumes disponíveis usando docker volume ls comando:

    Como mostrado, cbvol é criado com pxd motorista.

Couchbase com Portworx Volume

  1. Crie um contêiner do Couchbase usando o volume do Portworx:

    Observe como /opt/couchbase/var onde todos os dados do Couchbase são armazenados no contêiner é mapeado para o cbvol no host. Esse volume é mapeado pela Portworx.
  2. Faça login no Console da Web do Couchbase em http://:8091, use o login Administrador e senha como senha.
  3. Vá para Data Buckets e crie um novo data bucket pwx:
    Couchbase Bucket with Portworx
  4. Na instância do EC2, veja a lista de contêineres:

    etcd, px-dev e db estão em execução.
  5. Matar o db contêiner:
  6. Reinicie o contêiner do banco de dados como:

    Agora, porque cbvol é mapeado para /opt/couchbase/var novamente, os dados são preservados durante as reinicializações. Isso pode ser verificado acessando o Console da Web do Couchbase e verificando a variável pwx criado anteriormente.

Outra perspectiva interessante também está em Por que os bancos de dados não são para contêineres?. Só porque existe o Docker, isso não significa que todas as suas necessidades de banco de dados devam ser Dockerizadas. Mas, se você precisar, há muitas opções e elas podem ser usadas em aplicativos de nível de produção.

Deseja saber mais sobre como executar o Couchbase em contêineres?

Autor

Postado por Arun Gupta, vice-presidente de defesa do desenvolvedor, Couchbase

Arun Gupta é o vice-presidente de defesa do desenvolvedor na Couchbase. Ele criou e liderou comunidades de desenvolvedores por mais de 10 anos na Sun, Oracle e Red Hat. Ele tem grande experiência na liderança de equipes multifuncionais para desenvolver e executar estratégias, planejamento e execução de conteúdo, campanhas de marketing e programas. Antes disso, liderou equipes de engenharia na Sun e é membro fundador da equipe Java EE. Gupta é autor de mais de 2.000 postagens em blogs sobre tecnologia. Ele tem uma vasta experiência em palestras em mais de 40 países sobre diversos tópicos e é um JavaOne Rock Star há três anos consecutivos. Gupta também fundou o capítulo Devoxx4Kids nos EUA e continua a promover a educação tecnológica entre as crianças. Autor de vários livros sobre tecnologia, corredor ávido, viajante do mundo inteiro, campeão de Java, líder de JUG, membro do NetBeans Dream Team e capitão do Docker, ele pode ser facilmente acessado em @arungupta.

Um comentário

  1. [...] Fonte: blog.couchbase.com/stateful-docker-containers-portworx-couchbase/ [...]

Deixar uma resposta