From On Premise to Full Architectures On Openstack (spanish version)

Preview:

DESCRIPTION

Presentation made for the OpenStack Day Mexico 2014. Focused on describing how to get from hosting and vps world to full architectures using Heat Project.

Citation preview

From on-premise to full architectures on Openstack

Guillermo Alvarado - @galvarado89Francisco J. Araya - @fjaraya

Temario

•VPS•Cloud Servers•Las diferencias•Arquitectura•Automatización•OpenStack Heat•Plantillas•Caso de Uso•Demo

Un viaje al pasado...

Los VPS / On-Premise

VPS

•“VPS” Virtual Private Server

•Es un servidor común, pero con sus recursos virtualizados.

•Modelo de entrega de infraestructura como servicio. IaaS.

Escalando recursos...

Cloud Servers

Cloud servers

•Realmente es una evolución a una estructura de nube integrada.

•En minutos, podemos añadir balanceadores de carga, bases de datos, almacenamiento, monitoreo y DNS como servicios adicionales

Cloud servers

•Podemos escalar recursos hacia arriba o hacia abajo en cualquier momento

•Cuenta con una herramienta de gestión de los recursos

•Modelo de servicio “Pay as you go” otorgando mayor flexibilidad

Entonces a ¿A donde vamos?

Diferencias entre VPS y Cloud server

Diferencias

•Un servidor cloud es tolerante a fallos de hardware, un VPS no. Es decir, puede cambiar de Host.

•Gracias al dinamísmo del cloud server, se pueden generar estrategias de Alta disponibilidad

Diferencias

•Podemos explotar los beneficios de un SDN: Redes virtuales, vSwitches y vRouters, etc.

La evolución...

Arquitecturas

Arquitecturas

Las Arquitecturas Cloud son los diseños y desarrollo de arquitecturas de software que hacen un uso eficiente de los servicios en cloud.

Arquitecturas

Las Características de una arquitectura Cloud:

•Ejecutan de forma óptima las tareas para cubrir una necesidad de negocio.

•Sólo hacen uso de la infraestructura de computación que es necesaria en cada momento.

•Escalan basándose en la demanda, asignando y realizando el aprovisionamiento y destrucción de servidores según sea necesario de manera automática

Arquitecturas

Arquitecturas

Las aplicaciones soportadas en una arquitectura cloud, necesitan:

•Desplegar detrás de un Firewall, sin internet.•Escalar recursos hacia arriba o hacia abajo.•Realizar flujos con las apps (MySQL, Django, etc)•Manejar las redes virtuales entre los servidores•Dar de baja o aumentar el número de servidores•Realizar y restaurar backups•Gestionar el DNS

El problema? Son tareas concurrentes, repetitivas.

Dejemos de perder el tiempo,

Automaticemos

Arquitecturas

Resolvamos esto mediante un enfoque DevOps: definiendo hooks para gatillar tareas automatizadas como:

•Aprovisionamiento de una nueva instancia•Instalación del software necesario•¿Cuando escalo mis recursos?•¿En que momento agrego más servidores?•Política de restauración de Backups•Modificación de los records DNS•Ampliar el pool del Load Balancer

Es el OpenStack Day, no?

OpenStack Heat

Heat

Heat es un servicio para orquestar múltiples aplicaciones sobre Openstack, es decir, provee un mecanismo para manejar el ciclo de vida de las aplicaciones y la infraestructura Cloud.

Ofrece a desarrolladores y administradores de sistemas un método sencillo de crear un stack de recursos de Openstack relacionados entre sí para ofrecerlos de una manera ordenada y predecible.

Heat

Openstack por filosofía es interoperable, por esta razón Heat es compatible con el formato de la plantilla de Amazon Web Services, CloudFormation.

Heat

Las plantillas permiten la creación de la mayoría de los tipos de recursos de OpenStack:

•IPs flotantes•Instancias de computo•Redes Virtuales•Volúmenes de almacenamiento•Grupo de seguridad/Firewall•Usuarios

Así como funciones más avanzadas como alta disponibilidad, autoscaling, configuraciones de servicios third party, etc.

Heat

Además Heat permite describir cualquier dependencia o parámetro especial para transmitirlo en el tiempo de ejecución, habilitandonos a trabajar con distintas aplicaciones como:

•WordPress•Django •RoR•MySQL•GIT•Nginx•Etc

¿Y cómo se hace?

Plantillas Heat

Plantillas

Las plantillas son sencillos archivos de texto con formato YAML, son un documento que detalla la orquestación de todo lo que se necesita para llevar a cabo un stack.

Heat Orchestration Template (HOT), es el lenguaje para escribir una plantilla de Heat.

Plantillas

# Definitions of components used (similar to Juju charm syntax)

components:

- &wordpress_reference_id

id: wordpress

revision: 3

summary: "A popular blog engine"

provides:

url:

interface: http

requires:

db:

interface: mysql

server:

relation: host

interface: linux

options:

url:

type: String

default: wp.test.local

description: the url to use to host your blog on

- &mysql.1

id: mysql

revision: 1

summary: "A popular database. Note, this is a cloud database and therefore does not need a host"

provides:

db: mysql

Plantillas

¿Que dice la plantilla?

•En una plantilla se describe la infraestructura para una aplicación cloud.

•Los recursos de infraestructura que pueden ser descritos incluyen: servidores, ips flotantes , volúmenes, grupos de seguridad , usuarios, etc.

•Las plantillas también pueden especificar las relaciones entre los recursos, por ejemplo, este volumen está conectado a este servidor

Plantillas

¿Como funciona?

•El motor de Heat genera los datos que serán consumidos por cloud-init

•Heat se comunica con Nova para crear la instancia

•Nova selecciona un servidor compute donde ejecutar la instancia

•Cuando la instancia bootea, se ejecutan las tareas de redimensionar el filesystem, setear el hostname, instalar la llave SSH del usuario, etc.

Plantillas

¿Como funciona?

•Posteriormente, se ejecuta el resto del script de la plantilla para instalar paquetes, crear archivos, gestionar el filesystem, etc.

•Heat se comunica con Cinder para aproviosionar Volúmenes de almacenamiento en caso de ser necesarios

•Heat guarda los logs de las actividades en: /var/log/part-handler.log y /var/log/heat-provision.log

Plantillas

Además

•Heat gestiona todo el ciclo de vida de la aplicación cuando se necesita cambiar la infraestructura, simplemente se modifica la plantilla, y se aplica al stack existente. Heat sabe cómo hacer los cambios necesarios.

•De la misma manera, heat eliminará todos los recursos extra cuando haya terminado con la solicitud

Plantillas

Además

•Las plantillas se integran con herramientas de gestión de configuración de software como de Puppet y chef

Caso de Uso

Heat para Wordpress y MySQL

Caso de uso

Caso de uso

1.Creación de red virtual para comunicación privada2.Creación de Router virtual, para salida a Internet3.Enlazamiento de red privada a Gateway público4.Creación de servidor para Wordpress5.Creación de servidor para MySQL6.Comunicación entre servidores a través de interfaz privada7.Instalación de Wordpress8.Instalación de MySQL9.Configuración de MySQL (Usuarios y permisos)10.Configuración de Wordpress11.Asignación de IP Pública a servidor Wordpress

La curiosidad me mata, ¡Quiero ver!

Demo

Dudas, comentarios y sugerencias

@galvarado89@fjaraya

Recommended