[This blog was syndicated from http://blog.grallandco.com]

 

Introducción

 
Cuando buscaba una forma más eficaz de crear mi clúster, pregunté a algunos administradores de sistemas qué herramientas debía utilizar para hacerlo. La respuesta que obtuve durante OSDC no era Marionetani Chefpero fue Ansible.
 
Este artículo te muestra cómo puedes configurar y crear fácilmente un cluster Couchbase desplegado y muchas cajas linux... ¡y lo único que necesitas en estas cajas es un Servidor SSH!
 
Gracias a Jan-Piet Mens que fue una de las personas que me convenció de usar Ansible y respondió a las preguntas que tenía sobre Ansible.
 
Puede ver la demostración a continuación, y/o consultar todos los detalles en el párrafo siguiente.
 
 
 
 

Ansible

Ansible es un software de código abierto que permite al administrador configurar y gestionar muchos ordenadores a través de SSH.
 
No voy a entrar en todos los detalles acerca de la instalación, sólo tienes que seguir los pasos documentados en la Guía de introducción. Como puedes ver en esta guía, sólo necesitas Python y algunas otras librerías y clonar el proyecto Ansible desde Github. Así que espero que tengas Ansible trabajando con varios servidores en los que quieras desplegar Couchbase.
 
También para estos primeros scripts estoy usando root en mi servidor para hacer todas las operaciones. Así que asegúrese de que ha registrado las claves ssh de root en su servidor de administración, desde donde está ejecutando los scripts de Ansible.
 

Crear un clúster Couchbase

Así que antes de entrar en los detalles del script de Ansible es interesante explicar cómo se crea un Cluster de Couchbase. Así que aquí están los 5 pasos para crear y configurar un clúster:
 
  1. Instale Couchbase en cada uno de los nodos del cluster, tal y como se documenta aquí.
  2. Tome uno de los nodos e "inicialice" el cluster, utilizando cluster-init mando.
  3. Añade los otros nodos al cluster, utilizando servidor-add mando.
  4. Reequilibrio, utilizando reequilibrar mando. 
  5. Crear un cubo con bucket-create mando.   
Así que el objetivo ahora es crear un Playbook de Ansible que ejecute estos pasos por ti.
 
Ansible Playbook para Couchbase
Lo primero que necesitas es tener la lista de hosts a los que quieres dirigirte, así que he creado un archivo archivo hosts que contiene todos mis servidores organizados en 2 grupos:
 
[couchbase-main]
vm1.grallandco.com

[couchbase-nodos]
vm2.grallandco.com
vm3.grallandco.com

El grupo [couchbase-main] es sólo uno de los nodos que dirigirá la instalación y configuración, como probablemente ya sepas, Couchbase no tiene ningún maestro... Todos los nodos del cluster son idénticos.
 
Para facilitar la configuración del clúster, he creado otro archivo que contiene todos los parámetros que deben enviarse a los distintos comandos. Este archivo se encuentra en la carpeta group_vars/all véase la sección Separación de datos específicos de host y grupo en la documentación.
 
# Usuario y contraseña del administrador
admin_user: Administrador
admin_password: contraseña

# de ram para el cluster
cluster_ram_quota: 1024

Cubo # y réplicas
bucket_name: ansible
bucket_ram_quota: 512
número_réplicas: 2

 
 
Utilice este archivo para configurar su clúster.
 
Describamos el archivo playbook :
 
- nombre: Instalación de Couchbase
  anfitriones: todos
  usuario: root
   
  tareas:

  - nombre: descargar paquete Couchbase
    get_url: url=http://packages.couchbase.com/releases/2.0.1/couchbase-server-enterprise_x86_64_2.0.1.deb dest=~/.
 
  - nombre: Instalar dependencias
    apt: pkg=libssl0.9.8 state=presente

  - name: Instalar el archivo .deb de Couchbase en todas las máquinas
    shell: dpkg -i ~/couchbase-server-enterprise_x86_64_2.0.1.deb

 
 
Como era de esperar, la instalación debe realizarse en todos servidores como raíz entonces necesitamos ejecutar 3 tareas: 
  1. Descargar el producto, el comando get_url sólo descargará el archivo si no está ya presente
  2. Instale las dependencias con el comando apt, el estado=present permite que el sistema sólo instale este paquete si no está ya presente
  3. Instala Couchbase con un simple comando de shell. (aquí no estoy comprobando si Couchbase ya está instalado)
Ya hemos instalado Couchbase en todos los nodos. Ahora vamos a configurar el primer nodo y añadir los demás: 
 
- name: Inicializar el cluster y añadir los nodos al cluster.
  hosts: couchbase-main
  usuario: root

  tareas:
  - name: Configurar nodo 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}

  - name: Crear script de shell para configurar el nodo principal
    acción: template src=couchbase-add-node.j2 dest=/tmp/addnodes.sh mode=750
 
  - nombre: Launch config script
    acción: shell /tmp/addnodes.sh
 
  - nombre: Reequilibrar el cluster
    shell: /opt/couchbase/bin/couchbase-cli rebalance -c 127.0.0.1:8091 -u ${admin_user} -p ${admin_password}      
 
  - name: crear bucket ${nombre_bucket} con ${num_replicas} réplicas
    shell: /opt/couchbase/bin/couchbase-cli bucket-create -c 127.0.0.1:8091 -bucket=${nombre_bucket} -bucket-type=couchbase -bucket-port=11211 -bucket-ramsize=${cuota_ram_bucket} -bucket-replica=${num_replicas} -u ${usuario_admin} -p ${contraseña_admin}

