Rafael Ugolini es un desarrollador de software de pila completa con sede en Bruselas, Bélgica. Él trabaja en el desarrollo de software desde hace más de 10 años y últimamente se centra en el diseño de soluciones web y desarrollando utilizando Python y JavaScript. Rafael Ugolini es desarrollador de software sénior en Famoco.

FullSizeRender

Introducción

Docker es un gran proyecto que está ayudando a desarrolladores de todo el mundo a ejecutar aplicaciones en contenedores. Esto no sólo ayuda a enviar software más rápido, sino que también resulta en la famosa frase "funciona en mi máquina". En este artículo voy a explicar cómo crear una imagen modular de Couchbase que no requiere ninguna interacción Web UI para tener una base de datos lista para usar por ti.

Todo el código está disponible en línea aquí.

Dockerfile

El primer paso es crear el Dockerfile.

Versión de Couchbase

Este ejemplo está basado en Couchbase Server Enterprise 4.6.1, pero puedes cambiar a la versión específica que estés ejecutando en tu entorno.

Configuración de la memoria

Todos los valores están en MB:

- MEMORY_QUOTA: cuota de ram del servicio de datos por nodo

- INDEX_MEMORY_QUOTA: cuota de ram del servicio de índices por nodo

- FTS_MEMORY_QUOTA: cuota de memoria ram por nodo del servicio de índices

Servicios

Estos son los servicios que estarán disponibles para el nodo creado:

- kv: Datos

- n1ql: Consulta

- índice: Índice

- fts: Búsqueda de texto completo

Credenciales

Nombre de usuario y contraseña a utilizar en Couchbase Server.

Opciones de clúster

Estas opciones sólo se utilizan si desea añadir más de un nodo en el clúster.

- CLUSTER_HOST: nombre de host del cluster al que se unirá este nodo

- CLUSTER_REBALANCE: establece "true" si quieres que el cluster se reequilibre después de que el nodo se una.

Punto de entrada

La imagen de Couchbase Server ya viene con un script entrypoint.sh y no queremos sobreescribirlo. El truco aquí es copiar nuestra versión de entrypoint.sh a /config-entrypoint.sh, ejecutar Couchbase Server entrypoint.sh en segundo plano, y después de configurar el nodo adjuntar el script de nuevo al original PUNTO DE ENTRADA.

Punto de entrada

En PUNTO DE ENTRADA se utiliza en combinación con el script original de la imagen de Couchbase Server. Vamos a ir línea por línea para entender cómo funciona.

Inicializar Couchbase Server

En primer lugar utilizamos set -m para activar el control de trabajos, proceso que se ejecuta en segundo plano (como el original PUNTO DE ENTRADA) se ejecutan en un grupo de procesos separado. Esta opción está desactivada por defecto en modo no interactivo, como los scripts.

Funciones útiles

Esta función se utiliza para comprobar cuando Couchbase Server comienza a responder llamadas HTTP.

Esto es sólo una función util, añade un número antes de cualquier eco en el script para contar los pasos dados automáticamente.

Con el fin de analizar la salida de los nodos en Couchbase Server API, estoy usando una función que se ejecuta ython para leer STDINtransformarlo a JSON y a los nodos Couchbase. Esto se utiliza para el reequilibrio.

Configurar el nodo

El primer paso consiste en esperar a que el servidor esté listo y, a continuación, utilizar la función eco_numerado puedes ver cuánto tardó Couchbase Server en tener disponibles las llamadas a la API.

A continuación, establecemos una variable NOMBRE HOST que se utilizará en todas las llamadas a la API que hagamos y también ponemos a cero el contador de eco_numerado poniéndolo a 1.

 

Lo primero que hay que hacer es establecer la configuración de almacenamiento en disco y luego establecemos el nombre de host.

Unirse a un clúster

Si CLUSTER_HOST el script intentará añadir el archivo contenedor al clúster.

Después de añadir el nodo al cluster, el script también puede comprobar la variable CLUSTER_REBALANCE para ver si necesita reequilibrar el cluster automáticamente. Aquí es donde usamos la función de Python para leer los nodos de /pools/default punto final.

No unirse a un clúster

Ajustes de memoria para los servicios.

Servicios que utilizará el nodo.

Configure las credenciales para el nodo.

Finalizar

Para finalizar el script, lo adjuntamos al original PUNTO DE ENTRADA.

Ejemplo

Para demostrar cómo utilizarlo, utilizaré la imagen registrada en Centro Docker con el código aquí.

Nodo único

 

Esto ejecuta un único nodo utilizando la memoria mínima requerida y las credenciales por defecto (Administrador/contraseña) registrados en la imagen. Todos los puertos de red Servidor Couchbase usos también están expuestos.

El comando anterior juega un poco con las variables de entorno disponibles en el Dockerfile.

Grupo

En este ejemplo, conectaremos 3 nodos en el cluster.

 

Primero debemos crear una red Couchbase donde conectaremos todos los nodos.

A continuación, creamos el primer nodo.

 

Dado que todos los puertos de red están expuestos en el primer nodo, no es necesario exponerlos aquí.

Atención a los detalles que CLUSTER_HOST se establece en nodo1.cluster que es el nombre de host del primer nodo y CLUSTER_REBALANCE también se establece en verdadero. Una vez añadido el nodo al clúster, se reequilibrará automáticamente.

 

El nodo3 también se añade al cluster, pero como CLUSTER_REBALANCE no se ha establecido, será necesario reequilibrar manualmente el clúster para que esté disponible.

 

Este post forma parte del Programa de Escritura de la Comunidad Couchbase

Autor

Publicado por Laura Czajkowski, Directora de la Comunidad de Desarrolladores, Couchbase

Laura Czajkowski es la Snr. Developer Community Manager en Couchbase supervisando la comunidad. Es responsable de nuestro boletín mensual para desarrolladores.

Dejar una respuesta