Implantación de OpenStack. Ejemplo paso a paso

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

Theme by: reveal.js

Aviso

  • A continuación se presenta un ejemplo muy simplificado de implantación de OpenStack
  • Una implantación real conlleva un estudio mucho más exhaustivo del problema a solucionar y de todos los elementos implicados, tanto de hardware como de software
  • Vamos a obviar todos los aspectos relativos a los dispositivos de red

Caso tipo

  • Nube privada
  • Varios proyectos y usuarios independientes
  • Capacidad inicial máxima estimada:
    • 200 máquinas con 4 GiB RAM, 2 vCPU y 20 GiB HD
    • Consumo CPU intermedio
    • Hasta 10 TiB de almacenamiento adicional (discos)
    • Hasta 10 TiB de almacenamiento de objetos
  • Virtualización de redes
  • ¿Alta disponibilidad?
  • Sistema escalable
esquema IaaS

Componentes de OpenStack necesarios

  • Keystone
  • Glance
  • Nova
  • Cinder
  • Horizon
  • Neutron

Componentes de OpenStack opcionales

  • Swift: No es imprescindible si utilizamos Ceph, que también puede proporcionar almacanamiento de objetos
  • Ceilometer y Heat
  • Trove
  • Sahara
  • Magnum
  • Designate
  • ...
  • En general no repercuten en la arquitectura, salvo swift

Otros componentes necesarios

  • Servidor AMQP: RabbitMQ o QPID
  • BBDD:
    • MySQL o "derivadas":
      • MySQL o MySQL cluster (HA)
      • Galera
      • MariaDB
    • PostgreSQL
    • SQlite (Sólo pruebas)
    • Cualquira soportada por SQLAlchemy

Tecnologías subyacentes

  • Hipervisor: KVM
  • Almacenamiento. Opción 1:
    • Almacenamiento de bloques: LVM + iSCSI
    • Almacenamiento de objetos: Swift
  • Almacenamiento. Opción 2:
    • Almacenamiento de bloques: Ceph RBD
    • Almacenamiento de objetos: Ceph RadosGW
  • Switch virtual: Open vSwitch

Tipos de nodos

Los roles típicos dentro de OpenStack son:

  • Nodo controlador: Equipo que gestiona el cloud, ofrece las APIs a los clientes, contiene las bases de datos, el servidor AMQP, los planificadores y los componentes "centrales" de cada componente de OpenStack.
  • Nodo de red: Con neutron es recomendable utilizar un equipo específico para todo el tráfico de red
  • Nodo de computación Equipo en el que se ejecutan las instancias
  • Nodo de almacenamiento Múltiples opciones. Almacenamiento de volúmenes y/o objetos.

Características físicas de los nodos

  • Nodo controlador:Servidor convencional sin grandes requisitos. Podría reutilizarse un equipo que ya se tuviera.
  • Nodo de red:Servidor de características similares al nodo controlador. Mínimo con 2 interfaces de red Gigabit Ethernet.
  • Nodo de almacenamiento: Dependiendo de la opción de almacenamiento así serán los discos adicionales
  • Nodo de computación:Equipo de altas prestaciones con procesadores potentes y bastante RAM. Los discos a utilizar depende de si las instancias utilizan o no disco local.

Esquemas

Con alta disponibilidad

Fuente: OpenStack Operations Guide

Sin alta disponibilidad

Sobre la Alta disponibilidad

  • Un despliegue de OpenStack sin SPOF es bastante complejo
  • Se puede conseguir algunos servicios en HA de forma sencilla:
    • MySQL con Galera
    • AMQP
    • APIs balanceadas con HA-proxy
  • Swift o Ceph
  • Los nodos de computación no se montan en HA
OpenStack High Availability Guide

Componentes de OpenStack. Detalle

Keystone (Identity Service)

  • Proyectos, usuarios, roles, etc.
  • Implementa RBAC (Role Based Access Control)
  • Autenticación por tokens
  • Gestión de los Endpoints
  • Backend: SQL o LDAP
  • ¿PKI?
  • ¿http o https?

