introduccion a open stack

Post on 12-Apr-2017

101 Views

Category:

Technology

1 Downloads

Preview:

Click to see full reader

TRANSCRIPT

OpenStack

OpenStack: Sistema Operativo “Cloud” Libre

Kuko Armas <kuko@canarytek.com>

Índice

● Introducción a “Cloud” (muy breve, lo juro)● Nuevas tendencias● Introducción a OpenStack● Algunas funcionalidades de OpenStack

¿Que es exactamente Cloud?(no me atrevo a definirlo)

● Me quedo con la siguiente definición: “Servicios deslocalizados que cumplen las siguientes características”: autoservicio, flexible, pago por uso● Categorías

● SaaS: Software como servicio (ej. gmail, dropbox)● PaaS: Plataforma como servicio (ej. RedHat

Openshift, Azure native apps )● CaaS: Contenedores como servicio (ej. kubernetes)● IaaS: Infraestructura como servicio (Amazon EC2,

OpenStack)● Tipos: Pública, privada, híbrida

IaaS, SaaS, PaaS y otras hierbas

Tendencias tecnológicas

¿Cómo hemos llegado hasta

aquí?

Metodologías Ágiles

● Nueva metodología de desarrollo (y de trabajo)● Estrecha colaboración entre equipos● Se trabaja en iteraciones de corta duración, lo que facilita una respuesta rápida y flexible a los cambios● La publicación frecuente y con menos cambios, minimiza el riesgo en cada versión (de errores, de tiempo perdido en funcionalidades innecesarias, etc)

Infraestructuras Ágiles

● La publicación frecuente requiere la automatización de todo el proceso de publicación● Se requiere infraestructura “ágil”● Por eso los desarrolladores “ágiles” prefieren infraestructuras Cloud

DevOps

● Convergencia entre Desarrollo (Development) y Sistemas (Operations)● Se incluye la infraestructura de producción como parte del ciclo de desarrollo● Fuerza al desarrollador a tener en cuenta el entorno de producción● Requiere infraestructuras “ágiles”

Aplicaciones “Cloud Nativas”

● La facilidad de despliegue de infraestructuras cloud (y sus limitaciones) promueve una nueva forma de hacer las cosas:

● Tolerancia a fallos mediante redundancia de servicios

● Preferencia por servicios sin estado (“stateless”)● Escalabilidad horizontal (ejecutar muchas instancias)

Amazon AWS lo cambió todo

● Las infraestructuras tradicionales no cubrían las necesidades de Amazon● Desarrollaron sus propias infraestructuras para adaptarlas a sus necesidades● Desarrollaron un modelo de negocio vendiendo su “exceso” de capacidad● Infraestructuras sencillas fáciles de gestionar a través de una API● Así nació el concepto de Cloud pública

Contenedores: Docker y otras hierbas

● Es el “sueño” de los DevOps: La aplicación autocontenida con todas sus dependencia, directamente ejecutable en el entorno de producción● Funciona mejor cuando los contenedores son “inmutables” (no contienen nada que cambie)● Ideal para ejecutar servicios “sin estado”

● Eso es trampa! Las aplicaciones necesitan estado!● En realidad, dejan “el marrón” de gestionar el estado

a otros...

La (cruel) comparación

● A las mascotas se les da un nombre● Se les alimenta y trata con cariño● Su pérdida es una tragedia, porque son únicas y de gran valor

● Al ganado de le nombra con números● No se les distingue individualmente● Si se ponen enfermos, se sustituyen por otro

Mascotas vs Ganado

Cloud vs Virtualización “tradicional”● Las soluciones de virtualización tradicional (Vmware, oVirt, etc) se enfocan a la “Alta disponibilidad” de las máquinas virtuales y a la facilidad de gestión● Las soluciones Cloud se enfocan a la flexibilidad, la disponibilidad de infraestructuras a traves de API, y al autoservicio● En virtualización tradicional, la alta disponibilidad se gestiona desde la infraestructura de virtualización● En Cloud, la alta disponibilidad la debe gestionar la aplicación ejecutando múltiples instancias de cada servicio (aplicaciones Cloud nativas)● En resumen: ganado contra mascotas

