Temos o prazer de anunciar a prévia para desenvolvedores do cluster do Couchbase Server no Red Hat OpenShift Enterprise, que é baseado no Kubernetes.

Esse projeto foi uma colaboração estreita entre o Couchbase, Red Hat, Amadeus e JetStack. Uma sessão conjunta sobre Implantação do Couchbase no Red Hat OpenShift com Kubernetes StatefulSets na Amadeus foi entregue no Cúpula da Red Hat em 3 de maio de 2017.

Por que o Couchbase Server é a melhor opção para contêineres e Kubernetes?

Os contêineres refletem a tendência do setor em relação à arquitetura de microsserviços, que implementa aplicativos como uma série de componentes de software pequenos, autônomos e pouco acoplados. O Couchbase Server, com sua revolucionária arquitetura de dimensionamento multidimensional, permite que você trate as cargas de trabalho do banco de dados da mesma forma. Com o dimensionamento multidimensional (MDS), a carga de trabalho do banco de dados é dividida em componentes de software autônomos e fracamente acoplados, como serviços de dados, índice, consulta, pesquisa e (futuramente) serviços analíticos.

O diagrama a seguir mostra um cluster do Couchbase Server com quatro serviços em execução:

  • Serviço de dados - lida com as principais operações de gerenciamento de dados.
  • Serviço de índice - mantém índices de forma eficiente para a execução rápida de consultas.
  • Serviço de consulta - lida com a análise, otimização e execução de consultas N1QL. Esse serviço interage com o serviço de indexação e o serviço de dados para processar as consultas e retornar os resultados ao aplicativo solicitante.
  • Serviço de pesquisa - oferece a capacidade de criar índices de pesquisa de texto completo em documentos e consultá-los usando uma variedade de métodos de indexação, analisadores de texto e linguagens.

O escalonamento multidimensional tem três vantagens principais:

  • Cada serviço pode ser dimensionado de forma independente para se adequar à evolução de um aplicativo, quer isso envolva um conjunto de dados crescente, requisitos de indexação em expansão ou maiores necessidades de processamento de consultas.
  • Você pode optar por personalizar as máquinas de acordo com suas cargas de trabalho. Por exemplo, adicionando mais CPUs a um nó que esteja executando consultas.
  • Fornece isolamento de carga de trabalho para que o serviço de consulta não interfira nos serviços de índice ou de dados.

Como o Couchbase Server está sendo executado no OpenShift?

A sabedoria convencional diz que não é possível executar um banco de dados em um contêiner. "Os contêineres não têm estado!", dizem eles, e "os bancos de dados são inúteis sem estado!" Isso não é mais verdade. Precisávamos apenas da tecnologia certa para dar suporte à execução de banco de dados em um contêiner.

Depois veio Kubernetes 1.5 que incluía o novo StatefulSet (em versões mais antigas, o StatefulSet era conhecido como PetSet). Com o StatefulSets, o Kubernetes facilita a execução de cargas de trabalho com estado, como bancos de dados. Nesta visualização do desenvolvedor, o contêiner do Couchbase é implementado usando o novo objeto da API StatefulSets.

StatefulSets do servidor Couchbase no OpenShift

StatefulSet atualmente beta em Kubernetes 1.7 e uma prévia técnica a partir de OpenShift 3.5. O StatefulSet fornece identidade e armazenamento únicos e estáveis para cápsulase garante a ordem e o dimensionamento da implantação. Isso contrasta com um Implantação ou ReplicaSet em que as réplicas de pod não mantêm a identidade durante a reinicialização/reescalonamento e podem ter as mesmas propriedades de armazenamento de volume. Portanto, esses recursos são adequados para aplicativos sem estado.

Provisionamento dinâmico de volumes