Glance (Image Service)

  • Gestión de imágenes e instantáneas
  • Formato qcow2 ← KVM
  • Se pueden almacenar como objetos las imágenes e instantáneas

Nova (Compute Service)

  • Gestión de las instancias
  • Varios subcomponentes: nova-api, nova-conductor, nova-console, nova-scheduler, nova-compute
  • La configuración de nova-compute depende del hipervisor
  • nova-scheduler implementa varios algoritmos
  • Importante: Definir CPU y RAM allocation-ratio
  • Importante: Con KVM es conveniente configurar KSM
  • nova-console: VNC o SPICE

Cinder (Block Storage Service)

  • Gestión de los volúmenes
  • Múltiples "backends"
  • Varios componentes: cinder-api, cinder-scheduler y cinder-volume

Horizon (Dashboard)

  • Desarrollada en Django
  • Fácilmente extensible y adaptable
  • Habitualmente con memcached

Neutron (Networking Service)

  • Encargado de las redes, subredes, routers, etc.
  • Modular Layer 2 (ML2):
    • Varios tipos: local,flat,vlan,gre,vxlan
    • Varios mecanismos: Arista, Brocade, Cisco, Nexus, Hyper-V, midonet, nuage, OVS, ...
  • DHCP y routers definidos en el nodo de red
  • Servicio de metadatos a cada subred en modo proxy
  • Puede proporcionar LBaaS, VPNaaS y FWaaS

Arquitectura lógica

OpenStack Operations Guide

Características físicas

Nodos de red y controlador

  • El o los nodos controlador y nodos de red son equipos convencionales sin requisitos especiales en capacidad de cómputo, memoria o almacenamiento en disco para una nube pequeña como la de este ejemplo.
  • La principal mejora que se podría hacer en estos equipos es la inclusión de interfaces de red 10 Gigabit Ethernet

Nodo de computación

uso poco intensivo

  • CPU allocation ratio: 16
  • RAM allocation ratio: 1.5
  • Escalamos al pico máximo:
    • 533 GiB RAM (800 / 1.5)
    • 25 cores (200 X 2 / 16)
    • 4 TiB HD (200 x 20)
  • Resultado: 4 nodos de computación
    • 128 GiB de RAM
    • 6 cores
    • 1 TiB de HD

Nodo de computación

uso intermedio

  • CPU allocation ratio: 8
  • RAM allocation ratio: 1.2
  • Escalamos al pico máximo:
    • 666 GiB RAM (800 / 1.2)
    • 50 cores (200 X 2 / 8)
    • 4 TiB HD (200 x 20)
  • Resultado: 5 nodos de computación
    • 128 GiB de RAM
    • 10 cores
    • 1 TiB de HD

Nodo de computación

uso intensivo

  • CPU allocation ratio: 1
  • RAM allocation ratio: 1
  • Escalamos al pico máximo:
    • 800 GiB RAM
    • 400 cores
    • 4 TiB HD
  • Resultado: 12 nodos de computación
    • 64 GiB de RAM
    • 32 cores
    • 500 GiB de HD

Nodo de almacenamiento

LVM + iSCSI

  • Supongamos que proporcionamos redundancia con RAID5 más un disco de reserva
  • 7 HD de 2 TiB
  • Discos aparte para el sistema y cinder-volume
  • Varias interfaces de red para bonding o 10 Gigabit Ethernet

Nodo de almacenamiento

Ceph

  • 1 GiB de RAM por 1 TiB de almacenamiento
  • Requisitos mínimos. 3 nodos con:
    • 1 CPU multicore
    • 24 GiB RAM
    • No utilizar RAID
    • 10 HD de 2 TiB
    • Discos aparte para sistema y journal
  • Ejemplo: Supermicro. Ceph Object-Based Storage Cluster

Ceph. Hardware recommendations

OpenStack User Survey

Referencias