OpenStack

Conceptos básicos de...

El Proyecto OpenStack

● 139

COUNTRIESCOMPANIES

355

16,847AVERAGE MONTHLY CONTRIBUTORS

INDIVIDUAL MEMBERS

CODE CONTRIBUTIONS

115,206

TOTAL CONTRIBUTORS

2,130AVERAGE MONTHLY

466

El proyecto libre de mayor crecimiento de la historia(si, más que Linux)

La Fundación OpenStack

Platinum

Gold

Oportunidad de Empleo/Negocio

● Supone una GRAN oportunidad de empleo y/o negocio● OpenStack cambiara el mercado, como lo hizo Linux hace 15 años● Se buscan desarrolladores (We are Hiring!)

● Desarrollado en Python● Muchos proyectos relacionados (SDN, NFV, etc)

● Se necesitan desarrolladores con profundos conocimientos en redes, seguridad, etc ● Las empresas utilizaran cada vez más servicios Cloud, OpenStack sera el estándar “de facto”.

Versiones de OpenStack

Bexar Feb 2011

CactusAbr 2011

DiabloSep 2011

GrizzlyAbr 2013

HavanaOct 2013

EssexAbr 2012

FolsomSep 2012

IcehouseAbr 2014

AustinOct 2010

JunoOct 2014

KiloApril 2015

LibertyOct 2015

MitakaApril 2016

NewtonOct 2016

OcataFeb 2017?

Componentes “Core”

Service OpenStack Project Name Amazon Equivalent

Virtual Machines Compute Nova EC2Virtual Block Devices Block Storage Cinder EBS

Object Storage Object Storage Swift S3Virtual Networks Networking Neutron VPC

App Orchestration Orchestration Heat CloudFormationApp Monitoring Telemetry Ceilometer CloudWatchTenant Auth / Namespace

Identity Keystone IAM

Boot Images Image Service Glance AMI

Dashboard Dashboard HorizonManagement

Console

El inicio… (principios de 2010)

NASA NebulaNASA Nebula

RackspaceCloud FilesRackspaceCloud Files

ComputeNetwork

Block Storage

Object Storage

OpenStack Core inicial

NovaNova SwiftSwift

ComputeNetwork

Block Storage

Object Storage

OpenStack Core: Nova

ComputeService(Nova)

ComputeService(Nova)

Compute Service: Nova

● Controlador del servicio de maquinas virtuales● Soporta diferentes hypervisores (KVM, Xen, etc)● Tambien soporta máquinas físicas (bare metal)

● Nova despliega y gestiona “instancias” (ganado, recuerdan?)

● Se definen “sabores” que determinan las caracteristicas (CPU, RAM, etc)

● Las instancias son no persistentes (cloud style!)● La persistencia de datos se consigue usando

“volumenes” del servicio Cinder● Soporta API nativa OpenStack y compatibilidad con la API de Amazon EC2

OpenStack Core: Neutron

ComputeService(Nova)

ComputeService(Nova)

NetworkService

(Neutron)

NetworkService

(Neutron)

Network Service: Neutron

● Inicialmente llamado “Quantum” ● Permite a los usuarios definir y gestionar redes complejas● Soporta redes “planas”, VLANs 802.1q y tuneles VXLAN y GRE● Soporta IP estaticas, DHCP e IP “Flotantes” (públicas) para acceso desde el exterior● Puede gestionar dispositivos de red utilizando plugins

● Incluidos SDN y OpenFlow● Entorno de extensiones para servicios de red (Firewalls, VPN, Balanceadores, etc)

OpenStack Core: Cinder

ComputeService(Nova)

ComputeService(Nova)

NetworkService

