Añadir a la práctica: almacenamiento de objetos
Almacenamiento de objetos
Para terminar, vamos a usar el almacenamiento de objetos de la nube del instituto (OpenStack Swift) para guardar los contenidos estáticos (imágenes y hojas de estilo) de la aplicación balanceada app.tunombre.org. Las páginas las seguirán sirviendo backend1 y backend2, pero el navegador pedirá las imágenes y la hoja de estilo directamente a Swift por HTTP, sin pasar por el proxy inverso ni por el balanceador.
Puedes repasar cómo se trabaja con Swift en el Ejercicio 2: Almacenamiento de objetos con OpenStack Swift.
Contenedor y objetos
- Crea en Swift un contenedor llamado
app-tunombrecon el clienteopenstack. - Sube al contenedor, con
curl(peticionesPUTa la API), la hoja de estilo de la aplicación y al menos dos imágenes (por ejemplo, un logo y una imagen de fondo). Guarda la hoja de estilo con el nombrecss/estilo.cssy las imágenes con nombres que empiecen porimg/. - Añade a la hoja de estilo un metadato propio
X-Object-Meta-Autorcon tu nombre. - Haz público el contenedor con
curl, asignándole una ACL de lectura. - Comprueba sin token que puedes descargar los objetos y que no puedes listar el contenido del contenedor.
La aplicación usa Swift
- Modifica la aplicación PHP de los dos backends para que la hoja de estilo y las imágenes se carguen desde Swift, usando la URL de cada objeto (
https://openstack.gonzalonazareno.org/swift/v1/AUTH_<proyecto>/app-tunombre/...). Borra de los backends las copias locales de esos ficheros. - Accede a
app.tunombre.orgy comprueba con las herramientas para desarrolladores del navegador (pestaña Red) a qué servidor se hace cada petición.
Pregunta: Cuando accedes a app.tunombre.org, ¿qué peticiones atiende tu escenario (proxy inverso, balanceador y backends) y cuáles atiende Swift? ¿Qué ventajas tiene esto? Para que los dos backends sirvan las mismas imágenes también podríamos haberlas guardado en el directorio compartido por NFS: ¿qué diferencias hay entre las dos soluciones? Piensa en quién accede al almacenamiento, con qué protocolo y desde dónde.
Pregunta: Los PDF de nas.tunombre.org/documentos están protegidos con autenticación básica. ¿Sería buena idea guardarlos en el contenedor público de Swift y enlazarlos desde la página? ¿Por qué?