Infraestructura en la nube con OpenStack

Alberto Molina Coballes y José Domingo Muñoz Rodríguez

II Semana Informática. Universidad de Almería. 17 Febrero 2015

Theme by: reveal.js

Sobre nosotros

Infraestructura: Evolución

¿A qué llamamos infraestructura?

Equipos para procesamiento, conexión y almacenamiento de datos

Evolución

  1. Equipos físicos
  2. Máquinas virtuales
  3. Infraestructura en la nube

Infraestructura tradicional

  • Adquisición de equipos
  • Montaje físico
  • Instalación y configuración "manual"
  • Conexión a través de redes físicas
  • Gestión del almacenamiento NAS o SAN
  • Estática: Mismas configuraciones durante años
  • Usuarios sin acceso directo

Virtualización de máquinas

  • Dentro de un solo equipo físico se ejecutan varias MVs
  • El sw para la gestión de MVs se denomina hipervisor
  • Se conectan las MVs entre sí en redes virtuales
  • Sin cambios relevantes en almacenamiento
  • Gestión similar a la infraestructura tradicional

Infraestructura en nube

  • Virtualización de máquinas
  • Virtualización de la red
  • Virtualización del almacenamiento
  • Agrupamiento de los recursos
  • Dinámica
  • Configuración automática
  • El usuario sí puede gestionar su infraestructura
esquema IaaS

Cloud Computing

Cloud Computing. Características

  • Servicio disponible de forma automática y a demanda
  • Accesible a través de la red
  • Modelo multi-tenancy
    • Se comparten los recursos con otros usuarios
    • Debe garantizarse aislamiento y seguridad entre usuarios
  • Los recursos se agrupan en pools
  • Elasticidad
  • Pago por uso

The NIST Definition of Cloud Computing

... as a Service (...aaS)

  • Modelo de negocio no basado en la venta de licencias o hardware
  • Oferta de servicios con caracterísicas de cloud
  • Habitualmente se definen tres capas o niveles: SaaS, PaaS e IaaS

Software as a Service (SaaS)

Aplicación como servicio en la nube

  • El usuario utiliza una aplicación a través de la web en lugar de tenerla instalada en el propio equipo. Aviso: No todas las aplicaciones web son SaaS, deben cumplir con las características.
  • Utilizado por cualquier usuario
  • Ya lo usamos, pero se prevé que se use cada vez más
  • Ejemplos: Servicios de Google, Office365

Platform as a Service (PaaS)

Plataforma de desarrollo web en la nube

  • Utilizado por desarrolladores de software
  • Se proporciona toda la plataforma de desarrollo y despliegue de una aplicación al desarrollador
  • Ejemplos: Google App Engine, Windows Azure, Heroku, Openshift, CloudFoundry

Infrastructure as a Service (IaaS)

Infraestructura como servicio en la nube

  • Utilizado principalmente por administradores de sistemas
  • Se proporciona principalmente capacidad de cómputo, redes y diversos modos de almacenamiento
  • Ejemplos: Amazon Web Services, Google Compute Engine
iaas-paas-saas

Kevin Remde: SaaS, PaaS, and IaaS.. Oh my!

Tipos de despliegues

  • Público Una empresa ofrece servicios a terceros, encargándose de toda la gestión del Cloud.
  • Privado Una organización configura sus propios recursos de forma mucho más flexible en una nube. En inglés también se denomina "On premise cloud"
  • Híbrido Se utilizan recursos de la nube privada o de una o varias nubes públicas en función de las características de cada caso o las necesidades puntuales que haya. Normalmente utilizan una API común que permita una buena integración.

Cloud privado

  • Los clouds públicos están bien, pero tienen algunos aspectos negativos:
    • Privacidad
    • Seguridad
    • Vendor lock-in
    • Control sobre los datos
    • Personalización
    • ¿Rendimiento?
    • ¿Costes?
  • Un cloud privado o híbrido es una opción a tener en cuenta si estos aspectos importan

IaaS

  • Proveedores de cloud público IaaS: AWS, GCE y Azure. ¿Hay sitio para alguien más?
  • Cloud Privado: VMware y plataformas de Software Libre, principalmente OpenStack
  • IaaS es muy adecuada para servicios con demanda variable como el web:
Munin web

Ejemplo de servicio en IaaS público

Servicio web de vídeo bajo demanda

Problema: Requitos de hardware muy variables con grandes picos y valles

Alto coste en infraestructura tradicional

Solución: Clúster con un número de nodos variable en el tiempo y que se ajuste a la demanda

  • Se incluyen balanceadores para repartir la carga
  • Se crean de forma automática nuevos servidores cuando se precisa
  • Cuando baja la demanda, se eliminan los servidores que sobren.

OpenStack

“Plataforma de cloud computing hecha con software libre para desplegar nubes públicas y privadas, desarrollada con la idea de ser sencilla de implementar, masivamente escalable y con muchas prestaciones”

openstack-diagram

