Académique Documents
Professionnel Documents
Culture Documents
INTEGRACIN
DE DOCKER EN
OPENSTACK
NDICE
NDICE .................................................................................................................................i
1
INTRODUCCIN ........................................................................................................ 1
OPENSTACK ........................................................................................................ 2
2.1.1
2.1.2
2.1.3
2.1.5.1
HISTORIA ............................................................................................. 4
2.1.5.2
2.1.5.3
KEYSTONE ............................................................................................ 5
2.1.5.4
GLANCE ................................................................................................ 6
2.1.5.5
NOVA ................................................................................................... 7
2.1.5.6
SWIFT ................................................................................................... 8
2.1.5.7
CINDER................................................................................................. 9
2.1.5.8
NEUTRON .......................................................................................... 10
2.1.5.9
HORIZON ........................................................................................... 10
2.1.5.10
HEAT .................................................................................................. 11
2.1.5.11
CEILOMETER ...................................................................................... 11
2.1.5.12
TROVE ................................................................................................ 12
2.1.6
2.2
DEVSTACK ................................................................................................. 12
DOCKER ............................................................................................................ 13
2.2.5
HISTORIA ................................................................................................... 13
2.2.6
2.2.8
2.2.8.1
PORTABILIDAD................................................................................... 14
2.2.8.2
LIGEREZA ........................................................................................... 15
2.2.8.3
AUTOSUFICIENCIA ............................................................................. 15
2.2.9
2.2.10.2
2.2.10.3
REPOSITORIOS DOCKER..................................................................... 16
NOVA-DOCKER ................................................................................................. 17
3.2
3.3
INTRODUCCIN................................................................................................ 19
4.2
MEDIOS MATERIALES....................................................................................... 19
4.3
4.3.5
4.3.6
4.3.7
4.3.8
4.3.9
DIFICULTADES ......................................................................................................... 32
CONCLUSIONES....................................................................................................... 33
BIBLIOGRAFA ......................................................................................................... 34
ii
iii
1 INTRODUCCIN
El presente proyecto se va a centrar en dos de los proyectos open source que
ms inters despiertan tanto en desarrolladores como en administradores, como se
refleja en la cantidad de informacin circulando por la red sobre cloud computing o
docker, y llegndose a convertir en buzzwords.
Si recurrimos a datos reales, la encuesta realizada por The New Stack y Linux
Foundation dos aos atrs, en la que se pregunt a 550 encuestados sobre cual
consideraban que era el mejor proyecto de cdigo abierto sobre la nube, dio como
resultado que los de mayor inters eran OpenStack y Docker por ese orden, como se
puede ver en la siguiente grfica:
Escritos en Python.
Algunos utilizan AMQP (Protocolo de Cola de Mensajera Avanzado) para
intercambiar mensajes.
Incluyen una API RESTful para la comunicacin entre componentes y con el
exterior.
La autenticacin se basa en un sistema de tokens de cuya gestin se encarga
el mdulo Keystone.
Cuentan con una base de datos propia e independiente.
Usuarios.
Proyectos (tenants).
Roles.
Servicios y endpoints.
2.1.5.4 GLANCE
Para entender la misin de este componente vamos a hacer una pequea
introduccin del concepto de imagen. Una imagen es un archivo nico que contiene los
contenidos y la estructura completa de un medio de almacenamiento. Se utilizan como
medio de distribucin para sistemas operativos e instancias.
Glance permite a los usuarios descubrir, registrar y recuperar imgenes. Ofrece
una REST API que permite obtener los metadatos de la imagen y recuperar una imagen
actual. Las imgenes de las mquinas virtuales se pueden almacenar en un fichero
simple o en el mdulo de almacenamiento de objetos.
Glance gestiona las plantillas de imgenes de los sistemas. Adems, gestiona las
instantneas de las instancias, pudiendo soportar diversos formatos.
Dentro de Glance encontramos:
-
2.1.5.5 NOVA
Componente principal de OpenStack. Gestiona las instancias de imgenes, dnde
deben ejecutarse y el acceso mediante consola.
Soporta diferentes hipervisores: KVM/QUEMU, Xen, Docker, etc.
Permite aprovisionar mquinas fsicas mediante Baremetal/Ironic.
Funcionamiento:
-
2.1.5.6 SWIFT
Es el componente encargado de la administracin de objetos, definiendo estos
como entidades que contienen informacin, pero sin estar sometidos a una jerarqua.
Es decir, todos los objetos se encuentran en un mismo nivel formando un pool de
almacenamiento, de forma que un objeto no puede contener a otro.
Los objetos se caracterizan adems por tener metadatos extendidos. Cada objeto
cuenta con un identificador nico que permite a un usuario final recuperarlo sin
necesidad de conocer la ubicacin fsica de la informacin.
En cuanto a las caractersticas de Swift se resumen en las siguientes:
-
2.1.5.7 CINDER
El componente Cinder es el encargado de la gestin de volmenes, siendo estos
dispositivos de bloques que se crean de forma independiente a la instancia y pueden
asociarse o disociarse de ella cuando sea necesario. Se puede pensar en los volmenes
como discos externos que se pueden conectar y desconectar de las instancias.
Cinder incluye controladores para soportar una amplia variedad de los
dispositivos de almacenamiento presentes en el mercado. Cuando Nova termina una
instancia borra todo el contenido local asociado a ella, pero no los volmenes, por lo
que estos se consideran almacenamiento permanente.
Da a los tenants de la nube una API que construye topologas de red muy
completas, y configura polticas de red avanzadas en la nube.
Permite plugins que introduzcan capacidades avanzadas de red.
Permite cualquier topologa avanzada de servicios de red que se instauren en
las redes de los tenants de OpenStack.
Neutron-server es el principal proceso del servidor de red de OpenStack. Es
un daemon en Python que pasa las peticiones de los usuarios de la API al
plugin configurado. Incluye tres agentes:
Neutron-dhcp-agent: Proporciona servicios de DHCP a todas las redes tenant.
Neutron-l3-agent: Proporciona L3/NAT para permitir el acceso a una red
externa desde las mquinas virtuales.
2.1.5.9 HORIZON
Panel de control web de OpenStack desarrollado en Django.
No incluye todas las funcionalidades de la API de cada componente, pero si los
medios ms utilizados.
El panel de control proporciona al administrador y a los usuarios una interfaz
grfica para acceder, provisionar y automatizar los recursos basados en la nube.
Adems, contiene herramientas de monitorizacin y gestin adicionales.
10
2.1.5.10 HEAT
Este componente gestiona el servicio de orquestacin basado en plantillas para
describir una aplicacin en la nube mediante las llamadas de la API de OpenStack para
ejecutar esas aplicaciones.
Las plantillas permiten crear instancias, IPs flotantes, volmenes, usuarios, etc.
Incluso proporciona funcionalidades de orquestacin avanzadas para crear instancias de
alta disponibilidad, auto-escalables o clster anidados.
2.1.5.11 CEILOMETER
Proporciona una infraestructura para la monitorizacin y medicin de la nube.
Cuenta con el mdulo Telemetry que se encarga de:
- Recoger las mediciones de datos sobre la CPU y los costos de red.
- Recopila datos de notificaciones de monitorizacin enviadas por los servicios o
sondeando la infraestructura.
- Configura los tipos de datos recopilados para satisfacer requisitos de funcionamiento.
- Se puede expandir para recopilar el uso de datos mediante plugins adicionales.
11
2.1.6 DEVSTACK
El objetivo del proyecto Devstack es proporcionar un conjunto de herramientas
utilizadas para la instalacin de los principales servicios de OpenStack, adecuadas para
12
2.2 DOCKER
2.2.5 HISTORIA
El proyecto de cdigo abierto Docker naci como un proyecto interno de
dotCloud, empresa que pretenda ofrecer una plataforma como servicio (PaaS), de la
mano de Salomon Hykes y con la colaboracin de Andrea Luzzardi, Francois-Xavier
Bourlet y Jeff Lindsay.
Fue liberado como cdigo abierto en marzo de 2013, y en 2015 ya contaba con
ms de 20700 estrellas de GitHub, ms de 4700 bifurcaciones (forks) y 900
colaboradores.
Entre las empresas y organizaciones implicadas en el proyecto destacan IBM,
Google, Cisco, Amadeus, etc.
A pesar de lo reciente de su creacin, el proyecto docker se ha convertido en una
herramienta de gran ayuda tanto a desarrolladores como a administradores de sistema
para la realizacin de pruebas o el despliegue de servicios.
Nova-Docker
Plugin de Docker para Heat
OpenStack Magnum
3.1 NOVA-DOCKER
Como se ha indicado anteriormente, Nova gestiona las mquinas virtuales. El
drive Nova-Docker nos permite instanciar contenedores de forma integrada en
OpenStack, almacenando las imgenes en Glance sin utilizar un registro de imgenes
externo. Esto lo consigue utilizando Docker como una forma de hipervisor, como se
puede ver en el esquema siguiente:
17
18
Creacin del usuario y asignacin de contrasea (en este caso el usuario ser
stack)
Aadimos a /etc./sudoers:
20
Instalamos apt-transport-https.
Este paquete habilita el uso de las lneas 'deb https://foo distro main' en /etc./apt/sources.list
21
Para que docker funcione con el usuario que hemos creado aadimos en
/etc./default/docker
DOCKER_OPTS='-G stack'
22
rm -rf /opt/stack/nova-docker
sudo mkdir -p /opt/stack
23
Clonamos Nova-Docker:
cd /opt/stack/nova-docker
sudo git checkout stable/kilo && sudo git pull --ff-only origin
stable/kilo
Instalamos Nova-Docker:
Lo clonamos en /var
cd /var
sudo git clone -b stable/kilo https://github.com/openstackdev/devstack
Este comando evita que se genere un error en la instalacin de Nova-Docker, aunque dicho error luego
no supone problemas aparentes para el desarrollo del resto de la instalacin.
24
cd /var/devstack
nano local.conf
Contenido:
[[local|localrc]]
VIRT_DRIVER=novadocker.virt.docker.DockerDriver
[[post-config|$GLANCE_API_CONF]]
[DEFAULT]
container_formats=ami,ari,aki,bare,ovf,ova,docker
[[post-config|$NOVA_CONF]]
[DEFAULT]
compute_driver=novadocker.virt.docker.DockerDriver
Lanzamos el script:
./stack.sh
sudo cp /opt/stack/nova-docker/etc./nova/rootwrap.d/docker.filters
/etc./nova/rootwrap.d/
Las opciones de configuracin de Devstack son muy amplias, no obstante, y con el objeto de evitar
errores en la ejecucin del script se ha reducido al mnimo imprescindible para habilitar Glance y Nova
para el uso de Docker.
25
. openrc admin
. openrc demo
nova list
26
nova floating-ip-create
curl http://172.24.4.2
27
28
29
. openrc admin
docker pull cirros | glance image-create --name cirros --is-public
true --container-format docker --disk-format raw
30
. openrc demo
test0
nova floating-ip-create
nova floating-ip-associate test0 172.24.4.1
31
5 DIFICULTADES
A la hora de afrontar este proyecto la primera dificultad que surgi fue el
potencial y capacidades de las dos herramientas principales utilizadas, tanto OpenStack,
como Docker. Esto ha supuesto que gran parte del tiempo dedicado a su desarrollo se
haya consumido en recabar informacin y documentacin. Esto ha desembocado en dos
consecuencias:
-
Que poder profundizar en ellas haya sido muy complicado, ya que se escapa
del alcance de un proyecto como el que se est presentando. No obstante,
ha servido como toma de contacto con dos tecnologas cuyo desarrollo e
implantacin en el futuro a gran escala parece evidente.
Falta de tiempo para probar las diferentes opciones de integracin de Docker
en OpenStack (Heat y Magnum).
6 CONCLUSIONES
Como ya se adelant, las caractersticas de este trabajo no permiten profundizar
en dos herramientas del calibre de las que nos ocupan, pero ha servido para conocerlas
y familiarizarse con ellas. Adems, puede servir de base para la realizacin de trabajos
posteriores.
En cuanto a las conclusiones sobre el desarrollo del proyecto, hay que tener en
cuenta que se centra en una de las capacidades de OpenStack, que es la virtualizacin,
dejando de lado las dems. Por lo cual se debe ser cauteloso a la hora de hacer
aseveraciones.
En cuanto al debate presente en la red sobre Docker frente a Openstack, o ambos
combinados, nos encontramos con que son herramientas muy diferentes. Como se ha
dicho anteriormente OpenStack es una tecnologa muy potente que pretende
proporcionar un conjunto de herramientas para computacin en la nube entre las que
se encuentra el despliegue de contenedores docker. Por otro lado, Docker busca
permitir a los desarrolladores desplegar aplicaciones de forma sencilla, y sin tener que
recurrir al uso de grandes recursos de hardware.
Desde mi punto de vista, ya que el despliegue de docker se puede realizar sobre
una infraestructura compartida y de forma aislada, no he encontrado ventajas en su
inclusin en OpenStack siempre y cuando sea el nico uso que se le vaya a dar a la nube.
Esta conclusin se deriva de la complejidad que implica su puesta en marcha si slo se
necesita una herramienta de virtualizacin. Incluso aunque se renunciara a la
integracin de Docker en la misma, y se limitara al uso de imgenes e instancias de
OpenStack, sigue pareciendo por uso y consumo de recursos una herramienta ms
adecuada Docker.
Sin embargo, si la empresa cuenta con ms sectores de produccin y con el
avance de los complementos necesarios si podra resultar de inters integrar el
despliegue de docker en la nube junto al resto de servicios.
Volviendo a las alternativas de integracin de ambas herramientas. Las
conclusiones a las que se han llegado, a travs de la realizacin de pruebas y el anlisis
de la documentacin, para cada una de ellas son:
-
33
Plugin para Docker de Heat: Esta herramienta no supone una integracin real
de Docker en OpenStack, ya que sera similar a ejecutar Docker en una
mquina virtual.
Magnum: Se encuentra en una fase inicial, no obstante, todo apunta a que
puede ser la solucin definitiva al objetivo planteado.
7 BIBLIOGRAFA
34
9dffeb68749f/entry/working_with_screens_to_restart_service_of_devstack_ba
sed_openstack?lang=es
Cobos Domnguez, A. (2014). Despliegue de arquitectura cloud basada en
OpenStack y su integracin con Chef sobre CentOS. ETS de Ingeniera,
Universidad de Sevilla.
Hibbets, J. (2014). A beginner's guide to understanding OpenStack. 27 de febrero
de 2014. https://opensource.com/business/14/2/openstack-beginners-guide
Romero Snchez, D. (2015). Gua de como instalar Mirantis OpenStack. 26 de
enero de 2015. http://www.dbigcloud.com/cloud-computing/119-guia-decomo-instalar-mirantis-openstack.html
Kellog-Stedman, L. (2015). Installing nova-docker with devstack. 11 de febrero
de 2015. http://blog.oddbit.com/2015/02/11/installing-novadocker-withdevstack/
Derzhavets, B. (2015). Setup the most recent Nova Docker Driver via Devstack on
F21.
26
de
marzo
de
2015.
http://bderzhavets.blogspot.com.es/2015/03/testing-most-recent-novadocker-driver.html
Derzhavets, B. (2015). Setup Nova-Docker driver && Openstack Kilo on Ubuntu
14.04 in devstack environment recoverable between reboots. 28 de abril de
2015. http://bderzhavets.blogspot.com.es/2015/04/setup-nova-docker-driveropenstack-kilo.html
Makam, S. (2015). Openstack and Docker. 14 de junio de 2015.
https://sreeninet.wordpress.com/2015/06/14/openstack-and-docker-part-1/
Makam, S. (2015). Openstack and Docker. 14 de junio de 2015.
https://sreeninet.wordpress.com/2015/06/14/openstack-and-docker-part-2/
Pacheco Mengual, J. (2015). Docker for dummies. 29 de julio de 2015.
https://www.adictosaltrabajo.com/tutoriales/docker-for-dummies/
Molina, A. (2015). OpenStack o Docker?. 2 de octubre de 2015.
https://openwebinars.net/openstack-o-docker/
Morales, M. (2015). Para los que empiezan: crear y ejecutar una imagen propia
en
un
contenedor
Docker.
5
de
noviembre
de
2015.
http://www.javiergarzas.com/2015/11/para-los-que-empiezan-crear-yejecutar-una-imagen-propia-en-un-contenedor-docker-12.html
Team
Containers.
Docker.
N.D.
https://wiki.openstack.org/wiki/Docker#Configure_DevStack_to_use_NovaDocker_.28alternate_post-stack_method.29
Wiki
OpenStack.
Tacker/Installation.
N.D.
https://wiki.openstack.org/wiki/Tacker/Installation
Hoehne, T. (2016). Manage SSH Key Pairs for Cloud Servers with pythonnovaclient. 11 de enero de 2016. https://support.rackspace.com/howto/manage-ssh-key-pairs-for-cloud-servers-with-python-novaclient/
35