Jugando con contenedores: Parte 2 – Docker volumes con ONTAP

Continuando con el post anterior vamos a ver cómo integrar nuestro contenedores con un sistema de almacenamiento NetApp.

 

Lo primero que necesitamos es una instancia de Docker funcionando, en mi caso sobre un Fedora Linux, y un sistema de almacenamiento que utilice ONTAP como sistema operativo. Para esto podemos contar con una cabina FAS de las de toda la vida, con un sistema All-Flash AFF, con una instancia de almacenamiento definido por software como ONTAP Select, este mismo servicio en la nube de Amazon o Azure, o un simulador para desarrollo que corre en un portátil con VMware.  Y aquí tenemos la primera ventaja, podemos dar servicios avanzados de almacenamiento a los Docker que tengamos en prácticamente cualquier sitio.

 

Dentro de ONTAP los servicios de almacenamiento se virtualizan en lo que llamamos SVMs (Storage Virtual Machine), y en este caso vamos a dedicar una SVM entera al servicio de datos de Docker. Esto me va a permitir delegar parte de la gestión de su almacenamiento al usuario de Docker, de forma que el administrador de la cabina pueda olvidarse de lo que esté pasando ahí dentro.

 

Usuarios y permisos aparte, lo que importa es que vamos a tener una SVM contra la que lanzar llamadas a la API y un plugin para Docker que le va a decir cómo crear y gestionar volúmenes Docker sobre un almacenamiento externo. No son necesarios elementos externos … el diagrama queda así:

 

DockerDiag2.JPG

 

El plugin se llama NDVP (NetApp Docker Volume Plugin) y lo puedes descargar de githup. Aquí también tienes la guía de instalación, que no voy a copiar, y que se resume en unos pocos comandos y en editar un fichero de configuración como este:

 

docker21.JPG

 

 

Una vez configurado crear un volumen es muy sencillo, ya sea con los valores por defecto o añadiendo alguna de las opciones:

 

Docker22.JPG

 

La primera pregunta es saber qué ha hecho esto sobre mi sistema de almacenamiento. Pues bien, cada volumen de Docker que creemos es un volumen de ONTAP dentro de la SVM sobre la que está trabajando el plugin de Docker, por lo que en este caso podemos ver la siguiente configuración realizada sobre la cabina:

 

docker23.jpg

 

Además ha montado estos volúmenes y los ha exportado de acuerdo a las “export policies” de NFS indicada o por defecto … con la “policy” definimos los permisos y hosts que tendrán acceso.

 

Sencillo, ¿verdad?

 

Para usar uno de estos volúmenes le indicamos al contenedor que utilice este volumen, cuya información puede ser accedida y modificada por varios contenedores de forma simultánea, y que es persistente ante la caída o apagado de los contenedores. Ahí va un ejemplo con servidor web:

 

docker33.jpg

 

Como argumentos al ejecutar el contenedor hay que especificar el driver de almacenamiento que utilizamos, el nombre del volumen que hemos creado previamente, y el punto de montaje del mismo dentro del entorno de ejecución del contenedor.

 

Como se puede ver, en este caso estamos dejando el contenido del servidor web disponible para ese contenedor y todos los demás que arranquen montando ese volumen. De hecho podemos lanzar tantos contenedores de esta aplicación como queramos, en este ejemplo cambiando el puerto TCP en el que escuchan:

 

docker24.JPG

 

Y todo ellos van a acceder a una misma copia de los ficheros del servidor web, que gestionaremos y protegeremos de forma externa a los contenedores, ya que este punto de montaje puede ser accedido desde cualquier otro servidor Linux que tenga permisos.

 

Como decíamos en el post anterior esto nos permite separar de forma muy eficiente las aplicaciones, sus binarios, sus versiones, etc., y los datos que generan o utilizan las mismas.

 

Utilizando un servicio de ficheros eficiente y flexible como el de ONTAP, podemos contar con muchas ventajas, como redimensionar el Docker volumen en caliente, tanto para ampliarlo o reducirlo:

 

docker25.JPG

 

El rendimiento puede variar desde lo que proporcionar un simulador o versión software pequeña, hasta millones de iops sobre disco de estado sólido y un cluster de equipos FAS o AFF.

 

Entre las funcionalidades tenemos la capacidad de hacer copias instantáneas con Snapshots, clonados que no consumen espacio y se hacen en un segundo, independientemente de la cantidad de datos “copiados”, deduplicación y compresión de la información, replicación y protección ante desastres, etc.

 

Hacer un clon de un volumen de un tamaño arbitrario y con miles o millones de ficheros es una operación tan sencilla como esta para el administrador de docker:

 

docker27.JPG

 

En definitiva, con la integración entre Docker y ONTAP, proporcionamos a los entornos de contenedores y sus desarrolladores la potencia y gestión de datos avanzada de un sistema de almacenamiento de primer nivel, mejorando la escalabilidad y fiabilidad de este tipo de entornos.

 

Saludos,

 

Jamarmu

 

Comments
Member

Hoy hemos anunciado que el plugin de NetApp está disponible en Docker Store, pare poder descargarlo directamente y sin coste.

 

Esto solo cambia el proceso de instalación, que pasa a ser tan sencillo como:

 

# docker plugin install store/netapp/ndvp-plugin:1.4.0 --alias netapp --grant-all-permissions

 

El resto de la integración sigue igual.

 

Por otro lado, con este paso hemos entrado dentro del "Docker Certification Program", para asegurar que todo interactua correctamente.

 

Happy containers :-)