(Neutron)

NetworkService

(Neutron)

Block StorageService(Cinder)

Block StorageService(Cinder)

Block Storage: Cinder● Software para ofrecer “almacenamiento de bloques como servicio”● Inicialmente estaba incluido en Nova● Los volumenes de Cinder son persistentes e independientes de las instancias de Nova a las que se conectan

● Las instancias de Nova pueden arrancar desde volumenes Cinder

● Cinder puede usarse independientemente de Nova● Soporta funciones avanzadas: Snapshots, clonado, etc● Soporta numerosos “plugins” que gestionan en almacenamiento

OpenStack Core: Swift

ComputeService(Nova)

ComputeService(Nova)

Object StorageService(Swift)

Object StorageService(Swift)

NetworkService

(Neutron)

NetworkService

(Neutron)

Block StorageService(Cinder)

Block StorageService(Cinder)

Object Storage: Swift

● Proveedor de almacenamiento de objetos (similar a Amazon S3)

● Soporta API nativa y compatibilidad con S3● El único servicio OpenStack en el que el controlador y el proveedor es el mismo● Masivamente escalable y tolerante a fallos

● Por defecto redundancia 3x● Usa hardware barato● No requiere RAID● Replicacion multi-site

● “Eventualmente consistente” (si, ya dije que se hacian trampas)

OpenStack Core

ComputeService(Nova)

ComputeService(Nova)

Object StorageService(Swift)

Object StorageService(Swift)

NetworkService

(Neutron)

NetworkService

(Neutron)

Block StorageService(Cinder)

Block StorageService(Cinder)

Servicios vs Proveedores

ComputeService(Nova)

ComputeService(Nova)

Object StorageService(Swift)

Object StorageService(Swift)

NetworkService

(Neutron)

NetworkService

(Neutron)

Block StorageService(Cinder)

Block StorageService(Cinder)

Driver/Plugins Driver/Plugins Driver/Plugins

NetworkDevicesNetworkDevices

StorageDevicesStorageDevices

Hypervisor(or Bare Metal)

Hypervisor(or Bare Metal)

Servicios y APIs

ComputeService(Nova)

ComputeService(Nova)

Object StorageService(Swift)

Object StorageService(Swift)

NetworkService

(Neutron)

NetworkService

(Neutron)

Block StorageService(Cinder)

Block StorageService(Cinder)

Driver/Plugins Driver/Plugins Driver/Plugins

NetworkDevicesNetworkDevices

StorageDevicesStorageDevices

Hypervisor(or Bare Metal)

Hypervisor(or Bare Metal)

APIs APIs APIs APIs

Control & Data planes

NovaCompute Service

NovaCompute Service

NeutronNetworkService

NeutronNetworkService

CinderStorageService

CinderStorageService

HypervisorHypervisor NetworkNetwork StorageStorage

Services

Control Plane

Data Plane

Drivers / Providers

Data Path

Almacenamiento en Nova

Hypervisor Host

Nova Compute Service

Hypervisor Driver

APIs

APIs

Horizon GUI

VMs

Local Disk

Hypervisor Host

VMs

Non-Persistent or

“Ephemeral” VMs

Configuracion por defecto de Nova

Almacenamiento en Nova

Hypervisor Host

Nova Compute Service

Hypervisor Driver

APIs

APIs

Horizon GUI

VMs

Local Disk

Hypervisor Host

VMs

Non-Persistent or

“Ephemeral” VMs

Cinder Volume Service

Storage Driver

Swift Object Storage Service

HTTP (Control + Data)

APIs

iSCSI

StorageProvider

Almacenamiento Persistente

Almacenamiento en Nova

Hypervisor Host

Nova Compute Service

Hypervisor Driver

APIs

APIs

Horizon GUI

VMs

Local Disk

Hypervisor Host

VMs

Instancia persistente usando“Boot From Volume”

Cinder Volume Service

Storage Driver

