El contenedor Docker de Couchbase puede ejecutarse fácilmente en diversas plataformas de orquestación:

Contenedor Docker utilizando Apache Mesos y Marathon explicaba cómo configurar Mesos, Marathon y ejecutar una imagen Docker sencilla. La configuración era bastante envolvente y un poco
flaky. Es necesario descargar e instalar Mesos Master y Slave, ZooKeeper, Docker Engine y Marathon. En algunos casos, es necesario añadir primero el repositorio correcto. Estos componentes tienen que hablar entre sí y por lo tanto debe ser configurado
en consecuencia. Incluso si se supera esa configuración, ¿cómo se supervisa toda la infraestructura como una sola entidad?
Conozca DC/OS - Sistema operativo para centros de datos. Es un sistema operativo distribuido que utiliza Apache Mesos
como núcleo.
dcos-kernel
DC/OS puede instalarse
de diversas maneras:

  • Local con Vagrant
  • Nube utilizando Amazon/CloudFormation, Microsoft Azure y Packet
  • En local con CentOS o CoreOS

Este blog mostrará cómo configurar un Clúster DC/OS utilizando plantillas CloudFormation en Amazon y ejecuta un contenedor Docker de Couchbase.

Iniciar clúster DC/OS

Iniciar clúster DC/OS:
dcos-couchbase-1

Toma los valores por defecto:
dcos-couchbase-2

Asigne un nombre a la plantilla, seleccione un llavero creado previamente y cambie el número de esclavos:
dcos-couchbase-3

Toma los valores por defecto:
dcos-couchbase-4

Verifique la configuración:
dcos-couchbase-5

Haga clic en "Reconozco que..." y en Crear para iniciar la creación de la plantilla. Estado de la pila CloudFormation  aparece la página:
dcos-couchbase-6

Asegúrese de elegir la región adecuada. Tras unos 10-15 minutos, el estado cambia:
dcos-couchbase-7

Espere a que el estado cambie de CREAR_EN_PROGRESO a CREAR_COMPLETAR.

Descarga y configuración de DC/OS CLI

DC/OS CLI se puede utilizar para gestionar los nodos del clúster, instalar paquetes de DC/OS, inspeccionar el estado del clúster y administrar los subcomandos de servicio de DC/OS. Instalar DC/OS CLI en
su máquina local.

En su Estado de la pila CloudFormation  seleccione la pila creada, Salidas y copie la dirección de
Maestro Mesos.
dcos-couchbase-8

Configure la CLI de DC/OS para utilizar este clúster:

Autentícate:

Introduzca la URL en el navegador, proceda a la URL no segura:
dcos-couchbase-9

Copie el token en el portapapeles:
dcos-couchbase-10

Pegue el token de autenticación en la ventana del terminal:

Mesos y Marathon UI

Mesos UI está disponible utilizando la dirección del maestro Mesos:
dcos-couchbase

Haga clic en Servicios para ver el servicio Marathon ya instalado:
dcos-couchbase-12

Haga clic en maratón para ver la lista de tareas:
dcos-couchbase-13

Como era de esperar para un clúster recién creado, aún no se ha asignado ninguna tarea. Haga clic en Nodos para ver los nodos:
dcos-couchbase-14

Instalación y configuración de Marathon Load Balancer

Los nodos esclavos de DC/OS no están expuestos directamente en Internet. Se puede configurar un equilibrador de carga "externo" para exponer las tareas que se ejecutan en los esclavos. Maratón-lbabreviatura de Maratón
Load Balancer, es un equilibrador de carga disponible como servicio Mesos. Se basa en HAProxy que proporciona proxy y balanceo de carga para aplicaciones basadas en TCP y HTTP, con características como soporte SSL, compresión HTTP, comprobación de salud y más.
Marathon-lb se suscribe al bus de eventos de Marathon y actualiza la configuración de HAProxy en tiempo real.

La interfaz de usuario del servicio Marathon mostrará la tarea LB en ejecución:
dcos-couchbase-15

AWS Load Balancer permite los puertos 80 y 443 por defecto. Ejecutaremos un servidor Couchbase que se expondrá en el puerto 8091.

En Estado de la pila CloudFormation  copie el valor de Valores columna de PublicSlaveDnsAddress:
dcos-couchbase-16

En Consola de AWS, seleccione Balanceadores de cargaañada una nueva regla de cortafuegos para permitir el puerto 8091 en TCP:
dcos-couchbase-17

Ejecutar el contenedor Docker de Couchbase Server en DC/OS

Ejecute el contenedor Docker de Couchbase Server en DC/OS utilizando el siguiente archivo de configuración:

Este archivo de configuración utiliza arungupta/couchbase imagen que configura el Servidor Couchbase utilizando API REST de Couchbase.
Esta imagen es Imagen Docker de Couchbase. cpus y mem definen la memoria de procesamiento necesaria para ejecutar esta tarea. Indique al comando
para ejecutar Couchbase en un clúster DC/OS:

Utilice la copia anterior para PublicSlaveDnsAddress y acceder al Consola web de Couchbase en http://:8091. En nuestro caso, la URL es: http://couchbase-publicsl-vjzmwpa38k6d-429093455.us-west-1.elb.amazonaws.com:8091/index.html.
Esto muestra la página de inicio de sesión como:
dcos-couchbase-18

Introduzca las credenciales de inicio de sesión como Administrador y contraseña:
dcos-couchbase-19

Haga clic en Iniciar sesión para ver:
 dcos-couchbase

Más información Consola web de Couchbase.

La interfaz de usuario de Maratón se actualiza para mostrar todos los servicios en ejecución:
dcos-couchbase-21

