Se presenta Docker 1.12 Servicios. Se puede crear fácilmente un servicio replicado, distribuido y con equilibrio de carga utilizando docker service create comando. Se proporciona un "estado deseado" de la aplicación, como ejecutar 3 contenedores de Couchbase, y el motor Docker de autorreparación garantiza que muchos contenedores se estén ejecutando en el clúster. Si un contenedor se cae, se inicia otro.
Si un nodo se cae, los contenedores de ese nodo se inician en un nodo diferente. Este blog mostrará cómo configurar un cluster de Couchbase usando Docker Services. Muchas gracias a @marcosnilsotro compañero Capitán Docker,
para ayudarme a depurar la red.

Clúster Couchbase

Un cluster de Couchbase Servers se despliega típicamente en servidores commodity. Couchbase Server tiene una topología peer-to-peer donde todos los nodos son iguales y se comunican entre sí bajo demanda. No existe el concepto de nodos maestros, nodos esclavos o nodos de configuración,
nodos de nombre, nodos de cabeza, etc., y todo el software cargado en cada nodo es idéntico. Permite añadir o eliminar nodos sin tener en cuenta su "tipo". Este modelo funciona especialmente bien con la infraestructura de nube en general.

Un proceso típico de creación de un clúster Couchbase tiene este aspecto:
  • Iniciar Couchbase: Iniciar n servidores Couchbase
  • Crear clúster: Elige cualquier servidor y añádele todos los demás servidores para crear el clúster.
  • Reequilibrar el clúster: Reequilibrar el clúster para que los datos se distribuyan por todo el clúster.
Para automatizar el uso de los servicios Docker, la creación del clúster se divide en un servicio "maestro" y otro "trabajador".
docker-service-couchbase-cluster
El servicio maestro sólo tiene una réplica. Esto proporciona un único punto de referencia para iniciar la creación del clúster. Este servicio también expone el puerto 8091. Permite que el Consola web de Couchbase a
ser accesible desde fuera del clúster.
El servicio trabajador utiliza exactamente la misma imagen que el servicio maestro. Esto mantiene el clúster homogéneo, lo que permite escalarlo fácilmente.
Empecemos.

Configurar el modo enjambre en Ubuntu

  1. Lanzar una instancia de Ubuntu en Amazon. Este blog utiliza mx4.grande tamaño para el AMI.
  2. Instala Docker:
  3. Modo Docker Swarm es una función opcional y debe activarse explícitamente. Inicializar el modo Enjambre:

Crear servicio "maestro" de Couchbase

  1. Crear una red superpuesta:

    Esto es necesario para que varios contenedores Docker de Couchbase en el clúster puedan comunicarse entre sí.
  2. Crear un servicio "maestro":

    Esta imagen se crea utilizando el archivo Dockerfile aquí. Este Dockerfile utiliza un script de configuración a
    configura la imagen Docker base de Couchbase. En primer lugar, utiliza API REST de Couchbase para configurar la cuota de memoria, índice de configuración, datos y
    servicios de consulta, credenciales de seguridad y carga un bucket de datos de muestra. A continuación, invoca los servicios Couchbase CLI para añadir el
    Nodo Couchbase al cluster o añadir el nodo y reequilibrar el cluster. Esto se basa en tres variables de entorno:
    • TIPO: Define si el pod de unión es trabajador o maestro
    • AMO_DEL_CAMA: Nombre del servicio principal
    • AUTO_REBALANCE: Define si es necesario reequilibrar el clúster.
    Para este primer archivo de configuración, la variable de entorno TYPE se establece en MASTER, por lo que no se realiza ninguna configuración adicional en la imagen de Couchbase.

    Este servicio también utiliza la red superpuesta creada anteriormente denominada couchbase. Expone el puerto 8091 que hace que el Consola web de Couchbase accesible fuera del cluster. Este servicio contiene solo una réplica del contenedor.

  3. Comprueba el estado del servicio Docker:

    Muestra que el servicio está funcionando. El número "deseado" y "esperado" de réplicas es 1, por lo que coinciden.

  4. Compruebe las tareas del servicio:

    Esto muestra que el contenedor se está ejecutando.

  5. Accede a la Consola Web de Couchbase usando la dirección IP pública y debería verse así:
    docker-service-couchbase-login
    La imagen utilizada en el archivo de configuración se configura con la opción Administrador nombre de usuario y contraseña contraseña. Introduzca las credenciales para ver la consola:
    docker-service-couchbase-web-console
  6. Haz clic en Server Nodes para ver cuántos nodos Couchbase forman parte del cluster. Como era de esperar, sólo muestra un nodo:
    docker-service-couchbase-one-active-server

