Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Despliegue aplicaciones #SpringCloud en Cluster #Mesos Marathon

402 views

Published on

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

Published in: Software
  • Be the first to comment

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.

×