¿Por qué OpenStack?

  • Porque queremos instalar nuestro propio software para proporcionar IaaS
  • Porque es software libre
  • Porque es un proyecto estable, con muchos apoyos y muy buenas perspectivas de futuro
  • Porque tiene muchas funcionalidades
  • Porque podemos utilizar hardware convencional
  • Porque es fácil de instalar (ejem!)

Otras alternativas

  • OpenNebula, CloudStack y Eucalyptus
    • Software libre
    • Más compatibles con AWS
    • Probablemente más sencillas de instalar
    • Algunos componentes más maduros
    • Proyectos más pequeños (ventajas e inconvenientes)
  • VMware Vcloud
    • Software privativo
    • Optimizado para vSphere
    • No compite en IaaS pública
    • Acaba de publicarse VIO

Inicios de OpenStack

rackspace
  • Cloud propio desde 2005
    • Cloud servers (IaaS)
    • Cloud files (StaaS)
  • Cambia a licencia libre en Abril 2010
nasa
  • Comienza a utilizar Eucalyptus, pero lo deja por ser ''open core''
  • Crea el software para IaaS Nebula
  • Cambia a licencia libre en Mayo 2010
openstack
  • Ambas lo inician en Junio de 2010
  • OpenStack Nova ⇦ Nebula
  • OpenStack Swift ⇦ Cloud Files

Versiones de OpenStack

Proyecto nuevo con un fuerte ritmo de desarrollo:

Versión Fecha Versión Fecha
Austin Oct 2010 Bexar Feb 2011
Cactus Abr 2011 Diablo Sep 2011
Essex Abr 2012 Folsom Sep 2012
Grizzly Abr 2013 Havana Oct 2013
Icehouse Abr 2014 Juno Oct 2014

Bitergia - The OpenStack Juno release: activity and organizations

Principios fundacionales

En Septiembre de 2012 se cede el control del proyecto a la OpenStack Foundation

OpenStack Foundation

openstack_industry_support

Cloudscaling: State of the Stack
Empresas partipantes en la OpenStack Foundation

Componentes de OpenStack

openstack components

Randy Bias - 'Vanilla OpenStack' Doesn’t Exist and Never Will

Demostración OpenStack

Conceptos previos (I)

  • Imagen: Imagen de sistema operativo preconfigurado que se utiliza como base para crear instancias. Dentro del cloud habrá diferentes imágenes para cada tipo de instacia que se quiera utilizar.
  • Instancia: Instancia de una imagen que se crea a demanda del usuario en uno de los nodos del cloud.
  • Sabor: Define para una instancia el número de CPUs virtuales, la RAM, si dispone o no de discos efímeros, etc.

Conceptos previos (II)

  • IP fija: Direccion IP con la que se crean una instancia en una red y que se utiliza para comunicacion interna. La dirección IP fija no cambia durante la vida de la instancia.
  • IP flotante: Direccion IP asociada a una instancia en un momento dado para poder acceder a ella desde fuera. Una IP flotante puede asignarse a otra instancia diferente cuando se estime oportuno.
  • Grupo de seguridad: Reglas de cortafuegos que controlan el acceso a las instancias.
  • Par de claves ssh: Par de claves RSA pública/privada utilizadas para acceder por ssh a las instancias desde fuera del cloud.

Conceptos previos (III)

Implicaciones del uso de IaaS:

Evolución de las aplicaciones

Aplicaciones "clásicas"

  • Pueden ejecutarse en cualquier tipo de Infraestructura
  • No tolerantes a fallos
  • Deben funcionar sobre hardware de altas prestaciones
  • La redundancia la debe proporcionar la capa inferior
  • Alta disponibilidad
  • Típicamente escalan verticalmente (scale up)
  • Funcionan sobre máquinas de vida larga (virtuales o no)

Aplicaciones nativas cloud

  • Aprovechan toda la funcionalidad de IaaS
  • Tolerantes a fallos (resiliencia)
  • Normalmente funcionan sobre máquinas de vida corta
  • Hardware convencional
  • Escalan horizontalmente (scale out)
  • Elásticas
  • Aplicaciones inteligentes
  • Balanceadores de carga
  • Automatización, agilismo, ...

Keith Basil - Introduction and Overview of OpenStack for IaaS

Randy Bias - Pets vs. Cattle: The Elastic Cloud Story

Implicaciones del uso de IaaS:

¿Por dónde empiezo?

Soy (quiero ser) desarrollador

  • PaaS público
  • IaaS público o privado
  • Almacenamiento de objetos
  • APIs RESTful
  • Otras herramientas: vagrant, git, ansible, puppet, ...

Soy (quiero ser) administrador

  • IaaS público: AWS
  • IaaS privado: OpenStack
  • Docker
  • Infrastructure as Code:
    • Gestión de la configuración: ansible, puppet, chef
    • Control de versiones: git
    • Entornos de pruebas
    • Integración continua
    • APIs RESTful
    • AMQP
    • Vagrant

¡Gracias!


Alberto Molina Coballes

alb.molina@gmail.com // @alberto_molina


José Domingo Muñoz Rodríguez

josedom24@gmail.com // @pledin_jd