Implantação do Couchbase com o Chef

Se você é um administrador e está procurando uma maneira automatizada de implantar o Couchbase em escala, não precisa mais procurar - o Chefe de cozinha é uma excelente solução de plataforma. Uma vez configurada, é uma solução muito limpa que pode funcionar em qualquer número de servidores físicos, virtuais ou em nuvem, independentemente do tamanho da infraestrutura. O Chef permite que você crie scripts para a implementação da infraestrutura usando código, de modo que possa automatizar o processo de provisionamento e implementação sem muito esforço. 

Neste blog, examinaremos as receitas do chef usadas para instalar o couchbase, configurar um cluster de nós do couchbase, adicionar alguns buckets e, por fim, adicionar a replicação xdcr entre os clusters.

Antes de começar - Certifique-se de que você esteja familiarizado com os conceitos básicos do servidor Chef, livros de receitas e clientes Chef. O Chef tem uma enorme pilha de modelos, receitas e plug-ins de faca que podem ser muito úteis para manter configurações de grande escala. http://wiki.opscode.com tem bons exemplos e informações sobre isso.

Configure um chef-server, uma estação de trabalho e adicione alguns nós como chef-clients. Quando os três itens acima estiverem configurados, você estará pronto para escrever o livro de receitas do Couchbase. Uma versão bifurcada do livro de receitas do opscode está aqui https://github.com/ketakigangal/couchbase

Pré-requisitos 
Instale os seguintes livros de receitas antes de fazer o download do livro de receitas do couchbase - yum, apt-get, windows, build-essential

Obter o livro de receitas do Couchbase
clone do git  https://github.com/ketakigangal/couchbase

Uma rápida olhada nos recursos do livro de receitas e nas personalizações disponíveis
Com base nas necessidades do seu sistema, você pode adicionar atributos, recursos e modelos mais flexíveis para os nós e clusters. Idealmente usar os data-bags para definir a nomenclatura de seu cluster. Aqui, usei a função para descrever uma implementação muito simples de dois clusters: "west_cluster" e "east_cluster".

Atributos
O server.rb e o client.rb têm as configurações padrão para servidor e clientes. Certifique-se de refletir as versões necessárias do couchbase, nome de usuário/senha para o server.rb nos atributos. Por exemplo, o seguinte instala um servidor 2.0.1-community edition -

padrão['couchbase']['servidor']['edição'] = "comunidade"

padrão['couchbase']['servidor']['versão'] = “2.0.1”

padrão['couchbase']['servidor']['nome de usuário'] = "Administrador"

padrão['couchbase']['servidor']['senha'] = "senha"

Receitas

O servidor.rb e cliente.rb contêm a lógica para instalar e configurar o servidor e os clientes do Couchbase, respectivamente. Além disso, o test_buckets.rb tem um código de amostra para criar buckets e brincar com as configurações do bucket.

O setup_cluster.rb pode ser usado para configurar um cluster. Observe que isso requer que uma função "west_cluster" (digamos) seja atribuída a cada um dos nós do cluster. O pré-requisito para executar isso é garantir que cada um dos nós tenha um servidor couchbase instalado e iniciado.

Da mesma forma setup_xdcr.rb A receita é usada para configurar o xdcr entre dois clusters. O pré-requisito para usar essa receita é que você já tenha 2 clusters do couchbase configurados com as funções "east_cluster" e "west_cluster".

* Observação: para que esse script seja executado, você deve ter nós atribuídos com funções "east_cluster" e "west_cluster" para dois clusters separados.

Bibliotecas

Os recursos e provedores são definidos em um nível de nó, cluster e bucket nesse diretório.

Faça upload do livro de receitas usando -

knife cookbook upload couchbase

Adicione receitas e funções à lista de execução do nó usando -

knife node run_list add fqdn-your-node-name "recipe[couchbase::server]"

knife node run_list add fqdn-your-node-name "recipe[couchbase::setup_cluster]"

knife node run_list add fqdn-your-node-name "recipe[couchbase::test_buckets]"

knife node run_list add role fqdn-your-node-name 'role[west_cluster]'

O procedimento acima adicionará receitas de servidor, setup_cluster e test_bucket para execução (nessa ordem) no nó chef-client. Aqui, atribuímos uma função "west_cluster" aos nós para formar um west_cluster.

knife show node fqdn-your-node-name

   "recipe[couchbase::server]",    

   "recipe[couchbase::setup_cluster]",

   "recipe[couchbase::test_buckets]",

   "role[west_cluster]"

 

Depois de fazer o upload do livro de receitas para o chef-server, você pode usar o chef-client para executar o livro de receitas/receitas.

Cliente-Chef