O provisionamento dinâmico de volume foi introduzido pela primeira vez em Kubernetes 1.4  e visualização da tecnologia em Openshift 3.1.1e agora GA na versão 3.3. Esse recurso permite que o armazenamento seja provisionado dinamicamente "sob demanda" em um ambiente de nuvem compatível (por exemplo, AWS, GCP, OpenStack). O controlador StatefulSet cria automaticamente solicitações de armazenamento (PersistentVolumeClaim - PVC) por pod, e o armazenamento é provisionado (PersistentVolume - PV). A vinculação exclusiva de 1 para 1 entre PV e PVC garante que um pod seja sempre reunido com seu mesmo volume, mesmo que esteja programado em outro nó em caso de falha.

Sidecar do Couchbase

Ao utilizar conceitos genéricos de StatefulSet e provisionamento de volume dinâmico, o OpenShift (ou Kubernetes) garantirá que os pods certos sejam programados e executados. No entanto, ele não pode levar em conta os requisitos específicos do Couchbase Server em seu processo de tomada de decisão. Por exemplo, registrar novos nós ao aumentar a escala, rebalancear e também lidar com a migração de dados em uma redução de escala ou em uma falha de nó. Os eventos de pod e nó são bem conhecidos do OpenShift (ou Kubernetes), mas as ações necessárias são específicas do banco de dados.

Nesta prévia para desenvolvedores, as operações de ciclo de vida do cluster do Couchbase Server são incorporadas em um contêiner sidecar que é essencialmente um contêiner auxiliar que fica ao lado de um contêiner padrão do Couchbase Server em um pod. O sidecar usa as APIs do OpenShift (ou Kubernetes) e do Couchbase Server para determinar o estado do cluster e responderá de forma segura e adequada aos eventos do cluster do Couchbase Server, como aumento/diminuição de escala e falha de nó.

Por exemplo, o sidecar pode responder aos seguintes eventos:

  • Aumento de escala: o sidecar determina se o nó é novo no cluster, se ele foi inicializado e ingressou no cluster e, em seguida, inicia um rebalanceamento.
  • Redução de escala: o sidecar executa um desligamento pré-container e remove com segurança o nó do cluster, rebalanceando conforme necessário.
  • Prontidão: o sidecar se conecta ao contêiner local do Couchbase Server e determina sua integridade. O resultado da verificação de prontidão é usado para determinar a disponibilidade do serviço no OpenShift.

O que está disponível no Developer Preview?

Vamos dar uma olhada no que está disponível nesta visualização para desenvolvedores -

  • Contêiner do Docker para o Couchbase Server 4.6.2 para RHEL.
  • Definições de cluster do Couchbase Server que têm -
    • Um contêiner do Couchbase Server por pod
    • Seleção de serviço do Couchbase Server (dados, índice, consulta)
    • Cada tipo de pod do Couchbase Server tem uma especificação de recurso independente (CPU, memória)
  • Os grupos de servidores do Couchbase Server são configurados automaticamente com base na zona de falha do pod.
  • O contêiner do Couchbase Server será removido normalmente do cluster quando a contagem de pods nos StatefulSets for diminuída.
  • Documentação

Comentários são bem-vindos

Como sempre, gostamos de ouvir sua opinião. O feedback da comunidade e dos primeiros usuários tem uma grande influência na direção do produto. Sinta-se à vontade para me enviar um e-mail diretamente para anil@couchbase.com.

Referências:

Autor

Postado por Anil Kumar, diretor de gerenciamento de produtos do banco de dados nativo da nuvem Couchbase

Anil Kumar é o diretor de gerenciamento de produtos da Couchbase. A carreira de Anil abrange mais de 19 anos de desenvolvimento de produtos de software em vários domínios, incluindo software corporativo e serviços em nuvem. Ele é um líder de produto prático responsável pelas linhas de produtos Couchbase Server, Couchbase Cloud e Kubernetes, incluindo a divulgação da estratégia e da visão do produto com clientes, parceiros, desenvolvedores e analistas. Antes de ingressar na Couchbase, Anil passou vários anos trabalhando na Microsoft Redmond. Anil tem mestrado em ciência da computação pela Universidade de Toronto (Canadá) e é bacharel em tecnologia da informação pela Universidade Tecnológica de Visvesvaraya (Índia).

Deixar uma resposta