Cuando estoy en eventos y conferencias siempre me preguntan cuánto cobra Couchbase por el alojamiento. La respuesta sencilla es que Couchbase es
una empresa de software y no de alojamiento, pero eso no significa que no puedas alojar Couchbase a través de algún otro servicio. Hay Couchbase
imágenes disponibles en servicios como Amazon Web Services (AWS), Azure, Joyent y muchos otros.
En concreto, vamos a ver cómo alojar Couchbase Server en Triton de Joyent con Docker.
Antecedentes de Joyent y Triton
Si no conoce Joyent, se trata de una empresa de software y servicios especializada en nubes públicas y privadas orientadas al rendimiento.
informática. Con el servicio Triton de Joyent, puede "...desplegar y operar contenedores de forma segura con velocidad bare metal en
infraestructura nativa de contenedores". Algunas de las ventajas de ejecutar contenedores Docker en Triton son:
- Sus contenedores se ejecutan sobre metal desnudo, eliminando la sobrecarga de virtualización a nivel de hardware. En otras palabras, experimentará
Mejora significativa del rendimiento. - Cada contenedor tiene su propia dirección IP, lo que facilita la conexión en red entre contenedores.
- Puede redimensionar sus contenedores Docker sin tiempo de inactividad.
Requisitos
Dado que vamos a poner en marcha un clúster de Couchbase Server en Triton de Joyent, habrá algunos requisitos en el proceso:
- Docker 1.8
- Una cuenta de Joyent
- Una clave privada SSH
Probablemente puedas usar una versión diferente de Docker, pero yo estoy usando la 1.8. Depende de ti lo aventurero que quieras ser.
Uso de Couchbase con contenedores Docker
Llegados a este punto, si aún no ha instalado la aplicación Caja de herramientas Docker, ahora es un
buen momento. Contendrá todas las herramientas necesarias para utilizar Docker en nuestro ordenador local.
Ahora la Docker Toolbox contiene una herramienta llamada Kitematic, que ofrece soporte GUI para Docker. No vamos a utilizar esa herramienta. En su lugar vamos a
para hacerlo todo desde el Terminal (Mac y Linux) o el Símbolo del sistema (Windows).
Ten en cuenta que por ahora vamos a usar Docker sólo localmente, sólo para familiarizarnos con Couchbase y Docker. Más adelante en esta guía vamos a
conectándose al servicio Triton de Joyent.
Descargar e iniciar un contenedor de servidor Couchbase
Desde la aplicación Docker Terminal, ejecute el siguiente comando:
|
1 2 3 |
docker run --name couchbase-server-1 -d -p 8091:8091 couchbase |
El comando anterior descargará la última imagen Docker oficial de Couchbase Server, le dará un nombre al contenedor en nuestro sistema y lo iniciará.
Puede comprobar que se ha realizado correctamente visitando https://192.168.99.100:8091/ en su navegador. Nota
que 192.168.99.100 es lo que su Terminal Docker le dijo cuando lo inició.
Iniciar un segundo contenedor de servidor Couchbase
Continúa y arranca una segunda instancia local de Couchbase Server con Docker. Esta vez quieres hacer lo siguiente:
|
1 2 3 |
docker run --name couchbase-server-2 -d -p 8092:8091 couchbase |
Fíjate que esta vez hemos cambiado el nombre del contenedor y hemos aumentado el puerto host a 8092 en lugar de 8091. Este
es evitar conflictos entre puertos.
Detener y eliminar ambos contenedores del servidor Couchbase
Ya no necesitamos estos contenedores Docker de Couchbase Server ejecutándose localmente. Para eliminarlos, primero debemos averiguar su único
valor del contenedor así:
|
1 2 3 |
docker ps |
El resultado será algo parecido a esto:
|
1 2 3 4 5 |
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 9f3b05af8393 couchbase "/entrypoint.sh couch" 9 minutes ago Up 9 minutes 8092-8093/tcp, 11207/tcp, 11210-11211/tcp, 18091-18092/tcp, 0.0.0.0:8092->8091/tcp couchbase-server-2 b20045600bd0 couchbase "/entrypoint.sh couch" 9 minutes ago Up 9 minutes 8092-8093/tcp, 11207/tcp, 11210-11211/tcp, 0.0.0.0:8091->8091/tcp, 18091-18092/tcp couchbase-server-1 |
Con los valores únicos del contenedor, puede ejecutar:
|
1 2 3 4 5 6 |
docker stop 9f3b05af8393 docker stop b20045600bd0 docker rm 9f3b05af8393 docker rm b20045600bd0 |
Ahora ambos contenedores locales deberían estar eliminados.
Conexión de Docker a la API de Triton Cloud
Hasta ahora, todo lo relacionado con Docker y Couchbase era local en tu máquina. Ahora vamos a conectar nuestro cliente Docker al servidor Joyent
Cloud API para que podamos hacer uso de Triton. Los pasos que vamos a seguir se pueden encontrar en
el documentación oficial de Joyenten esta guía.
Comienza obteniendo el script de ayuda de Joyent de la siguiente manera:
|
1 2 3 |
curl -O https://raw.githubusercontent.com/joyent/sdc-docker/master/tools/sdc-docker-setup.sh |
Si no tiene o no puede utilizar rizo descargar el archivo manualmente. Una vez descargado el script, ejecútelo,
introduciendo un determinado conjunto de parámetros:
|
1 2 3 |
bash sdc-docker-setup.sh ~/.ssh/ |
En CLOUDAPI_URL puede ser uno de los siguientes, según la documentación:
- https://us-east-1.api.joyent.com
- https://us-sw-1.api.joyent.com
- https://eu-ams-1.api.joyent.com
En NOMBRE_CUENTA es el nombre de usuario que utilizas para acceder al panel de control de Joyent. Como se mencionó anteriormente, necesitarás un SSH
clave privada para conectar a ARCHIVO_CLAVE_PRIVADA.
Cuando ejecutes el script, puede que te pida que introduzcas la contraseña de tu clave privada unas cuantas veces. Sólo tienes que seguir las instrucciones y hacer lo que dice. En
al final, le proporcionará algo parecido a lo siguiente:
|
1 2 3 4 5 6 |
export DOCKER_CERT_PATH=/Users/nraboy/.sdc/docker/nraboy export DOCKER_HOST=tcp://us-east-1.docker.joyent.com:2376 export DOCKER_CLIENT_TIMEOUT=300 export DOCKER_TLS_VERIFY=1 |
Usted querrá ejecutar esos exportar pero no olvides cambiar mi nraboy a la de cualquier
que ha generado para ti. Estas declaraciones de exportación son importantes porque una vez que las ejecutes, Docker utilizará Joyent para gestionar
en lugar de su máquina local.
Ejecutar Couchbase Server Containers en Joyent
¿Recuerdas los comandos locales de Docker que ejecutamos antes? Vamos a ejecutarlos de nuevo con una pequeña modificación:
|
1 2 3 |
docker run --name couchbase-server-1 -d -P couchbase |
No deberíamos necesitar definir el mapeo de puertos por nuestra cuenta cuando se trata de Joyent. Esto se debe a que Joyent nos da una IP para cada contenedor que
crear. En nuestra máquina local sólo tenemos una IP y los puertos se convierten en un problema. Basta con hacer uso de la -P bandera y tú
debería ser bueno.
Si accedes a tu dashboard de Joyent deberías ver el nodo y su dirección IP. Si no desea obtener la información a través de
el tablero de Joyent, siempre puedes hacerlo a través de la Terminal Docker porque todo lo que hace está en el lado remoto ahora:
|
1 2 3 4 |
docker ps docker inspect --format '{{ .NetworkSettings.IPAddress }}' 9f3b05af8393 |
Recuerde, por supuesto, cambiar el identificador único del contenedor por los devueltos por docker ps.
Configure su primer nodo Couchbase
Utilizando una de las direcciones IP devueltas por el docker inspeccionar introdúzcalo en su navegador web con el puerto
8091 añadido. Algo así como https://165.225.158.112:8091 lo hará.
Sigue los pasos para configurar el cluster de Couchbase. Recuerda la IP y las credenciales de administrador ya que serán necesarias cuando
añadir nuevos nodos a su clúster.
Añade más nodos a tu clúster Couchbase Triton
Es hora de añadir otro contenedor Couchbase Server a Triton para que podamos agrupar nuestros nodos Couchbase. Desde el Terminal Docker ejecuta:
|
1 2 3 |
docker run --name couchbase-server-2 -d -P couchbase |
Como hemos comentado antes, obtén la IP de este contenedor e inícialo en tu navegador web en el puerto 8091.
En lugar de elegir crear un nuevo cluster Couchbase, elija unirse a uno e introduzca la información del otro servidor. Una vez completado,
reequilibra el servidor y listo.
Eliminar contenedores de su clúster
Dado que Couchbase es bastante escalable, probablemente necesitarás eliminar nodos de vez en cuando. Para ello, deberás
primero debe eliminar el nodo Couchbase de su clúster a través del panel de control administrativo de Couchbase. La eliminación incluirá
un reequilibrio de todos sus nodos existentes.
Con el nodo eliminado de forma segura del clúster, ahora puedes eliminar su contenedor del servicio Triton de Joyent. En tu Terminal Docker procede
con los mismos pasos que seguimos cuando eliminamos un contenedor localmente:
|
1 2 3 4 5 6 7 |
docker ps docker stop 9f3b05af8393 docker stop b20045600bd0 docker rm 9f3b05af8393 docker rm b20045600bd0 |
Recuerde, por supuesto, cambiar los identificadores de contenedor únicos por los devueltos por docker ps.
Conclusión
Acabamos de ver cómo hacer uso del servicio Triton de Joyent para alojar contenedores Docker con Couchbase Server. Usar Joyent te dará increíbles
rendimiento gracias a su infraestructura bare-metal y su excelente seguridad.
El tema de la seguridad estaba fuera del alcance de este artículo en particular, pero puede que se vuelva a tratar en una futura entrada.
Para complementar este artículo, Joyent ofrece a los usuarios de Couchbase un descuento promocional en su servicio Triton. Puedes registrarte en Joyent y
aproveche esta oferta aquí.