El registro de la imagen Docker de Couchbase se puede ver en Log Viewer:
 dcos-couchbase-22

Y la vista de salida estándar:
dcos-couchbase-23

El panel de control de Mesos se actualiza para mostrar los recursos consumidos:
dcos-couchbase-24-

Por último, la pila completa se puede eliminar desde la página de plantillas StackFormation:
dcos-couchbase-25

Más información:

¡Que aproveche!

Ahora, has visto Couchbase en Docker Swarm, Couchbase en Kubernetes, Couchbase en OpenShift 3.
Este blog mostraba cómo ejecutar una imagen Docker de Couchbase en Mesos y DC/OS.

¿Dónde más le gustaría que se ejecutara el contenedor Couchbase?

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.

3 Comentarios

  1. Hola Arun Gupta,

    En primer lugar, gracias por todas tus aportaciones, nos han ayudado mucho a trabajar con Couchbase.

    En realidad tengo una pregunta: estamos tratando de ejecutar una instancia de Couchbase en DCOS. Todo está funcionando bien, excepto que no somos capaces de acceder a esta instancia a través del cliente SDK "cbc n1ql..." o la biblioteca PHP (por ejemplo, la clase CouchbaseN1qlQuery). REST API está funcionando bien.

    Constantemente obtenemos LCB_ECONNREFUSED o LCB_NETWORK_ERROR dependiendo de la acción intentada.

    Instalamos la biblioteca PHP utilizando https://developer.couchbase.com/documentation/server/4.6/sdk/php/start-using-sdk.html.
    Aquí está el puerto de enrutamiento que ponemos en el maratón json :


    "docker": {
    "image": "registry.marathon.l4lb.thisdcos.directory/couchbase/server:4.6.1",
    "red": "PUENTE",
    "portMappings": [
    {
    "containerPort": 8091,
    "hostPort": 0,
    "servicePort": 10114,
    "protocolo": "tcp",
    "etiquetas": {
    "VIP_0": "/projects/ccu/couchbase/couchbaseccu:8091"
    }

    },
    {
    "containerPort": 8092,
    "hostPort": 0,
    "servicePort": 10115,
    "protocolo": "tcp",
    "etiquetas": {
    "VIP_0": "/projects/ccu/couchbase/couchbaseccu:8092"
    }

    },
    {
    "containerPort": 8093,
    "hostPort": 0,
    "servicePort": 10116,
    "protocolo": "tcp",
    "etiquetas": {
    "VIP_0": "/projects/ccu/couchbase/couchbaseccu:8093"
    }
    },
    {
    "containerPort": 8094,
    "hostPort": 0,
    "servicePort": 10117,
    "protocolo": "tcp",
    "etiquetas": {
    "VIP_0": "/projects/ccu/couchbase/couchbaseccu:8094"
    }
    },
    {
    "containerPort": 11210,
    "hostPort": 0,
    "servicePort": 10118,
    "protocolo": "tcp",
    "etiquetas": {
    "VIP_0": "/projects/ccu/couchbase/couchbaseccu:11210"
    }
    }

    1. Agradecería cualquier ayuda,
      Gracias

      1. cbc n1ql -U couchbase://couchbasecouchbaseccu.marathon.l4lb.thisdcos.directory/bucket_name 'CREATE INDEX profile_given_name...' salidas
        772ms [I3bcc1f16] {7396} [TRACE] (http-io - L:249) POST http://172.17.0.28:8093/query/service. Body=192 bytes
        772ms [I3bcc1f16] {7396} [DEBUG] (lcbio_mgr - L:448) [DEBUG] (lcbio_mgr - L:448) (HE=0xaf2520) Creando nueva conexión porque no hay ninguna disponible en el pool.
        773ms [I3bcc1f16] {7396} [TRACE] (lcbio_mgr - L:359) (HE=0xaf2520) [TRACE] (lcbio_mgr - L:359) (HE=0xaf2520) Nueva entrada en el pool: I=0xaf2940
        773ms [I3bcc1f16] {7396} [INFO] (conexión - L:474) (SOCK=000000005708fc0d) Iniciando. Tiempo de espera=75000000us
        773ms [I3bcc1f16] {7396} [DEBUG] (conexión - L:238) [DEBUG] (conexión - L:238) (SOCK=000000005708fc0d) Creado nuevo socket con FD=7
        773ms [I3bcc1f16] {7396} [TRACE] (conexión - L:339) [TRACE] (connection - L:339) (SOCK=000000005708fc0d) Programando vigilante de E/S para finalización de conexión asíncrona.
        773ms [I3bcc1f16] {7396} [TRACE] (conexión - L:354) (SOCK=000000005708fc0d) connect() falló. errno=111 [Conexión rechazada]
        773ms [I3bcc1f16] {7396} [ERROR] (conexión - L:156) (SOCK=000000005708fc0d) Error al establecer la conexión: LCB_ECONNREFUSED (0x2C), os errno=111
        773ms [I3bcc1f16] {7396} [DEBUG] (lcbio_mgr - L:318) [DEBUG] (lcbio_mgr - L:318) (HE=0xaf2520) Resultado recibido para I=0xaf2940,C=(nil); E=0x2c
        773ms [I3bcc1f16] {7396} [ERROR] (http-io - L:226) [ERROR] (http-io - L:226) Error en la conexión con Err=0x2c
        773ms [I3bcc1f16] {7396} [WARN] (http-io - L:85) No reintentando. No hay nodos disponibles
        773ms [I3bcc1f16] {7396} [TRACE] (confmon - L:275) [TRACE] (confmon - L:275) Actualizando el mapa de cluster actual

Dejar una respuesta