Índice de contenido
Índice de contenido 1
Introducción 2
Quienes participaron en la construcción de este documento. 3
Objetivos, Alcances y Recomendaciones previas. 3
Conocimientos de S.O. Linux / *NIX / Windows. 3
Conocimientos asociados a Virtualización (nivel hypervisor). 4
Conocimientos asociados a Cloud públicas (AWS, GCCS, Bluemix, etc). 4
¿Que es OpenStack? 5
Cloud Computing 5
OpenStack 7
Principios fundacionales 7
Componentes 8
Ejemplo típico de funcionamiento: lanzar una instancia 9
Vínculos de contenido audiovisual 10
Glosario 11
01. Introducción
Telefónica se encuentra atravesando un proceso de transformación a nivel global, el cual
impacta de forma transversal en todos los procesos de la corporación, impulsando una
ideología de eficiencia que impulsa a que reinventemos nuestros procesos y forma de
trabajar de forma permanente.
Dado lo anterior, es que debemos detenernos y replantear nuestra forma de hacer las
cosas, con el fin de lograr una mejora sustancial cuantificable al corto - mediano plazo.
Las aristas de trabajo son variadas y van desde la operación en el dia a dia, pasando por
procesos de análisis e investigación, hasta la mantención física de los componentes de la
red.
02. Quienes participaron en la construcción de
este documento.
El equipo multidisciplinario que ha trabajando en la recolección, interpretación y validación
de los contenidos se compone de integrantes de distintos equipos dentro de la Subgerencia
de Configuración y Soporte de Red y Servicios y la Subgerencia de Valor Agregado.
Aldo Santos, Juan Antonio Escobar, Eduardo Celis, Marcelo Rolle, Patricio Gatica, Gonzalo
Lagunas, Iván Campos, Pedro Sepulveda, Victor Cheuquenao, Rolando Rojas, Carlos
Fuentealba.
03. Objetivos, Alcances y Recomendaciones
previas.
El objetivo de este documento es plantear y establecer un marco teórico del que y como
OpenStack son una opción válida para administrar recursos virtualizados dentro de una
empresa.
En esta oportunidad el alcance será trabajar en replantearnos la forma de operar nuestra
infraestructura de procesamiento y optimizar tanto el uso como las actividades que
realizamos sobre éste.
Nuestra recomendación para participar de este proyecto en su versión inicial o futuras
ediciones es que se cumpla con cierto nivel de conocimiento y experiencia asociada a
sistemas informáticos y gestión de networking.
De no contar con dichos conocimientos, el proceso se podrá realizar de igual forma, sin
embargo, existirán áreas de desconocimiento que tomará más tiempo de interiorizar y que
tal vez no se encuentre abordado en estos documentos.
1. Conocimientos de S.O. Linux / *NIX / Windows.
El participante deberá contar con conocimiento de sistemas basados en *nix, linux y MS
Windows.
Deberá desenvolverse de manera rápida y con experiencia en distintas casuísticas que se
presentarán en su entorno de trabajo (solución de problemas de filesystem, networking,
gestión de aplicaciones, servicios y demonios, gestión de paquetes de instalación, entre
otros).
2. Conocimientos asociados a Virtualización (nivel hypervisor).
El participante deberá entender que es un Hypervisor, cual es su función dentro de una
capa de computo y cuales son los beneficios y desventajas que este sistema puede generar
en su entorno de implementación.
3. Conocimientos asociados a Cloud públicas (AWS, GCCS,
Bluemix, etc).
El participante deberá tener claridad de los conceptos de nubes públicas, los tipos de
servicios asociados y su utilización (de forma básica).
04. ¿Que es OpenStack?
OpenStack es una plataforma cloud computing de software libre que en tan solo tres años
de desarrollo se ha convertido en una de las principales opciones para implementar un
cloud de IaaS público o privado.
Contenido audiovisual: Tutorial de OpenStack (url: [Link] )
Cloud Computing
El término cloud computing es un término bastante amplio y en algunas ocasiones confuso,
pero está de moda porque suena bien y ahora mismo cualquier producto nuevo que salga al
mercado suele llevar el nombre de "... cloud", se trate o no de un producto propiamente de
cloud computing. Es por ello por lo que comenzamos este documento enunciando las
características esenciales del cloud computing según la NIST :
● Servicio disponible de forma automática y a demanda: Un usuario puede comenzar a
utilizar un recurso de cloud (almacenamiento, una instancia, etc.) sin ninguna
intervención por parte de un operador de la empresa que presta el servicio.
● Acceso a través de la red: Los recursos están disponibles a través de la red (Internet
o otro tipo de red pública o privada), mediante mecanismos estandarizados que
permitan el uso de clientes diversos, desde teléfonos a grandes ordenadores.
● Los recursos se agrupan en pools en un modelo multi-tenancy. Los recursos son
compartidos en general por múltiples clientes, que pueden disponer de ellos a
demanda y a los que se les debe garantizar aislamiento y seguridad, a pesar de
estar haciendo uso de recursos compartidos.
● Elasticidad: Es un concepto nuevo relacionado con el cloud y que lleva al extremo el
concepto de escalabilidad, ya que los recursos del usuario del cloud pueden crecer y
decrecer de forma rápida en función de sus necesidades.
● Pago por uso: La utilización real que hace el usuario de los recursos y no una
tarificación por tramos es lo que define el pago de los servicios de cloud.
Los servicios que se ofrezcan a los usuarios que cumplan estos requisitos se pueden
considerar propiamente cloud computing y puesto que son requisitos bastante amplios,
normalmente se clasifican en función del tipo de servicio que ofrezcan en tres capas: SaaS,
PaaS e IaaS.
● Software as a Service (SaaS): Aplicación completa ofrecida como servicio en la
nube. Es el ejemplo más conocido y usado de cloud computing en el que cualquier
usuario hace uso de un determinado software de una empresa a través de Internet,
como por ejemplo los servicios de Google, microsoft Office 365 y un larguísimo
etcétera.
● Platform as a Service (PaaS): Aplicación completa para el desarrollo y despliegue de
software. Los desarrolladores de software pueden optar por utilizar una plataforma
en la nube para sus desarrollos, facilitandoles mucho la tareas de pruebas y
despliegue. Algunas de las opciones más conocidas de PaaS son Google App
Engine, Windows Azure, Red Hat OpenShift o Heroku. Obviamente esta capa de
cloud es sólo para desarrolladores o empresas que se dedican al desarrollo,
pudiendo ser obviada por el resto de usuarios.
● Infrastructure as a Service (IaaS): Principalmente almacenamiento y capacidades de
cómputo (máquinas virtuales) ofrecidos como servicio en la nube. Los
administradores de sistemas de todo el mundo pueden hoy en día plantearse montar
un servicio en una máquina física, una máquina virtual o una instancia en el cloud,
ofreciendo esta última unas opciones muy interesantes sobre todo para despliegues
de demanda variable. Los servicios de cloud IaaS más conocidos son los de Amazon
Web Services, RackSpace Cloud, Joyent o Windows Azure.
La capa más completa y compleja de todas es la de IaaS y será en la que nos centremos en
este documento. Un aspecto que estaba implícito desde el principio en las características
del Cloud computing es que es un servicio que una empresa ofrece a terceros, pero las
interesantes tecnologías subyacentes a la forma de trabajar en cloud, hicieron que hace
algunos años distintas empresas y organismos se planteasen utilizar la misma forma de
trabajo pero con sus propios recursos, de manera que también se suele distinguir no sólo la
capa sino también el ámbito de uso del cloud en:
● 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.
● Híbrido Algunos servicios se gestionan en el cloud privado y otros se transfieren a
uno público, o incluso haciendo uso de la elasticidad del cloud se pasan recursos de
la nube privada a la pública en función de las necesidades. Estos clouds
normalmente utilizan una API común que permita una buena integración.
Hay soluciones tanto de software privativo como de software libre que permiten implementar
un cloud IaaS, pero de entre todas ellas destaca OpenStack.
OpenStack
El proyecto OpenStack se define así mismo como una 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
proporciona una solución de Infraestructura como servicio (IaaS) a través de un conjunto de
servicios interrelacionados.
Principios fundacionales
OpenStack no depende de una sola empresa, sino que se ha constituido una fundación, la
OpenStack Foundation , cuyos miembros son elegidos entre todos los participantes y cuyos
principios se resumen en los siguientes puntos:
● Licencia Apache 2.0, no existe versión "enterprise".
● Proceso de diseño abierto.
● Repositorios públicos de código fuente.
● Todos los procesos de desarrollo deben estar documentados y ser transparentes.
● Orientado para adoptar estándares abiertos.
● Diseño modular que permite flexibilidad mediante el uso de APIs.
Componentes
OpenStack no es un solo producto, sino un conjunto de aplicaciones que pueden
combinarse en función de las características y necesidades de cada caso, hay algunos
componentes fundamentales y otros opcionales. Este esquema de funcionamiento difiere
mucho de soluciones "llave en mano", normalmente privativas que incluyen un conjunto más
o menos fijo de componentes muy bien integrados entre sí pero poco flexible. OpenStack
tiene una gran flexibilidad y permite implementar un cloud privado en una pequeña empresa
o algunos de los mayores clouds públicos del mundo, como contrapartida, exige que la
persona encargada de la implementación y la administración del cloud tenga suficientes
conocimientos en todas o la mayor parte de tecnologías subyacentes. Cada componente de
OpenStack es totalmente autónomo y funcional y utiliza el protocolo AMQP de gestión de
colas para comunicarse con el resto de componentes y una API web RESTful para
comunicarse con procesos "externos" o los usuarios. Los principales componentes de
OpenStack son:
Nombre Equivalente en AWS Funcion
Horizon Console Panel web de gestión
Nova EC2 Gestión de instancias
Cinder ENS Almacenamiento de volúmenes
Keystone - Autenticación y autorización
Swift S3 Almacenamiento de objetos
Glance VM Import/Export Gestión de imágenes para las
instancias
Neutron VPC Redes virtuales
Contenido audiovisual: Introducción a Neutron (url: [Link]
Ejemplo típico de funcionamiento: lanzar una instancia
Dependiendo de los componentes de cada cloud y de si estos están en el mismo o
diferentes equipos, o incluso del número de estos componentes que hay en el cloud, se
hará más o menos complejo el proceso de lanzar una instancia, pero a grosso modo
podríamos resumirlo en los siguientes pasos:
● Un usuario se autentica en Keystone, bien directamente o a través del panel web
Horizon. De esta manera obtiene un token de sesión que le permitirá realizar
acciones con el resto de componentes de OpenStack sin necesidad de volver a
autenticarse y estas acciones estarán limitadas por los permisos del rol que tenga
asignado el usuario en Keystone.
● El usuario solicita a Glance la lista de imágenes disponibles. Estas imágenes las
tendrá alojadas glance directamente en el equipo que se ejecuta o bien serán
objetos almacenados en Swift.
● El usuario selecciona una imagen y solicita a Nova que la “instancie”, para lo que
nova le pedirá las características de la instancia (ram, disco, vcpu, etc.) y una vez
recibidas las características, elegirá el nodo del cloud más adecuado para ejecutar la
instancia.
● De la configuración de la red virtual donde se encuentra situada la instancia se
encarga Neutron (antes conocido como Quantum), permitiendo no sólo que se
pueda acceder a la instancia desde fuera, a través de la denominada IP flotante,
sino incluso de la configuración de redes complejas.
Vínculos de contenido audiovisual
Como material fundamental, quisimos añadir contenido vía YouTube® que de seguro será
de apoyo para la comprensión de forma didáctica y permitirá reforzar los temas.
Vínculo: Lista de reproducción con información acerca de NFVi, OpenStack, Contenedores.
(url: [Link]
Distribuidos de la siguiente forma:
OpenStack Training Virtualización
Que es y por que OpenStack
Componentes de OpenStack
Arquitectura de OpenStack
Servicios de OpenStack
Casos de estudio
Casos de éxito
OpenStack Neutron (Networking) Que es OpenStack
Arquitectura de OpenStack
OpenStack Neutron
Entendiendo Neutron
Creando una red en Neutron
Acceso remoto a través de IP flotante
Instalación de OpenStack Que es OpenStack
Instalación de OpenStack
Glosario
API: Application Programing Interface, interfaz de interacción entre sistemas
AWS: Amazon Web Services (solución de nube privada de [Link]).
Bare-metal: Servidor físico sin S.O. instalado o que cumple una función específica (sin
Virtualización)
CCP: Cloud Computing Platform (Plataforma de cómputo en la nube)
Ceph: Sistema de almacenamiento remoto distribuido
Chef: Herramienta de configuración y publicación de nuevo código de programación.
Cinder: Módulo de OpenStack para el manejo de Bloques de Storage (Ej.: Sistemas de
almacenamiento distribuido (Ceph))
Cloud: Definición de servicio de computación deslocalizada (procesamiento,
almacenamiento, transaccionales, etc)
Container: Un sistema operativo liviano, dependiente de un s.o. base, el cual permite
aislar ciertos contenidos o estructura de funcionamiento del s.o. base. Comparte su kernel
curl: Herramienta de descarga e interacción con protocolos remotos como: http, https, ftp,
scp, entre otros (generalmente disponible en entornos Linux, *NIX)
GIT: Herramienta de seguimiento de cambios de código.
GCCP: Google Cloud Computing Platform
Glance: Módulo de OpenStack que disponibiliza las imágenes
GUI: Graphical User Interface (interfaz de interacción de alto nivel entre el usuario y el
sistema final)
HA: High Availability (alta disponibilidad)
Horizon: Módulo de OpenStack para la administración del sistema (GUI)
Hypervisor: Sistema operativo base que permite administrar, controlar y hospedar nodos
virtuales (Ej.: KVM, VirtualBox, ESXi, XenServer, Hyper-V)
Hiper-V: Hypervisor de Microsoft.
IaaS: Infrastructure as a Service (Ej.: OpenStack)
Imagen [ref. S.O.]: ISO de sistema operativo previamente instalado, que cuenta con todos
los features que se requiera para ser booteado de forma instantánea
Instance (Instancia): Máquina Virtual (VM)
JSON: JavaScript Object Notation, estructura (formato) de datos para transferencia de
información entre sistemas
Jenkins: Herramienta de test de codigo de programación.
Keystone: Módulo de OpenStack que gestiona la Identidad (seguridad, autenticación)
KVM: Kernel-based virtual Machine (Hypervisor de Linux).
MAAS: (Metal as a Service) es la definición del modelo de administrar infraestructura de
forma orquestada (clusters de servidores administrado por un controlador).
MySQL: Base de datos “gratis”
Neutron: Módulo de OpenStack que gestiona el Networking (virtual o remoto)
NFV: Network Function Virtualization (concepto teórico de servicio de red virtualizado)
NFVi: Network Function Virtualization Infrastructure (infraestructura como servicio, ej.:
OpenStack)
Nova: Módulo de OpenStack que gestiona la capa de cómputo
OpenStack: Es un conjunto de proyectos que permiten satisfacer la demanda por acceso a
servicios de nube virtual privada
Python: Lenguaje de programación
RabbitMQ: Es un software de manejo de colas (queues) para orquestar requerimientos sin
perder el “hilo” de las transacciones
S.O.: Sistema operativo
SaaS:Software as a Service (Software como servicio), es la definición de suites de
softwares disponibles a través de la nube sin necesidad de instalación y mantenimiento
local (Ej.: GMail, Outlook 365, SAP, SuccessFactors, etc)
SDN: Software Defined Networks (funciones de redes virtualizadas en base a software:
vLB, vFW, vRouter, vSwitch)
SON: Self-optimized Networks.
Swift: Módulo de OpenStack para el manejo de Objetos (Ej.: discos duros de VM de forma
local, en cada servidor)
VM / Virtual Machine: Máquina virtual (Guest host)
VNF: Virtualized Network Function (sistema que hace la función de red)
Xen (Server): Hypervisor de Citrix.