Swift Object Storage Service

HTTP (Control + Data)

APIs

iSCSI

StorageProvider

Instancias persistentes

iSCSI

OpenStack Core: Horizon

ComputeService(Nova)

ComputeService(Nova)

Object StorageService(Swift)

Object StorageService(Swift)

NetworkService

(Neutron)

NetworkService

(Neutron)

Block StorageService(Cinder)

Block StorageService(Cinder)

APIs APIs APIs APIs

DashboardHorizon

Web GUI

DashboardHorizon

Web GUI

Dashboard: Horizon

OpenStack Core: Glance

ComputeService(Nova)

ComputeService(Nova)

Object StorageService(Swift)

Object StorageService(Swift)

NetworkService

(Neutron)

NetworkService

(Neutron)

Block StorageService(Cinder)

Block StorageService(Cinder)

Driver/Plugins Driver/Plugins Driver/Plugins

APIs APIs APIs APIs

DashboardWeb GUI

ImageService(Glance)

ImageService(Glance)

APIs

DashboardHorizon

Web GUI

DashboardHorizon

Web GUI

Images: Glance

● Repositorio de imágenes de maquinas virtuales● Pueden ser usadas por usuarios para crear “instancias”

● Pueden ser publicas o privadas● Los usuarios pueden crear nuevas imagenes● Recomendaciones para imagenes creadas:

● Una unica particion para / al final del disco● Mantenerla lo mas pequeña posible● No MACs● Desactivar firewall en el SO● Activar SSH en el arranque● Instalar cloud-init

● Se pueden almacenar en Swift

OpenStack Core: Keystone

ComputeService(Nova)

ComputeService(Nova)

Object StorageService(Swift)

Object StorageService(Swift)

NetworkService

(Neutron)

NetworkService

(Neutron)

Block StorageService(Cinder)

Block StorageService(Cinder)

Driver/Plugins Driver/Plugins Driver/Plugins

APIs APIs APIs APIs

DashboardWeb GUI

ImageService(Glance)

ImageService(Glance)

APIs

IdentityService

(Keystone)

IdentityService

(Keystone)

DashboardHorizon

Web GUI

DashboardHorizon

Web GUI

Identity Service: Keystone

● Provee servicios de identidad, autenticación, autorización y catálogo de servicios a otros servicios de OpenStack● Usa una BBDD propia, pero puede enlazarse a LDAP y otros sistemas de autenticación externos● Soporta federacion de identidades (OpenID, SAML, Oauth)● Modelo de datos:

● Dominio● Usuario● “Tenant” (Proyecto)● Rol

OpenStack Core: Heat

ComputeService(Nova)

ComputeService(Nova)

Object StorageService(Swift)

Object StorageService(Swift)

NetworkService

(Neutron)

NetworkService

(Neutron)

Block StorageService(Cinder)

Block StorageService(Cinder)

Driver/Plugins Driver/Plugins Driver/Plugins

APIs APIs APIs APIs

DashboardWeb GUI

ImageService(Glance)

ImageService(Glance)

APIs

IdentityService

(Keystone)

IdentityService

(Keystone)

OrchestrationService(Heat)

OrchestrationService(Heat)

DashboardHorizon

Web GUI

DashboardHorizon

Web GUI

Orchestration: Heat

● Permite la creación de infraestructuras complejas mediante plantillas de definición

● Soporta el paso de parámetros a las plantillas● El sueño de los DevOps: “Infraestructura como como

código”● La plantillas equivalen a clases y los parámetros a

atributos modificables● Compatible con el formato de plantillas y API de AWS CloudFormation● Permite la creación rápida y reproducible de pilas completas de aplicaciones

OpenStack Core: Ceilometer

ComputeService(Nova)

ComputeService(Nova)

Object StorageService(Swift)

Object StorageService(Swift)

NetworkService

(Neutron)

NetworkService

(Neutron)

Block StorageService(Cinder)

