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.
4. VPS
•“VPS” Virtual Private Server
•Es un servidor común, pero con
sus recursos virtualizados.
•Modelo de entrega de
infraestructura como servicio.
IaaS.
6. 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
7. 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
8. Entonces a ¿A donde vamos?
Diferencias entre VPS y
Cloud server
9. 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
12. Arquitecturas
Las Arquitecturas Cloud son los diseños y desarrollo de
arquitecturas de software que hacen un uso eficiente de los
servicios en cloud.
13. 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
15. 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.
17. 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
19. 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.
20. 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.
21. 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.
22. 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
24. 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.
25. 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
26. 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
27. 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.
28. 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
29. 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
33. Caso de uso
1.Creación de red virtual para comunicación privada
2.Creación de Router virtual, para salida a Internet
3.Enlazamiento de red privada a Gateway público
4.Creación de servidor para Wordpress
5.Creación de servidor para MySQL
6.Comunicación entre servidores a través de interfaz
privada
7.Instalación de Wordpress
8.Instalación de MySQL
9.Configuración de MySQL (Usuarios y permisos)
10.Configuración de Wordpress
11.Asignación de IP Pública a servidor Wordpress