Crear servicio "worker" Couchbase

  1. Crear servicio "trabajador":

    Esta RC también crea una única réplica de Couchbase utilizando la misma arungupta/couchbase:enjambre imagen. Las diferencias clave aquí son:

    • TIPO se establece en TRABAJADOR. Esto añade un nodo Couchbase trabajador al cluster.
    • AMO_DEL_CAMA se le pasa el nombre del servicio maestro,  couchbase-master.couchbase en nuestro caso. Esto utiliza el mecanismo de descubrimiento de servicios incorporado en Docker para el trabajador y
      al maestro para comunicarse.
  2. Comprueba el servicio:
  3. Comprobando la Consola Web de Couchbase se muestra la salida actualizada:
    docker-service-couchbase-one-pending-server
    Muestra que un servidor está pendiente de ser reequilibrado.Durante la creación del servicio de trabajador, AUTO_REBALANCE podría haberse establecido en verdadero o falso a
    active reequilibrar. Esto garantiza que el nodo sólo se añade al clúster, pero el clúster en sí no se reequilibra. Para reequilibrar el clúster es necesario
    redistribuir los datos entre varios nodos del clúster. La forma recomendada es añadir varios nodos y, a continuación, reequilibrar manualmente el clúster mediante la consola web.

Añadir nodos Couchbase escalando el servicio Docker

  1. Ampliar el servicio: 

  2. Comprueba el servicio:

    Esto muestra que se están ejecutando 2 réplicas del trabajador.
  3. Compruebe la consola web de Couchbase:
    docker-service-couchbase-two-pending-servers
    Como era de esperar, ahora hay dos servidores añadidos en el clúster y pendientes de reequilibrio.
  4. Opcionalmente, puede reequilibrar el clúster haciendo clic en el botón Reequilibrar y se mostrará como:
    docker-service-couchbase-rebalancing
    Una vez completado el reequilibrio, la Consola Web de Couchbase se actualiza como se muestra:
    docker-service-couchbase-rebalanced
  5. Ver todos los contenedores en ejecución mediante docker ps:

Además de crear un clúster, Couchbase Server admite una serie de alta disponibilidad y recuperación en caso de catástrofe (HA/DR). La mayoría de las estrategias de HA/DR
se basan en un enfoque múltiple para maximizar la disponibilidad, aumentar la redundancia dentro de los centros de datos y entre ellos, y realizar copias de seguridad periódicas. Ahora que tu cluster de Couchbase está listo, puedes ejecutar tu primer solicitud de muestra.
Más información sobre Couchbase y contenedores:

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. Hola,
    gracias por la guía y couchbase :)
    Estoy probando esta solución en mi enjambre. Mi objetivo es NO utilizar volúmenes persistentes y estar seguro de que al menos 1 contenedor está preservando los datos para que las otras instancias puedan recuperar sus datos por ellos. Con su solución parece faseable, pero, ¿cómo puedo almacenar la configuración de todos los nodos? Tengo que pasar un fichero ini a cada uno, ¿no? ¿Puedo establecer la contraseña u otra configuración en el arranque mediante variables de entorno?

Dejar una respuesta