PDF de programación - Despliegue de una aplicación sobre Docker Swarm

Imágen de pdf Despliegue de una aplicación sobre Docker Swarm

Despliegue de una aplicación sobre Docker Swarmgráfica de visualizaciones

Publicado el 8 de Abril del 2019
674 visualizaciones desde el 8 de Abril del 2019
1,5 MB
22 paginas
Creado hace 2a (16/06/2017)
IES GONZALO NAZARENO

Proyecto Fin de Grado ASIR

Despliegue de una aplicación
sobre Docker Swarm

Alberto Andrades Gil

Proyecto Fin de Grado

Alberto Andrades Gil

Índice de contenido
Objetivo a conseguir.............................................................................................................................3
Porqué Drupal 8 y Docker Swarm........................................................................................................3
Descripción del entorno:.......................................................................................................................4
Descripción de los componentes a usar:...............................................................................................5
GlusterFS.........................................................................................................................................5
Varnish.............................................................................................................................................5
Apache2.4........................................................................................................................................6
PHP 7.0 + FPM................................................................................................................................6
Memcached......................................................................................................................................7
Galera Cluster..................................................................................................................................7
Diagrama de funcionamiento...............................................................................................................8
Preparando Docker para el cluster:.......................................................................................................9
Creación del cluster y agregación de nodos.........................................................................................9
Instalación y configuración de GlusterFS sobre los nodos.................................................................11
Creación de las imágenes de cada microservicio...............................................................................12
Contenido común de cada Dockerfile:...........................................................................................12
Varnish...........................................................................................................................................12
Apache...........................................................................................................................................12
PHP 7.0 + FPM..............................................................................................................................13
Memcached....................................................................................................................................13
Galera Cluster................................................................................................................................13
Proceso de creación de imágenes...................................................................................................13
Despliegue de la aplicación................................................................................................................14
Creación del stack..........................................................................................................................14
Despliegue del stack......................................................................................................................15
Prueba de funcionamiento..................................................................................................................16
Pruebas de alta disponibilidad............................................................................................................19
Prueba de sincronización en la base de datos.....................................................................................20
Enlaces de interés:..............................................................................................................................22

2

Proyecto Fin de Grado

Alberto Andrades Gil

Objetivo a conseguir

El objetivo de este proyecto es desplegar Drupal 8 en alta disponibilidad sobre contenedores Docker
en un cluster Swarm. Esto conlleva mantener un sistema redundante, o también conocidos como
FailOver, a cumplir con cada microservicio.

Porqué Drupal 8 y Docker Swarm

Elegí Drupal 8 al ser un CMS muy completo y adaptable a cualquier tipo de necesidad, ya sea un
modo de negocio o fines educativos.
Me decanté a usar Docker Swarm para este proyecto por ser un entorno desplegable y escalable en
corto tiempo, pudiendo así ya tener imágenes de cada microservicio creadas, y solo tener que
lanzarlas y comenzar a balancear la carga de trabajo contra este nuevo contenedor.
El usar contenedores con cada microservicio me ofrece la ventaja de poder monitorizar cada
servicio, detectar cuando está caído o detectar cuando se recibe una alta demanda de peticiones y
poder escalar el servicio necesario.

Todo esto me motiva al aprendizaje de un despliegue automatizado, la sincronización de diferentes
servicios para hacer funcionar una aplicación completa, y sobre todo el saber mantener un sistema
tolerante a fallos, flexible y adaptable a la carga de trabajo en cada momento.

3

Proyecto Fin de Grado

Alberto Andrades Gil

Descripción del entorno:
Se presentan 3 máquinas virtuales sobre KVM con Debian Stretch como sistema anfitrión y también
como huésped. Todas con 2 cores y 4GiB de RAM, 1 tarjeta de red con acceso a internet y que
permite la conexión entre los 3 nodos.

• MV Manager: 192.168.0.150/24
• MV Worker1: 192.168.0.151/24
• MV Worker2: 192.168.0.152/24

4

Proyecto Fin de Grado

Alberto Andrades Gil

Descripción de los componentes a usar:

GlusterFS