Block StorageService(Cinder)

Driver/Plugins Driver/Plugins Driver/Plugins

APIs APIs APIs APIs

DashboardWeb GUI

ImageService(Glance)

ImageService(Glance)

APIs

IdentityService

(Keystone)

IdentityService

(Keystone)

OrchestrationService(Heat)

OrchestrationService(Heat)

Metering &Monitoring

(Ceilometer)

Metering &Monitoring

(Ceilometer)

DashboardHorizon

Web GUI

DashboardHorizon

Web GUI

Monitoring: Ceilometer

● Provee un servicio unificado de monitorizacion, medición y “contabilidad” de otros servicios de OpenStack● Puede ser utilizado por proveedores para facturar el uso de infraestructuras

Monitoring: Ceilometer

Openstack Core: Misc

ComputeService(Nova)

ComputeService(Nova)

Object StorageService(Swift)

Object StorageService(Swift)

NetworkService

(Neutron)

NetworkService

(Neutron)

Block StorageService(Cinder)

Block StorageService(Cinder)

Driver/Plugins Driver/Plugins Driver/Plugins

APIs APIs APIs APIs

DashboardWeb GUI

ImageService(Glance)

ImageService(Glance)

APIs

IdentityService

(Keystone)

IdentityService

(Keystone)

OrchestrationService(Heat)

OrchestrationService(Heat)

Metering &Monitoring

(Ceilometer)

Metering &Monitoring

(Ceilometer)

DashboardHorizon

Web GUI

DashboardHorizon

Web GUI

BBDDAMQP(Misc)

BBDDAMQP(Misc)

BBDD y AMQP

● Cada servicio OpenStack utiliza una BBDD para almacenar sus datos, por lo que necesitamos un servidor de BBDD central● El controlador de cada servicio se comunica con sus “workers” mediante mensajes AMQP, por lo que necesitamos una infraestructura de “brokers” AMQP● Balanceadores y alta disponibilidad

Arquitectura OpenStack Core

Arquitectura OpenStack Core

Hypervisor

NetworkProvider

StorageProvider

¿Sencillo, no?

Horizon

NeutronCinder

NovaSwift

Glance

Keystone

Demo

Demo de OpenStack

OpenStack de CanaryTek (paciencia...)

● Controller y Neutron: VM en oVirt con 8GB de RAM● 2 Nodos Nova/Cinder: HP MicroServer con 10GB de RAM● 2 redes: “publica” (192.168.100.0/24) y gestión (172.16.11.0/24)● Para empezar a probar: devstack

Interfaz Web: Horizon

Un paseo por el Horizon(te)

Horizon

● Dashboard● Instancias● Volumenes● Imagenes● Seguridad

● Security Groups, claves SSH, IP Flotante, Acceso API● Red

● Topología, Redes, Routers

Crear una Instancia

● Web: no tiene ciencia● Consola

openstack server create --flavor m1.nano --key kuko --image cirros test1openstack server list

● Verificar acceso SSH y red● Borrar instancia

openstack server delete test1openstack server list

● Dejar la maquina creada (la necesitaremos)

openstack server create --flavor m1.nano --key kuko --image cirros test1openstack server list

Asignar volumen a instancia

● Web: no tiene ciencia● Crear volumen

openstack volume create –size 1 volume1openstack volume list

● Asignar a instanciaopenstack server add volume test1 volume1openstack volume list

● Acceder a instancia y verificar que vemos volumen

Snapshots

● Web: no tiene ciencia● Crear snapshot

openstack snapshot create –name snap-volume1 –force volume1# Aclarar el –force??openstack snapshot list

● Crear volumen desde el snapshotopenstack volume create –snaphot snap-volume1 –size 2 volume2openstack volume list

● Tenemos un volumen de 2G creado a partir del snapshot del volumen1 de 1G

Arrancar desde volumen

● Web: no tiene ciencia● Crear volumen a partir de imagen