Ahora necesitamos ejecutar taks específicos en el servidor "principal":
  • Inicialización del cluster usando el CLI de Couchbase, en las líneas 06 y 07
 
A continuación, el sistema debe pedir a todos los demás servidores que se unan al clúster. Para esto el sistema necesita obtener las diferentes IP y para cada dirección IP ejecutar el comando add-server con la dirección IP. Que yo sepa no es posible obtener la dirección IP desde el archivo YAML del playbook principal, así que le pido al sistema que genere un script shell para añadir cada nodo y ejecute el script. 
 
Esto se hace desde la línea 09 a la 13.
 
Para generar el script de shell, utilizo Plantilla Ansiblela plantilla está disponible en couchbase-add-node.j2 archivo. 
 
{% para host en grupos['couchbase-nodos'] %}

 /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 puedes ver este script hace un bucle en cada servidor del grupo [couchbase-nodes] y utiliza su dirección IP para añadir el nodo al cluster. 
 
Por último, el script reequilibra el clúster (línea 16) y añade un nuevo cubo (línea 19).
 
Ahora está listo para ejecutar el playbook utilizando el siguiente comando : 
 
./bin/ansible-playbook -i ./couchbase/hosts ./couchbase/couchbase.yml -vv
 
Estoy añadiendo el parámetro -vv para que puedas ver más información sobre lo que está ocurriendo durante la ejecución del script. 
 
Esto ejecutará todos los comandos descritos en el playbook, y después de unos segundos tendrás un nuevo cluster ¡listo para ser usado! Puedes, por ejemplo, abrir un navegador e ir a la Consola de Administración de Couchase y comprobar que tu cluster está configurado como esperabas.
 
Couchbase Cluster
Como puedes ver es realmente fácil y rápido crear un nuevo cluster usando Ansible.
 
Tambien he creado un script para desinstalar correctamente el cluster.. solo lanza
 
 
./bin/ansible-playbook -i ./couchbase/hosts ./couchbase/couchbase-uninstall.yml
 

Autor

Publicado por El equipo de Couchbase

Jennifer Garcia es Gerente Senior de Web en Couchbase Inc. Como responsable del sitio web, Jennifer tiene la responsabilidad general de las propiedades del sitio web, incluido el diseño, la implementación, el contenido y el rendimiento.

5 Comentarios

  1. en lugar de utilizar una plantilla de script, debe utilizar con_elementos ansible statement:

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

    esto cierra la tarea ansible. (¿Sabía usted que ansible era impresionante? :) )

    1. Gracias por esto voy a probar y actualizar mi libro de jugadas ...

      Me gusta mucho Ansible y tus consejos lo hacen aún mejor.

  2. Traté de usar la receta para instalar couchdb en EC2, hubo una pequeña modificación que debo añadir. el comando cluster-init falló debido al error \'Connection refused\'. Aparentemente el servidor aún no estaba en marcha, así que añadí un comando de pausa durante 30 segundos antes del cluster-init y ¡boom, funcionó!
    El código:
    - nombre: Reposo durante 30 segundos para finalizar la instalación
    pausa: segundos=30

    lo que una buena noche de sueño puede hacer :)

  3. También puedes consultar lo siguiente. Ejecutando cluster multi-nodos usando Virtualbox/Centos (o ubuntu) instancias usando vagrant/ansible. Simplemente funciona, suponiendo que todos los parámetros establecidos correctamente. Yo estaba en marcha y funcionando en 20 minutos. Asegúrese de que está en línea mientras lo hace, ya que descarga un montón de cosas para que esto suceda.

    https://github.com/couchbasela

  4. Consultoría DevOps marzo 9, 2017 a 10:42 pm

    Esta información es impresionante; estoy inspirado con su estilo de escritura post & cómo continuamente usted describe este tema. Después de leer tu post, gracias por tomarse el tiempo para discutir esto, me siento feliz por ello y me encanta aprender más sobre este tema.
    Gracias,
    Consultoría DevOps

Dejar una respuesta