GlusterFS comparte el almacenamiento sobre la red, permitiendo escalar la capacidad o replicar el
almacenamiento en otro nodo y aumentar la velocidad de acceso al sistema.
El almacenamiento a compartir es para Apache2 y PHP7.0, ya que en cada contenedor se necesita el
acceso a los mismos ficheros, ofreciendo así siempre el contenido actualizado, sin retraso por
sincronizaciones. Este espacio se configurará en el nodo Manager, y desde los Workers se accede
para después ser ofrecido a los contenedores.

Varnish

Varnish permite almacenar en memoria caché las peticiones ya servidas, por lo que acelera la
respuesta de la aplicación web. en la memoria o en el disco duro.
Ofrece su servicio estando delante del servidor web, siendo este caso Apache2.

5

Proyecto Fin de Grado

Apache2.4

Alberto Andrades Gil

Apache se encarga de servir principalmente contenido web estático, aunque en este caso, mediante
un proxy fastcgi, se comunica con el procesador PHP 7.0 para servir contenido dinámico.
En Debian Jessie, era necesario instalar el paquete libapache2-mod-fastcgi para conectar
Apache con PHP, en cambio, en Debian Stretch ya no es necesario, se puede utilizar el módulo
proxy_fcgi e indicar si el listener de PHP es mediante un socket del sistema o IP.

PHP 7.0 + FPM

PHP7.0 es la última versión disponible del procesador de código PHP en Debian Strech.
FPM es la versión mejorada de FastCGI, gestionando mejor los procesos y utilizando la memoria
RAM como caché de recursos.
Hoy en día existe un rival bastante duro para este procesador. Se conoce como HHVM (HipHop
Virtual Machine), y es más eficiente que PHP5 y en algunos casos, más que PHP7.0.

6

Proyecto Fin de Grado

Memcached

Alberto Andrades Gil

Memcached ofrece una memoria caché, registrando las peticiones a la base de datos y acelerando
así cualquier procesamiento que requiera lectura de la base de datos, consiguiendo también reducir
la carga a la base de datos.

Galera Cluster

Galera Cluster es un conjunto de gestores de bases de datos MariaDB, sincronizados entre si,
permitiendo estar balanceando carga en modo activo-activo, baja latencia en la sincronización de
registros, sin perdida de transacciones, y escalable para conseguir un mayor número de peticiones.

7

Proyecto Fin de Grado

Alberto Andrades Gil

Diagrama de funcionamiento
El desarrollo de una petición se trataría de la siguiente forma teniendo en cuenta que Docker Swarm
balancea la carga por puertos:

1. Un cliente solicita el portal ofrecido por Drupal 8
2. Docker Swarm recibe la petición y la transmite a un Varnish disponible en el puerto 80
3. Varnish trata la petición y si no está cacheada, la traslada a Apache por el puerto 8080.
4. Apache se comunica con el procesador PHP a través del puerto 9000
5. PHP solicita a Memcached la caché a través del puerto 11211
6. PHP consulta la base de datos Galera al puerto 3306
7. Una vez realizado todo este procedimiento, se responde al cliente con la petición

completamente generada.

8

Proyecto Fin de Grado

Alberto Andrades Gil

Preparando Docker para el cluster:
Para el despliegue de un cluster Swarm necesitamos tener previamente instalado Docker en los tres
nodos del cluster.
La instalación se realizará desde el repositorio de Docker, y para usarlo necesitamos instalar las
siguiente dependencias:

sudo apt install apt-transport-https ca-certificates curl
software-properties-common -y

Añadimos su repositorio y la firma GPG:

curl -fsSL https://download.docker.com/linux/debian/gpg | sudo
apt-key add -

sudo add-apt-repository "deb [arch=amd64]
https://download.docker.com/linux/debian $(lsb_release -cs)
stable"

Actualizamos los repositorios e instalamos docker-ce:

apt update && apt install docker-ce -y

Creación del cluster y agregación de nodos
Una vez instalado docker en los tres nodos, elegimos uno que sea el nodo que gobierne a los otros
nodos:
Sobre el nodo manager:

docker swarm init --advertise-addr
  • Links de descarga
http://lwp-l.com/pdf15687

Comentarios de: Despliegue de una aplicación sobre Docker Swarm (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios
Es necesario revisar y aceptar las políticas de privacidad