openstack image listopenstack volume create –-image CentOS7-Cloud –-size 10 vol-vm1openstack volume list

● Crear instancia desde volumen openstack server create –-flavor m1.small –key kuko —volume vol-vm1 test2openstack server list

● Ahora la instancia es persistente

Crear instancia usando cloud-init

● Web: no tiene ciencia● Ver fichero user_data.file● Crear una una imagen pasandole los datos

openstack server list● openstack server create --flavor m1.small --key kuko --image CentOS7-

Cloud –user-data user-data.file test-custom● Acceder a la instancia y verificar

Funcionalidades “Cloud”

¡ Pero eso lo hace cualquiera!

¿donde esta la parte “Cloud”?

Crear red privada y router

● Web: no tiene ciencia● Crear red (dominio de broadcast)

openstack network listopenstack network create network1openstack network list

● Crear subnet (direccionamiento asociado)openstack subnet create –subnet-range 172.16.100.0/24 –network network1 subnet1openstack subnet list

● Crear un routeropenstack router create gw1neutron router-gateway-set gw1 provideropenstack router show gw1

● Conectar a red privada● neutron router-interface-add gw1 subnet1

Crear instancia en red privada● Web: no tiene ciencia● Crear maquina en red privada

openstack network list (ver ID)openstack server create --flavor m1.nano --key kuko --image cirros –nic net-id=$ID test3openstack server create --flavor m1.nano --key kuko --image cirros –nic net-id=$ID test4openstack server list

● Por qué no llego?● “Solicitar” IP flotante

openstack floating ip listopenstack floating ip create provideropenstack floating ip list

● Asignar IP flotante a instancia● openstack server add floating ip test3 192.168.100.203

● Verificar que llegamos a la IP flotante y desde una instancia a la otra

Crear stack completo (Heat)

● Web: no tiene mucho sentido● Revisar plantilla y parametros● Crear stack

openstack stack listopenstack stack create –environment params.yml –template template.yml stack-test1openstack stack list

● Revisar en Web UI● Borrar stack

openstack stack delete stack-test1openstack stack list

● Desaparecen todos los recursos

Funcionalidades “Enterprise”

¿Vale, pero puedo usar esto

para mis “mascotas”?

Migración en caliente

● Web: no tiene ciencia● Solo puede hacerlo un administrador (por motivos evidentes)● Requiere que la instancia tenga el disco de sistema en un volumen Cinder o en almacenamiento compartido● Ver en que hypervisor se esta ejecutando la instancia

openstack server show vm01● Migrar “en caliente”

nova live-migrate vm01 ostack2.canarytek.lan● Verificar que el hypervisor ha cambiado

● openstack server show vm01

(Hay otros métodos “frios” y “tibios”)

Watchdog

● Watchdog “virtual” para que el hypervisor reinicie la instancia se esta “se cuelga”● Ver propiedad watchdog de la imagen CentOS7-Cloud● Crear una instancia basada en esa imagen

openstack server create –flavor m1.small –image CentOS7-Cloud –key kuko –nic net-id=$ID_RED test-watchdog

● Instalar, activar y arrancar watchdog● Hacer ping a la instancia● Provocar kernel panic

echo 0 > /proc/sys/kernel/sysrqecho c > /proc/sysrq-trigger

● Esperar, el ping se recuperara en un rato

Alta disponibilidad de Instancia

(Si preguntabas por esto, te solían contestar mal)

●Manual (o scripts externos)● Evacuate + arranque en otro nodo

● Masakari (Subproyecto)● Especifico para HA de instacias● Reserva nodos fisicos de sustitución

● Vitrage (RCA OpenStack) + Doctor (OpenNFV)● https://www.youtube.com/watch?v=Dvh8q5m9Ahk● Demo IMPRESIONANTE (minuto 8:30)

FIN

Gracias por su atención......si siguen ahí...

Kuko Armas <kuko@canarytek.com>

top related