Se ha denunciado esta presentación.
Utilizamos tu perfil de LinkedIn y tus datos de actividad para personalizar los anuncios y mostrarte publicidad más relevante. Puedes cambiar tus preferencias de publicidad en cualquier momento.
Despliegue de Aplicaciones
Spring Cloud sobre Cluster
Mesos
Infraestructura
Objetivos
• Capacidad para desplegar y
centralizar múltiples aplicaciones.
• Alta disponibilidad (redundancia).
• Escalabi...
Apache Mesos
• Mesos introduce una capa de
abstracción que permite utilizar los
recursos de un datacenter como si
fuera un...
Infraestructura
Docker
• Cada aplicación desplegada en el
gestor es empaquetada en un
contenedor usando Docker.
• Luego es desplegada a un...
Docker
• Portabilidad: Contenedores pueden correr en
cualquier Linux, laptop, servidor local o en la
nube.
• Consistencia:...
Docker
• Independencia: Usa características
de aislamiento de recursos del
kernel Linux, cada contenedor está
aislado de l...
Docker
• Performance: A diferencia de otros
tipos de virtualización, los
contenedores comparten el mismo
Kernel Linux por ...
Docker
• Modularidad: Cada servicio corre
en su propio contenedor,
ensamblándose aplicaciones
coordinando los servicios qu...
Docker
• Comunidad: Docker Hub el
repositorio oficial de imágenes
Docker contiene casi 100 imágenes
oficiales de diversas ...
Aprovisionamiento
Aprovisionamiento
• La instalación de los paquetes
necesarios para el funcionamiento
del Gestor se encuentra
automatizada ...
Aprovisionamiento
Playbook Master/Slaves
Aprovisionamiento
• Las tareas de configuración no están
completamente automatizadas con
Ansible.
• La guía de instalación...
Administración de Aplicaciones
Marathon
• Es el framework que permite desplegar
las aplicaciones en el cluster Mesos.
• Provee descubrimiento y monitoreo...
Marathon GUI
http://IP_MASTER:8080/
Despliegue
• Descriptor en
formato Json
curl -s -XPOST http://IP-SERVER:8080/v2/apps -d@deploy-descriptor.json -
H "Conten...
Mesos Active Tasks
http://IP_SERVER:5050/ (Puede direccionar dependiendo quien es el nodo líder)
Mesos Tasks
Cada aplicación desplegada es representada como una tarea en Mesos
Marathon
• Marathon trata de mantener estable
el número de instancias indicado en
el descriptor volviendo a desplegar
auto...
Escalabilidad
• Escalabilidad Elástica:
Es posible modificar manualmente
los números de instancias de cada
aplicación para...
Escalabilidad
Logging Centralizado
Logging Centralizado
Logging Centralizado
http://IP_SERVER/index.html#/dashboard/file/logstash.json
Seguimiento de Problemas
• Buscar el texto del error en Kibana
• Ubicar el servidor y el contenedor
donde ocurrió el perca...
Seguimiento de Problemas
Restringir el rango de tiempo, el mensaje de error y el contenedor
Seguimiento de Problemas
Seguimiento de Problemas
Arquitectura de Aplicación
Arquitectura de cada Servicio
Servicios de Infraestructura
Basados en Spring Cloud
Servicios de Infraestructura
• Registro e
identificación de
Aplicaciones
• Configuración
Centralizada
• Gateway
Se configu...
Registro: Eureka
http://ip:8761/
Registro y descubrimiento de servicios
Configuración Centralizada
Servicios de Aplicación
Aplicaciones
• Las aplicaciones (o servicios) están
construidas usando el framework Spring
Boot.
• Este proyecto unifica l...
Aplicaciones
CURL SPRINGSECURITY
SPRINGMVC
JACKSON
SPRINGDATAJPA
HIBERNATE
SPRING FRAMEWORK
TOMCAT 8
SPRING BOOT
ORACLE
DA...
Aplicaciones
• Cada servicio expone una interface REST/Json
para interactuar con el mundo exterior.
• Las representaciones...
Configuración Aplicación
Performance
• Tomcat 8 NIO Connector, Servlet 3.0 Request
Asíncrono para atender mayor cantidad de
conexiones simultaneas....
Entorno de Integración
Integración
• El ambiente de Integración nos permite desplegar los
servicios como contenedores Docker para
asegurarnos que...
Despliegue aplicaciones #SpringCloud en Cluster #Mesos Marathon
Próxima SlideShare
Cargando en…5
×

Despliegue aplicaciones #SpringCloud en Cluster #Mesos Marathon

397 visualizaciones

Publicado el

Una vista panorámica de como usar infraestructura en la nube para reemplazar a los tradicionales servidores de aplicaciones JEE.

Publicado en: Software
  • Sé el primero en comentar

