Metadatoscomo etiquetaspuede adjuntarse a un demonio Docker. Una etiqueta es un par clave/valor y permite al host Docker ser un objetivo de contenedores. La semántica de las etiquetas está completamente definida por la aplicación. Un nuevo Docker restricción se pueden especificar durante la creación del servicio apuntando a las tareas en un host en particular. Veamos cómo podemos utilizar etiquetas y restricciones en Docker para una aplicación del mundo real.

Couchbase con escalado multidimensional (o MDS) nos permite dividir el servicio de índices, datos, consultas y búsqueda de texto completo
en varios nodos. Las necesidades de cada servicio son diferentes. Por ejemplo, la consulta requiere mucha CPU, el índice requiere mucho disco y los datos son una mezcla de memoria y lectura/escritura rápida, como SSD. MDS permite que los recursos de hardware se asignen y optimicen de forma independiente por nodo, a medida que cambian los requisitos de la aplicación.
couchbase-mds Más información Escala multidimensional.
Veamos cómo hacerlo fácilmente en un cluster de tres nodos utilizando Modo enjambre Docker.

Iniciar instancias de Ubuntu

Inicie tres instancias en EC2 de Ubuntu Server 14.04 LTS (HVM) (AMI ID: ami-06116566). Tome los valores por defecto en todos los casos excepto para el grupo de seguridad. El modo enjambre requiere los tres elementos siguientes puertos abiertos entre hosts:

  • Puerto TCP 2377 para las comunicaciones de gestión de clusters
  • TCP y Puerto UDP 7946 para la comunicación entre nodos
  • TCP y Puerto UDP 4789 para el tráfico de red superpuesta

Asegúrese de crear un nuevo grupo de seguridad con estas reglas:
ec2-swarmmode-security-group
Espere unos minutos a que se aprovisionen las instancias.

Configurar Docker en Ubuntu

El modo enjambre se introduce en Docker 1.12. En el momento de escribir esto, 1.12 RC4 es la última versión candidata. Utilice el siguiente script para instalar la versión RC4 con características experimentales:

Este script asume que AWS CLI ya está configurado y realiza la siguiente configuración para todos instancias en ejecución en su EC2 configurado
cuenta:

  • Obtener la dirección IP pública de cada instancia
  • Para cada instancia
    • Instalar la última versión de Docker con características experimentales
    • Añade ubuntu usuario al docker grupo. Esto permite utilizar Docker como usuario no root.
    • Imprime la versión de Docker

Este sencillo script configurará el host Docker en las tres instancias.

Asignar etiquetas al demonio Docker

Las etiquetas pueden definirse mediante DOCKER_OPTS. En el caso de Ubuntu, se define en el archivo /etc/default/docker archivo. Es necesario asignar etiquetas distintas a cada nodo. Por ejemplo, utilice couchbase.mds clave
y
índice valor.

También es necesario reiniciar el demonio Docker. Finalmente, información de docker muestra información de todo el sistema:

Como puede ver, las etiquetas son visibles en esta información. Para el segundo nodo, asigne una etiqueta diferente:

Asegúrese de utilizar la dirección IP de la segunda instancia EC2. La información actualizada sobre el demonio Docker en este caso será:

Y finalmente, el último nodo:

Se mostrará la información actualizada sobre el demonio Docker para este host:

En nuestro caso, se crea un cluster homogéneo donde las máquinas son exactamente iguales, incluyendo su sistema operativo, CPU, disco y capacidad de memoria. En el mundo real, normalmente tendrás el mismo sistema operativo pero la capacidad de las instancias, como disco, CPU y memoria, diferirá en función de los servicios de Couchbase que quieras ejecutar en ellas. Estas etiquetas tendrían perfecto sentido en ese caso, pero muestran el punto aquí.

Activar modo enjambre y crear clúster

Activemos el Modo Enjambre y creemos un cluster de 1 Manager y 2 nodos Worker. Por defecto, los managers también son nodos worker. Inicializa Swarm en el primer nodo:

Esto mostrará la salida:

Añade otros dos nodos como trabajador:

Los comandos exactos, y la salida, en este caso son:

Ahora se pueden obtener detalles completos sobre el clúster:

Y esto muestra la salida:

Esto muestra que hemos creado un cluster de 3 nodos con un gestor.

Ejecutar un servicio Docker con restricciones

Ahora, vamos a ejecutar tres servicios Couchbase con diferentes restricciones. Cada servicio Docker especifica las restricciones usando--restricción motor.etiquetas. donde coinciden las etiquetas definidas anteriormente para los nodos. Cada servicio recibe un nombre único, ya que permite escalarlos individualmente. Todos los comandos se dirigen al gestor del Enjambre:

Los comandos exactos en nuestro caso son:

La lista de servicios puede verificarse como:

Esto muestra la salida como:

Y la lista de tareas (esencialmente contenedores dentro de ese servicio) para cada servicio puede entonces verificarse como:

Y la salida en nuestro caso:

Esto muestra que los servicios están bien distribuidos en diferentes nodos. No dudes en comprobar si la tarea está programada en el nodo con la etiqueta correcta. Todas las instancias de Couchbase pueden configurarse en un clúster para proporcionar una solución de base de datos completa para tus aplicaciones web, móviles e IoT. ¿Quieres saber más?

Autor

Publicado por Arun Gupta, Vicepresidente, Defensa del Desarrollador, Couchbase

Arun Gupta es vicepresidente de promoción de desarrolladores en Couchbase. Ha creado y dirigido comunidades de desarrolladores durante más de 10 años en Sun, Oracle y Red Hat. Tiene una gran experiencia en liderar equipos multidisciplinares para desarrollar y ejecutar estrategias, planificar y ejecutar contenidos, campañas de marketing y programas. Anteriormente dirigió equipos de ingeniería en Sun y es miembro fundador del equipo Java EE. Gupta es autor de más de 2.000 entradas de blog sobre tecnología. Tiene una amplia experiencia como conferenciante en más de 40 países sobre innumerables temas y es una JavaOne Rock Star desde hace tres años consecutivos. Gupta también fundó el capítulo Devoxx4Kids en Estados Unidos y sigue promoviendo la educación tecnológica entre los niños. Autor de varios libros sobre tecnología, ávido corredor, trotamundos, campeón de Java, líder de JUG, miembro del Dream Team de NetBeans y capitán de Docker, es fácilmente accesible en @arungupta.

1 Comentarios

  1. [...] el blog de Couchbase está lleno de contenido, la película Interstellar está disponible en Cocuhbase ? Multidimensional [...]

Dejar una respuesta