Persistencia de datos Couchbase a través de reinicios de contenedores

Buenas prácticas para plataformas virtualizadas proporcionan las mejores prácticas para ejecutar Couchbase en una plataforma virtualizada como Amazon Web Services y Azure.
Además, también proporciona algunas recomendaciones para ejecutarlo como contenedor Docker.

Una de las recomendaciones es mapear los datos específicos del nodo Couchbase a una carpeta local.

Entendámoslo con más detalle.

Almacenamiento implícito por contenedor

Si un contenedor Couchbase se inicia como:

Este contenedor:

  • Se inicia en modo independiente utilizando -d
  • Los distintos puertos de consulta, almacenamiento en caché y administración se asignan mediante -p
  • Se proporciona un nombre utilizando --name
  • La imagen es couchbase/servidor:sandbox

Por defecto, los datos del contenedor se almacenan en un archivo volumen gestionado. Comprobación de los montajes de volumen mediante el docker inspeccionar muestra:

Los datos de Couchbase se almacenan en el sistema de archivos del contenedor definido por el valor de Fuente atributo. Para Docker para Mac o Windows, esto puede verificarse accediendo al sistema de archivos raíz:

En un equipo Linux, esto puede verificarse directamente en el sistema de archivos del host.

Ahora puedes ver el directorio de datos:

Se crea un nuevo directorio para una nueva ejecución del contenedor. Este directorio sigue existiendo cuando el contenedor se detiene y se elimina, pero ya no es fácilmente accesible. Por lo tanto, no se conserva ningún dato al reiniciar el contenedor. El volumen puede ser explícitamente
eliminado, junto con el contenedor, utilizando el comando:

Si el contenedor se cierra, se pierde todo el estado de la aplicación.

Asignación explícita de directorios de host

Ahora, vamos a iniciar un contenedor Couchbase con mapeo explícito de volúmenes:

Este contenedor es muy similar al iniciado anteriormente. La principal diferencia es que un directorio del host ~/couchbase se asigna a un directorio del contenedor /opt/couchbase/var. El contenedor Couchbase persiste
cualquier dato en /opt/couchbase/var en el sistema de archivos del contenedor. Ahora ese directorio es mapeado a un directorio en el sistema de archivos del host. Esto permite mantener el estado del contenedor fuera del sistema de archivos del host. La dirección
evita el sistema de archivos de unión utilizado por Docker y expone el sistema de archivos del host al contenedor. Esto permite que el estado persista a través de los reinicios del contenedor. El nuevo contenedor sólo necesita comenzar con exactamente el mismo mapeo de volúmenes. Más información
sobre el contenedor puede verse como:

jq es un procesador JSON que debe instalarse por separado. Y la salida se muestra como:

Muestra el directorio de origen y de destino. RW muestra que el volumen es de lectura/escritura. Si el contenedor se inicia utilizando Docker para Mac, entonces Consola web de Couchbase es
accesible en http://localhost:8091. El sitio Cubos de datos muestra los valores por defecto viaje-muestra cubo:
docker-volume-couchbase-01

Haga clic en Crear nuevo cubo de datos para crear un nuevo cubo de datos. Dale el nombre muestra:
docker-volume-couchbase-02

En Cubos de datos se actualiza con este cubo recién creado:
docker-volume-couchbase-03

Ahora detente y retira el contenedor:

Inicie de nuevo el contenedor utilizando el mismo comando:

Cubos de datos mostrará los mismos dos buckets en la Consola Web de Couchbase. En este caso, si el contenedor se inicia en un host diferente, el estado no estará disponible. O si el host muere entonces el estado se pierde.

Una alternativa y una forma más robusta e infalible de gestionar la persistencia en contenedores es utilizar un sistema de archivos de red compartido como Ceph, GlusterFS o Sistema de archivos de red.
Otros métodos habituales son Plugins de volumen Docker como Flocker de ClusterHQ o almacenamiento definido por software
como PortWorx. Todas estas técnicas de almacenamiento simplifican la forma de guardar el estado de un contenedor en un entorno multicontenedor multihost. Un futuro blog cubrirá estas técnicas en detalle.

Más información en Gestión de datos en contenedores.

couchbase.com/contenedores proporcionan más detalles sobre cómo ejecutar Couchbase en diferentes marcos de contenedores.

Más información sobre Couchbase:

Comparte este artículo
Recibe actualizaciones del blog de Couchbase en tu bandeja de entrada
Este campo es obligatorio.

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. Para la posteridad, el enfoque anterior no funcionará ya que la dirección IP en el contenedor cambiará al reiniciar.

    Ver:
    https://github.com/couchbase/docker/issues/82
    https://github.com/couchbase/kubernetes/issues/27

Deja un comentario

¿Listo para empezar con Couchbase Capella?

Empezar a construir

Consulte nuestro portal para desarrolladores para explorar NoSQL, buscar recursos y empezar con tutoriales.

Utilizar Capella gratis

Ponte manos a la obra con Couchbase en unos pocos clics. Capella DBaaS es la forma más fácil y rápida de empezar.

Póngase en contacto

¿Quieres saber más sobre las ofertas de Couchbase? Permítanos ayudarle.