Do cliente chef,

   sudo chef-client (você pode usar -l debug para obter informações de registro no nível de depuração).  

Como resultado, você verá uma mensagem semelhante à seguinte - 

* couchbase_bucket[modified % modification] action create[2013-07-08T22:57:49-07:00] INFO: Processando couchbase_bucket[modified % modification] action create (couchbase::test_buckets line 77)

[2013-07-08T22:57:49-07:00] INFO: couchbase_bucket[modified % modification] memory_quota_mb changed to 500

[2013-07-08T22:57:49-07:00] INFO: Chef Run complete in 187.264660646 segundos

[2013-07-08T22:57:49-07:00] INFO: Executando manipuladores de relatórios

[2013-07-08T22:57:49-07:00] INFO: Report handlers complete

E você está pronto para começar! 

Passos para executar a receita "setup_xdcr.rb"

lista de funções de faca

cluster_leste

cluster_oeste

knife node edit fqdn-your-node-name

   "recipe[couchbase::setup_cluster]",

   "recipe[couchbase::test_buckets]",

   "role[east_cluster]"

O mesmo acontece com o cluster west_.

knife search node "role:west_cluster" -i

2 itens encontrados

node1-fqdn

nó2-fqdn

Configure o xdcr adicionando a receita "setup_xdcr" ao cluster de origem, por exemplo, "east_cluster"

knife node edit fqdn-your-node-name

 "recipe[couchbase::setup_xdcr]",

  "role[east_cluster]"

Isso criará uma referência de cluster remoto xdcr e iniciará a replicação do "east_cluster" para o "west_cluster"

Para clusters de grande escala, o uso de data-bags é ideal para definir e manter clusters. Da mesma forma, a manutenção de modelos para operações de cluster e a criação de recursos serão úteis na configuração inicial. Aproveite!

Compartilhe este artigo
Receba atualizações do blog do Couchbase em sua caixa de entrada
Esse campo é obrigatório.

Autor

Postado por Ketaki Gangal

Ketaki Gangal é arquiteta de soluções na Couchbase. Ela tem experiência em tecnologias como Python, NoSQL, SDKs, Docker, Splunk, Nagios, Kubernetes e AWS.

7 Comentários

  1. Olá, Ketaki,

    Sou o mantenedor do livro de receitas \"couchbase\". Eu adoraria que você a) integrasse as alterações de sua bifurcação de volta a ele ou b) desse ao mantenedor acesso ao CouchBase. Poderia fazer a gentileza de entrar em contato?

    - Julian (jdunn@opscode.com)

    1. Oi Julian,

      Claro, vou entrar em contato com você off-line sobre isso.

      - Ketaki

  2. Posso ver como é o seu arquivo de função?

  3. Hi,

    Estou tendo problemas com a receita do setup_cluster.rb. Existe alguma maneira de fazer com que ele pegue o nome do cluster dos atributos de substituição? Parece que ele define o nome do cluster a partir do nome da função, o que significa que não posso usar um FQDN, o que dificulta a adesão dos nós sem usar arquivos de hosts locais etc.

    O atributo de substituição cluster_name parece ser ignorado: Tentei as seguintes substituições:

    {\"defaults\":{\"cluster_name\":\"default.fqdn.local\",\"couchbase\":{\"server\":{\"password\":\"changeoninstall\"}}},\"overrides\":{\"cluster_name\":\"override.fqdn.local\",\"couchbase\":{\"server\":{\"password\":\"changeoninstall\" }}}}

    (onde default.fqdn.local e override.fqdn.local são resolvidos corretamente)

    As substituições de senha funcionam bem, mas o cluster_name parece ser ignorado :-(

    Qualquer ajuda seria muito bem-vinda.

    Atenciosamente,
    Alan

    1. Oi Alan, só por curiosidade, você conseguiu resolver esse problema de configuração do cluster_name por meio de um atributo de substituição?

      1. Olá, Terry - desculpe, não, não estava. Na verdade, estou fazendo o cluster manualmente após a implantação.

        1. o nome do cluster é codificado no setup_cluster.rb

          #cluster_name = node[\"cluster_name\"]

          cluster_name = \"west_cluster\"

Deixe um comentário

Pronto para começar a usar o Couchbase Capella?

Iniciar a construção

Confira nosso portal do desenvolvedor para explorar o NoSQL, procurar recursos e começar a usar os tutoriais.

Use o Capella gratuitamente

Comece a trabalhar com o Couchbase em apenas alguns cliques. O Capella DBaaS é a maneira mais fácil e rápida de começar.

Entre em contato

Deseja saber mais sobre as ofertas do Couchbase? Deixe-nos ajudar.