Es bastante sencillo ejecutar una instancia de Couchbase Server en un contenedor Docker. Se necesita un poco más de trabajo para establecer y configurar completamente un clúster. En este post, voy a caminar a través de un script de shell que escribí para automatizar el proceso.

Fondo

Para Couchbase Connect 2017, construimos una aplicación que muestra todo, desde el Servicio de análisis Couchbase hasta la sincronización de datos móviles en tiempo real mediante Couchbase Móvil. Utilizamos un parche sensor de temperatura NFC, generamos alertas a través del cliente web basado en Vue.js, alteramos esquemas sobre la marcha, enviamos notificaciones push, fallamos sobre clústeres y mucho más. Echa un vistazo a este vídeo en acción.

En la demo, Servidor Couchbase, Pasarela de sincronizacióny el backend web se ejecutan en la nube. Estamos trabajando para liberar el código de todo el proyecto. Como parte de eso, quiero ser capaz de ejecutar una versión recortada en una sola máquina.

Eso significa, idealmente, ejecutar dos clústeres de Couchbase Server, Sync Gateway, y la aplicación backend Node.js, todo simultáneamente.

Docker hace que ejecutar instancias separadas de Couchbase sea bastante fácil. Sin embargo, configurar completamente un clúster requiere algo de trabajo. Ahí es donde entra el script que escribí.

Un script flexible para la creación de clústeres

El script está escrito usando Bash. Tenía algunos objetivos en mente mientras lo desarrollaba:

  1. Haga algo de uso general y fácil de usar.
  2. Permiten una configuración flexible, al tiempo que recuperan los valores predeterminados.
  3. Minimizar las dependencias a Bash, utilidades estándar comunes (algunas cosas sólo vale la pena hacerlas en awk), y el cli de Docker.

He publicado el código y otras piezas relacionadas en Github en este gist. Aquí está el script de formación del cluster.

https://gist.github.com/HodGreeley/fa88c74baf55115ef83135d4d069e796#file-server

Esquema

A grandes rasgos, por orden, el script se encarga de lo siguiente:

  • Configuración de parámetros
  • Iniciar el número solicitado de instancias de Couchbase Server, una por contenedor Docker, utilizando la última imagen de producción.
  • Asignación de los puertos necesarios (compensando cada instancia para evitar colisiones)
  • Configuración de la cuenta y la contraseña administrativas
  • Seleccionar los servicios disponibles y establecer las asignaciones de memoria para ellos.
  • Crear un cubo
  • Concesión de derechos a una cuenta de cliente mediante RBAC
  • Combinar los nodos en un clúster
  • Reequilibrio del clúster final

No voy a repasar el guión en detalle. Hay comentarios que indican qué sección corresponde al esquema. No dudes en dejar un comentario aquí o en Github si tienes preguntas.

Utilización

Escribí esto para configurar clusters en mi Mac. Espero que funcione igual de bien en cualquier máquina que pueda ejecutar Bash y Docker. El script no tiene opciones. Todo se controla suministrando parámetros como pares clave/valor. Se suministran de cuatro maneras. En orden de prioridad, de menor a mayor,

  • Valores por defecto (escritos en el propio script)
  • Variables de entorno existentes
  • Líneas alimentadas a la entrada estándar
  • Se suministran como argumentos de línea de comandos

En los dos últimos casos, los parámetros se suministran de la misma forma que se definiría una variable de entorno. Por ejemplo, para solicitar 3 nodos, añada COUCHBASE_NODE_COUNT=3ya sea en la línea de comandos o redirigido desde un archivo. Mira dónde se establecen los valores predeterminados para ver lo que puedes controlar.

El mapeo de puertos requiere una pequeña explicación. Couchbase utiliza varios rangos de puertos. Para crear un cluster, un número de puertos tienen que ser expuestos por Docker y mapeados a puertos abiertos en la máquina anfitriona. Para hacer esto, especifica bloques de rangos y mapeos, separados por dos puntos (::). Por ejemplo, estableciendo COUCHBASE_SERVER_PORTS="9091-9094:8091-8094::12210:11210 asigna los puertos estándar de Couchbase 8091-8094 y 11210 a los puertos de la máquina host 9091-9094 y 12210, respectivamente.

Ejemplo

En un escenario típico, podrías tener la información de la cuenta del administrador del cluster asignada en variables de entorno. Por ejemplo

A continuación, puede guardar otra información de configuración general en un archivo. El nombre no importa. Aquí hay uno que yo uso que llamo london-cluster


Por último, para iniciar el clúster, invocarías algo como lo siguiente en la línea de comandos.

En el gist también puedes encontrar un script similar para configurar Sync Gateway. Ese script está un poco más construido en términos de tener comandos para crear un contenedor, iniciarlo, detenerlo y eliminarlo. Debido a que Sync Gateway requiere un archivo de configuración, el script tiene que trabajar un poco más para hacer las sustituciones de parámetros. Por lo demás, es similar pero más simple que el script del servidor.

También hay un script que configura toda la demo, incluyendo el uso de los dos scripts anteriores. Como he mencionado antes, estamos trabajando para liberar el código de toda la aplicación de extremo a extremo. El script de configuración da una idea de lo que implica.

Posdata

Couchbase es de código abierto y probar gratis.
Empezar con código de ejemplo, consultas de ejemplo, tutoriales y mucho más.
Más recursos en nuestra portal para desarrolladores.
Síguenos en Twitter @CouchbaseDev.
Puede enviar preguntas a nuestro foros.
Participamos activamente en Stack Overflow.
Envíame tus preguntas, comentarios, temas que te gustaría ver, etc. a Twitter. @HodGreeley

Autor

Publicado por Hod Greeley, Defensor del Desarrollador, Couchbase

Hod Greeley es desarrollador de Couchbase y vive en Silicon Valley. Tiene más de dos décadas de experiencia como ingeniero de software y director de ingeniería. Ha trabajado en una variedad de campos de software, incluyendo física computacional y química, seguridad informática y de redes, finanzas y móviles. Antes de unirse a Couchbase en 2016, Hod dirigió las relaciones con desarrolladores para móviles en Samsung. Hod es doctor en física química por la Universidad de Columbia.

Dejar una respuesta