[Este blog foi distribuído pelo site http://blog.grallandco.com].

 

Introdução

 
Quando estava procurando uma maneira mais eficaz de criar meu cluster, perguntei a alguns administradores de sistemas quais ferramentas eu deveria usar para fazer isso. A resposta que recebi durante OSDC não foi Marionete, nem Chefe de cozinha, mas foi Ansible.
 
Este artigo mostra como você pode configurar e criar facilmente um cluster do Couchbase implantado em várias caixas Linux... e a única coisa de que você precisa nessas caixas é um servidor SSH!
 
Agradecimentos a Jan-Piet Mens que foi uma das pessoas que me convenceu a usar o Ansible e respondeu às perguntas que eu tinha sobre o Ansible.
 
Você pode assistir à demonstração abaixo e/ou ver todos os detalhes no próximo parágrafo.
 
 
 
 

Ansible

O Ansible é um software de código aberto que permite ao administrador configurar e gerenciar vários computadores por meio de SSH.
 
Não entrarei em todos os detalhes sobre a instalação, basta seguir as etapas documentadas no Guia de Introdução. Como você pode ver neste guia, você só precisa do Python e de algumas outras bibliotecas e clonar o projeto Ansible do Github. Portanto, espero que você tenha o Ansible funcionando com seus vários servidores nos quais deseja implantar o Couchbase.
 
Além disso, para esses primeiros scripts, estou usando o root no meu servidor para fazer todas as operações. Portanto, certifique-se de ter registrado as chaves ssh do root no seu servidor de administração, de onde está executando os scripts do Ansible.
 

Criar um cluster do Couchbase

Portanto, antes de entrar nos detalhes do script Ansible, é interessante explicar como criar um cluster do Couchbase. Portanto, aqui estão as 5 etapas para criar e configurar um cluster:
 
  1. Instale o Couchbase em cada nó do cluster, conforme documentado aqui.
  2. Pegue um dos nós e "inicialize" o cluster, usando inicialização do cluster comando.
  3. Adicione os outros nós ao cluster, usando adicionar servidor comando.
  4. Reequilíbrio, usando reequilíbrio comando. 
  5. Crie um Bucket, usando criar balde comando.   
Portanto, o objetivo agora é criar um Ansible Playbook que execute essas etapas para você.
 
Manual do Ansible para o Couchbase
A primeira coisa que você precisa é ter a lista de hosts que deseja segmentar, portanto, criei um arquivo arquivo hosts que contém todos os meus servidores organizados em dois grupos:
 
[couchbase-main]
vm1.grallandco.com

[nós do couchbase]
vm2.grallandco.com
vm3.grallandco.com

O grupo [couchbase-main] é apenas um dos nós que conduzirão a instalação e a configuração. Como você provavelmente já sabe, o Couchbase não tem um mestre... Todos os nós do cluster são idênticos.
 
Para facilitar a configuração do cluster, criei outro arquivo que contém todos os parâmetros que devem ser enviados a todos os vários comandos. Esse arquivo está localizado no diretório group_vars/all consulte a seção Separação de dados específicos de host e grupo na documentação.
 
Usuário e senha do administrador do #
admin_user: Administrador
admin_password: senha

Cota de RAM de # para o cluster
cluster_ram_quota: 1024

Balde # e réplicas
bucket_name: ansible
bucket_ram_quota: 512
num_replicas: 2

 
 
Use esse arquivo para configurar seu cluster.
 
Vamos descrever o arquivo de playbook :
 
- Nome: Instalação do Couchbase
  hosts: todos
  usuário: root
   
  tarefas:

  - nome: download do pacote do Couchbase
    get_url: url=http://packages.couchbase.com/releases/2.0.1/couchbase-server-enterprise_x86_64_2.0.1.deb dest=~/.
 
  - name: Instalar dependências
    apt: pkg=libssl0.9.8 state=present

  - nome: Instalar o arquivo .deb do Couchbase em todas as máquinas
    shell: dpkg -i ~/couchbase-server-enterprise_x86_64_2.0.1.deb

 
 
Como esperado, a instalação deve ser feita em todos servidores como raiz então precisamos executar 3 tarefas: 
  1. Faça o download do produto; o comando get_url só fará o download do arquivo se ele ainda não estiver presente
  2. Instale as dependências com o comando apt; o state=present permite que o sistema instale apenas esse pacote se ele ainda não estiver presente
  3. Instale o Couchbase com um simples comando shell. (aqui não estou verificando se o Couchbase já está instalado)
Portanto, já instalamos o Couchbase em todos os nós. Vamos agora configurar o primeiro nó e adicionar os outros: 
 
- name: Inicializa o cluster e adiciona os nós ao cluster
  hosts: couchbase-main
  usuário: root

  tarefas:
  - nome: Configurar o nó principal
    shell: /opt/couchbase/bin/couchbase-cli cluster-init -c 127.0.0.1:8091 -cluster-init-username=${admin_user} -cluster-init-password=${admin_password} -cluster-init-port=8091 -cluster-init-ramsize=${cluster_ram_quota}

  - nome: Criar script de shell para configurar o nó principal
    ação: template src=couchbase-add-node.j2 dest=/tmp/addnodes.sh mode=750
 
  - nome: Launch config script (Iniciar script de configuração)
    ação: shell /tmp/addnodes.sh
 
  - nome: Rebalancear o cluster
    shell: /opt/couchbase/bin/couchbase-cli rebalance -c 127.0.0.1:8091 -u ${admin_user} -p ${admin_password}      
 
  - name: create bucket ${bucket_name} with ${num_replicas} replicas
    shell: /opt/couchbase/bin/couchbase-cli bucket-create -c 127.0.0.1:8091 -bucket=${bucket_name} -bucket-type=couchbase -bucket-port=11211 -bucket-ramsize=${bucket_ram_quota} -bucket-replica=${num_replicas} -u ${admin_user} -p ${admin_password}

Agora precisamos executar tarefas específicas no servidor "principal":
  • Inicialização do cluster usando a CLI do Couchbase, nas linhas 06 e 07
 
Em seguida, o sistema precisa solicitar a todos os outros servidores que entrem no cluster. Para isso, o sistema precisa obter os vários IPs e, para cada endereço IP, executar o comando add-server com o endereço IP. Até onde sei, não é possível obter o endereço IP do arquivo YAML do playbook principal, portanto, peço ao sistema que gere um script de shell para adicionar cada nó e executar o script. 
 
Isso é feito a partir da linha 09 a 13.
 
Para gerar o script de shell, eu uso Modelo AnsibleO modelo está disponível na seção couchbase-add-node.j2 arquivo. 
 
{% for host in groups['couchbase-nodes'] %}

 /opt/couchbase/bin/couchbase-cli server-add -c 127.0.0.1:8091 -u ${admin_user} -p ${admin_password} -server-add={{{ hostvars[host]['ansible_eth0']['ipv4']['address'] }}:8091 -server-add-username=${admin_user} -server-add-password=${admin_password}  

{% endfor %}

 
Como você pode ver, esse script faz um loop em cada servidor do grupo [couchbase-nodes] e usa seu endereço IP para adicionar o nó ao cluster. 
 
Por fim, o script reequilibra o cluster (linha 16) e adiciona um novo bucket (linha 19).
 
Agora você está pronto para executar o playbook usando o seguinte comando : 
 
./bin/ansible-playbook -i ./couchbase/hosts ./couchbase/couchbase.yml -vv
 
Estou adicionando o parâmetro -vv para permitir que você veja mais informações sobre o que está acontecendo durante a execução do script. 
 
Isso executará todos os comandos descritos no playbook e, após alguns segundos, você terá um novo cluster pronto para ser usado! Você pode, por exemplo, abrir um navegador e acessar o Console de administração do Couchase e verificar se o cluster está configurado conforme o esperado.
 
Couchbase Cluster
Como você pode ver, é muito fácil e rápido criar um novo cluster usando o Ansible.
 
Também criei um script para desinstalar corretamente o cluster... basta iniciar
 
 
./bin/ansible-playbook -i ./couchbase/hosts ./couchbase/couchbase-uninstall.yml
 

Autor

Postado por A equipe do Couchbase

Jennifer Garcia é gerente sênior de Web na Couchbase Inc. Como gerente do site, Jennifer tem a responsabilidade geral pelas propriedades do site, incluindo design, implementação, conteúdo e desempenho.

5 Comentários

  1. em vez de usar um modelo de script, você deve usar com_itens declaração responsável:

    - name: add nodes
    shell: \"/opt/couchbase/bin/couchbase-cli server-add -c 127.0.0.1:8091 -u {{couchbase_admin}} -p {{couchbase_admin_password}} –server-add={{ hostvars[item][\’ansible_eth0\’][\’ipv4\’][\’address\’] }}:8091 –server-add-username={{couchbase_admin}} -server-add-password={{{couchbase_admin_password}}\"
    with_items: groups[\'couchbase-nodes\']

    isso faz o loop da tarefa do ansible. (Você sabia que o ansible era incrível? :) )

    1. Obrigado por isso, vou testar e atualizar meu manual...

      Gosto muito do Ansible e suas dicas o tornam ainda melhor!

  2. Tentei usar a receita para instalar o couchdb no EC2, mas houve uma pequena modificação que eu deveria acrescentar. O comando cluster-init falhou devido ao erro \'Connection refused\'. Aparentemente, o servidor ainda não estava funcionando, então adicionei um comando de pausa de 30 segundos antes do cluster-init e pronto, funcionou!
    O código:
    - nome: Dormir por 30 segundos para concluir a instalação
    pausa: segundos=30

    o que uma boa noite de sono pode fazer :)

  3. Você também pode dar uma olhada no seguinte. Execução de cluster de vários nós usando instâncias do Virtualbox/Centos (ou Ubuntu) usando vagrant/ansible. Simplesmente funciona, supondo que todos os parâmetros estejam definidos corretamente. Eu estava pronto e funcionando em 20 minutos. Certifique-se de estar on-line enquanto estiver fazendo isso, pois ele baixa um monte de coisas para que isso aconteça.

    https://github.com/couchbasela

  4. Consultoria em DevOps março 9, 2017 em 10:42 pm

    Essas informações são impressionantes; estou inspirado com o estilo de redação de sua postagem e com a forma contínua com que você descreve esse tópico. Depois de ler sua postagem, obrigado por dedicar seu tempo para discutir esse assunto, estou feliz com isso e adoro aprender mais sobre esse tópico.
    Obrigado,
    Consultoria em DevOps

Deixar uma resposta