Despliegue aplicaciones #SpringCloud en Cluster #Mesos Marathon

  1. 1. Despliegue de Aplicaciones Spring Cloud sobre Cluster Mesos
  2. 2. Infraestructura
  3. 3. Objetivos • Capacidad para desplegar y centralizar múltiples aplicaciones. • Alta disponibilidad (redundancia). • Escalabilidad. • Facilidad de Administración. • Modelo de Programación Simple.
  4. 4. Apache Mesos • Mesos introduce una capa de abstracción que permite utilizar los recursos de un datacenter como si fuera un único servidor, permitiendo una utilización más eficiente de los recursos computacionales.
  5. 5. Infraestructura
  6. 6. Docker • Cada aplicación desplegada en el gestor es empaquetada en un contenedor usando Docker. • Luego es desplegada a uno o varios nodos usando Mesos.
  7. 7. Docker • Portabilidad: Contenedores pueden correr en cualquier Linux, laptop, servidor local o en la nube. • Consistencia: Las imágenes pueden reusarse durante todo el ciclo de vida de una aplicación. • Los ejecutables son los mismos para todos los entornos (desarrollo, integración, producción) minimizándose los problemas por diferencias.
  8. 8. Docker • Independencia: Usa características de aislamiento de recursos del kernel Linux, cada contenedor está aislado de los demás. • Fallas en una aplicación no comprometen a todo el servidor.
  9. 9. Docker • Performance: A diferencia de otros tipos de virtualización, los contenedores comparten el mismo Kernel Linux por lo que su performance es cercana a un servidor real.
  10. 10. Docker • Modularidad: Cada servicio corre en su propio contenedor, ensamblándose aplicaciones coordinando los servicios que ofrecen los demás contenedores mediante interfaces REST.
  11. 11. Docker • Comunidad: Docker Hub el repositorio oficial de imágenes Docker contiene casi 100 imágenes oficiales de diversas herramientas. • Adicionalmente contiene miles de imágenes no oficiales soportadas por la comunidad.
  12. 12. Aprovisionamiento
  13. 13. Aprovisionamiento • La instalación de los paquetes necesarios para el funcionamiento del Gestor se encuentra automatizada mediante playbooks de Ansible.
  14. 14. Aprovisionamiento
  15. 15. Playbook Master/Slaves
  16. 16. Aprovisionamiento • Las tareas de configuración no están completamente automatizadas con Ansible. • La guía de instalación tiene el detalle de las tareas de configuración de cada nodo. • Se recomienda almacenar las imágenes de nodos master y slaves.
  17. 17. Administración de Aplicaciones
  18. 18. Marathon • Es el framework que permite desplegar las aplicaciones en el cluster Mesos. • Provee descubrimiento y monitoreo de servicios, restricciones de recursos y un GUI para ver los servicios instalados. • Las aplicaciones son desplegadas desde el GUI o usando un API REST que es el procedimiento usado por el Gestor.
  19. 19. Marathon GUI http://IP_MASTER:8080/
  20. 20. Despliegue • Descriptor en formato Json curl -s -XPOST http://IP-SERVER:8080/v2/apps -d@deploy-descriptor.json - H "Content-Type: application/json"
  21. 21. Mesos Active Tasks http://IP_SERVER:5050/ (Puede direccionar dependiendo quien es el nodo líder)
  22. 22. Mesos Tasks Cada aplicación desplegada es representada como una tarea en Mesos
  23. 23. Marathon • Marathon trata de mantener estable el número de instancias indicado en el descriptor volviendo a desplegar automáticamente containers en caso de falla.
  24. 24. Escalabilidad • Escalabilidad Elástica: Es posible modificar manualmente los números de instancias de cada aplicación para manejar picos de carga. • Considerar los constraints en el descriptor para estrategias de escalabilidad.
  25. 25. Escalabilidad
  26. 26. Logging Centralizado
  27. 27. Logging Centralizado
  28. 28. Logging Centralizado http://IP_SERVER/index.html#/dashboard/file/logstash.json
  29. 29. Seguimiento de Problemas • Buscar el texto del error en Kibana • Ubicar el servidor y el contenedor donde ocurrió el percance. • Filtrar los resultados por contenedor y hora de ocurrencia • Si se complica la visualización acceder a los logs completos desde la GUI Mesos.
  30. 30. Seguimiento de Problemas Restringir el rango de tiempo, el mensaje de error y el contenedor
  31. 31. Seguimiento de Problemas
  32. 32. Seguimiento de Problemas
  33. 33. Arquitectura de Aplicación
  34. 34. Arquitectura de cada Servicio
  35. 35. Servicios de Infraestructura Basados en Spring Cloud
  36. 36. Servicios de Infraestructura • Registro e identificación de Aplicaciones • Configuración Centralizada • Gateway Se configura la ubicación de los servicios mediante variables de entorno
  37. 37. Registro: Eureka http://ip:8761/ Registro y descubrimiento de servicios
  38. 38. Configuración Centralizada
  39. 39. Servicios de Aplicación
  40. 40. Aplicaciones • Las aplicaciones (o servicios) están construidas usando el framework Spring Boot. • Este proyecto unifica los mejores componentes del framework Spring y su ecosistema, minimizando la configuración necesaria y con características listas para ser usadas en producción.
  41. 41. Aplicaciones CURL SPRINGSECURITY SPRINGMVC JACKSON SPRINGDATAJPA HIBERNATE SPRING FRAMEWORK TOMCAT 8 SPRING BOOT ORACLE DATABASE
  42. 42. Aplicaciones • Cada servicio expone una interface REST/Json para interactuar con el mundo exterior. • Las representaciones Json son convertidas a objetos de aplicación usando Jackson. • Los objetos se persisten en la base de datos vía Spring Data • Cada servicio tiene su propio servidor Tomcat 8 embebido.
  43. 43. Configuración Aplicación
  44. 44. Performance • Tomcat 8 NIO Connector, Servlet 3.0 Request Asíncrono para atender mayor cantidad de conexiones simultaneas. • .
  45. 45. Entorno de Integración
  46. 46. Integración • El ambiente de Integración nos permite desplegar los servicios como contenedores Docker para asegurarnos que se ejecutan correctamente antes del pase a producción. • Las imágenes usadas en integración luego de la validación funcional serán desplegadas a producción. • El despliegue consiste en obtener la imagen generada desde el repositorio y ejecutar la misma usando comandos Docker.

×