● Paso 1 - verificar acceso
-Ingresamos por medio del navegador de preferencia tal como lo indica el resultado de la instalación mediante:
-http://ip_del_host/dashboard.
Figura 5. Login OpenStack Fuente: Autores
-El usuario y contraseña se encuentran en el archivo /root/keystonerc_admin para visualizar las credenciales ejecutamos:
-cat /root/keystonerc_admin Salida:
61 Figura 6. Archivo Con Los Datos Para Hacer Login En OpenStack
Fuente: Autores
Estas credenciales podrán ser cambiadas posteriormente, desde la interfaz gráfica.
Una vez que la autenticación ha sido satisfactoria nos mostrará una vista de los proyectos por defecto que viene con la instalación de la nube. Será desde esa vista donde podremos crear nuevos proyectos.
Figura 7. Vista Inicial De OpenStack Después Del Login Exitoso Fuente: Autores
● Paso 4 - Exploración de las opciones de horizon openstack
La siguiente figura nos expone el menú de Proyecto en su totalidad el cual consta de: - Acceso a la API
- Compute
- Volúmenes
- Red
62 Figura 8. Módulo Proyecto OpenStack
Fuente: Autores
En el módulo de compute se tienen las siguientes opciones de configuración: - Vista General:
Esta pestaña permite tener una vista gráfica de la cantidad de recursos en uso y los que están disponibles aún.
- Instancias:
Este apartado permite realizar todo lo relacionado a la administración y gestión de las instancias que sean desplegadas (modificación, conexión de interfaces, asociación de ip’s flotantes, apagado, encendido, etc...)
- Imágenes:
Desde este espacio es posible realizar la creación de nuevas imágenes de sistemas operativos a utilizar.
- Pares de claves
Este módulo está diseñado para construir las llaves públicas rsa que se usarán para la conexión contra las instancias que han sido creadas, desde equipos remotos.
63 Figura 9. Pestaña Compute Del Módulo Proyecto
Fuente: Autores
Los volúmenes son los dispositivos de almacenamiento en bloque que se adjuntan a las instancias para habilitar el almacenamiento persistente. Los usuarios pueden adjuntar un volumen a una instancia en ejecución o separar un volumen y adjuntarlo a otra instancia en cualquier momento.
- Volúmenes:
La pestaña volúmenes permite administrar lo relacionado con la gestión de lo volúmenes de datos para ser asignados a las instancias creadas.
- Copias de seguridad:
Como su nombre lo indica nos permite tomar un respaldo de un volumen o grupo de ellos con el fin de conservar una copia en caso de pérdida o daño de la instancia.
- Instantáneas:
La instantánea permite realizar una copia completa de una máquina virtual y congelarla en el último estado de la instancia.
- Grupos consistentes:
Los grupos consistentes no son más que un grupo de volúmenes pertenecientes a una misma instancia.
64
Esta opción permite tomar una copia congelado de un estado específico de los grupos de volúmenes existentes hasta el momento.
Figura 10. Pestaña Volúmenes Del Módulo Proyecto Fuente: Autores
El siguiente esquema de configuración es uno de los más relevantes del proyecto y se trata del módulo de Red, compuesto por:
- Topología de red:
Este espacio permite entender gráficamente la relación entre las redes y las correspondientes conexiones entre redes públicas y privadas
- Redes:
Desde este módulo es posible crear las redes públicas y privadas necesarias para la comunicación de las instancias.
- Routers:
Por medio de este módulo podemos crear un router virtual al cual tendremos que definir un gateway privado y uno público para el paso de la comunicación entre las redes y a su vez para lograr acceder desde redes remotas.
- Grupos de seguridad:
Básicamente es aquí en donde se configuran las reglas de seguridad para la red aquí podremos permitir o denegar una comunicación por icmp o ssh e incluso su salida para consultar servicios de internet alojados en http o https.
65
El término IP flotante es semejante con lo que en Amazon se conoce como ip elastica o para un proveedor isp es llamado ip pública y es la que me permitirá acceder a las instancias desde redes externas. Una observación a tener en cuenta es que por cada instancia debe existir una ip flotante asociada a la red interna de la misma para evitar sobrelapamiento de las ips.
- Enlaces troncales:
Los enlaces troncales son usados especialmente cuando se definen VLAN’s al interior del router para determinar la ruta troncal activa para comunicar las mismas.
Figura 11. Módulo De Red OpenStack Fuente: Autores
El almacén de objetos (swift) es una plataforma de almacenamiento robusta, altamente escalable y tolerante a fallos para datos no estructurados, como objetos. Los objetos son bits almacenados, a los que se accede a través de una interfaz basada en HTTP y REST. No puede acceder a los datos a nivel de bloque o archivo. El almacenamiento de objetos se usa comúnmente para archivar y realizar copias de seguridad de los datos, con casos de uso en almacenamiento de imágenes, fotos, videos y música de máquinas virtuales.
Figura 12. Módulo Almacén De Objetos De OpenStack Fuente: Autores
66
Desde la vista de administrador como se aprecia se poseen básicamente las mismas opciones que desde el segmento de proyectos con la diferencia de que las opciones son netamente aplicadas a las propiedades de administración de cada aspecto, por ende no será posible realizar creaciones desde aquí en algunas opciones.
Figura 13. Vista Módulo Administrador De OpenStack Fuente: Autores
Desde el módulo de cómputo tenemos una característica importante que resaltar y se llama sabor desde aquí podemos configurar unas propiedades o especificaciones puntuales o bases con las que queremos realizar el lanzamiento de una nueva instancia. Por ejemplo: Si quiero lanzar una instancia con Centos 7 y que automáticamente configure para su uso 512Mb de Ram 10GB de disco duro y 4 VCPUS entonces se debe parametrizar esta opción y posteriormente desde la creación de la instancia se relaciona el sabor creado.
Figura 14. Pestaña Compute Del Módulo Administrador Fuente: Autores
67
El gran diferencial de este módulo se llama Sistema y en su interior podemos obtener información completa del sistema de openstack y a su vez un espacio para realizar la gestión de los metadatos con los que se espera almacenar la información
Figura 15. Pestaña Sistema Del Módulo Administrador Fuente: Autores
Finalmente el árbol de opciones de openstack cuenta con un módulo de identidad el cual permite la creación, modificación o eliminación de grupos, usuarios y roles con base en los permisos que les sean asignados para el uso en algún respectivo proyecto.
Figura 16. Módulo Identidad OpenStack Fuente: Autores
68
● Paso 2 - Propuesta técnica usando OpenStack
En este punto del documento se propone una solución al problema inicialmente planteado en este proyecto por consiguiente el espacio que se expone a continuación puede estar sujeto a cambios o alternativas, no obstante se acoplo el esquema más estructurado y funcional para el performance de hardware disponible durante la ejecución concerniente a:
- Servidor OpenStack:
- Portatil Asus X555QG, 12Gb Ram, 1Tb Disco Duro, 1 Procesador AMD A12 QuadCore 3.4GHz. Usado para alojar exclusivamente a el servidor de Openstack, sus instancias y redes de comunicación.
- Estación De Trabajo 1:
- Portatil DELL 1464, 4Gb Ram, 320Gb, 1 Procesador Intel Core i3 3Gen QuadCore 2.4GHz. Usado para realizar el consumo de OpenStack como IaaS y la página web publicada en los contenedores de Docker.
- Estación De Trabajo 2:
- Usado para construir la página web y su posterior dockerización para poderla integrar con la nube OpenStack por medio del modelo expuesto con Docker Swarm.
Lo primero que se debe hacer después de ingresar al Dashboard de Horizon OpenStack, es configurar la capa de red llamada dentro del modelo de OpenStack como Neutrón, por lo cual sobre el módulo de proyecto se ubicará en la opción redes.
Allí se apreciara que por defecto este menú se encuentra con una red pública que bien podemos decidir si usar o no, para este proyecto implementamos en la configuración la red creada por defecto y se procede a crear una red LAN para el uso de las instancias desplegadas.
69 Figura 17. Vista Red Pública Por Defecto Router
Fuente: Autores
Bajo la premisa anterior haremos click sobre crear red en donde se configurarán 3 pestañas, en la primera llamada Red definiremos un nombre para la red LAN a crear, para el escenario propuesta se llamará network_tesis, se marcará el check de Activar estado del administrador para que si se desea gestionar la red desde el módulo de Administrador de Horizon sea posible, también se marca la casilla crear subred para habilitar la configuración de la segunda pestaña.
Figura 18. Crear Red Fuente: Autores
70
En la pestaña subred se define el direccionamiento LAN con el que se desea trabajar en el proyecto se ha definido la subred 172.16.1.0 como direccionar de clase C /24 para ubicando el nombre de subnet_tesis y dejando la puerta de enlace predeterminada sin configurar para que automáticamente el modelo tome la primera ip útil del pool de subred 172.16.1.1/24.
Figura 19. Crear Subred Fuente: Autores
Finalmente haciendo click en siguiente iremos a los detalles de la subred en donde observamos 3 opciones para configurar la primera corresponderá al pool de asignación por DHCP que se aplicará (siempre que hayamos encendido la opción de DHCP), en el proyecto se habilitó como pool el rango comprendido entre las IP’s 172.16.1.20-172.16.1.252, adicionalmente se parametriza el campo de DNS usando el principal de google siendo 8.8.8.8 y aplicando el campo Rutas de host en blanco dado que se configuraran posteriormente, este último campo hace referencia a lo que se conoce usualmente como rutas estáticas.
71 Figura 20. Detalles De Subred
Fuente: Autores
Una vez concluida la configuración se hace click en el botón crear y se presentará una vista con la red LAN creada y adicionalmente la red pública por defecto de OpenStack:
Figura 21. Vista Subred Creada Fuente: Autores
Lo siguiente que se debe realizar es generar la creación de una ip flotante para poder ser relacionada a la interfaz que contendrá la red pública contra la red LAN que hemos construido
72
previamente, recordemos que es esta Ip la que brindará el servicio de internet y adicionalmente la que permitirá que se puedan alcanzar las instancias desde otras redes, bien sea aplicando llamados ICMP, Telnet o SSH.
Para ello vamos al módulo Ip Flotante y hacemos click en asignar IP al proyecto. Allí se nos presentará una ventana para seleccionar la red pública con la que queramos asociar nuestra Ip flotante, para nuestro caso es public, le asignaremos una descripción y finalmente hacemos click en asignar IP.
Figura 22. Asignación IP Flotante Fuente: Autores
Una vez creada la ip veremos algo similar a la siguiente imagen en donde se aprecia la ip que automáticamente se asigna dentro del pool de la red pública de OpenStack para poder ser utilizada posteriormente en una instancia.
Figura 23. Vista De Ip’s Flotantes Fuente: Autores
73
El siguiente paso de configuración corresponde a la creación de un router por lo cual ingresamos en el módulo Proyecto pestaña Router y hacemos click en crear router. Una vez ingresemos al formulario de creación asignaremos un nombre, para nuestro caso router_tesis, habilitaremos el check de activar estado del administrador para los mismos fines descritos en párrafos lastres, adicionalmente le asociamos la primera red existente que es la que se ha denominado como public, habilitaremos el check de SNAT (permite realizar un NAT entre la red pública y la red LAN) y finalmente la zona de disponibilidad por defecto será nova.
Figura 24. Crear Router Fuente: Autores
Una vez que se ha creado el router observaremos una vista como la siguiente:
Figura 25. Vista Routers Fuente: Autores
74
Ahora en la pestaña de topología de red, opción gráfico tendremos hasta el momento una red privada, una red pública y un router con una interface conectada a la red pública, lo que concierne en este paso es asociar la red privada en otra interfaz del router es decir definir el gateway por defecto de la red nombrada como network_tesis.
Figura 26. Topología De Red Fuente: Autores
Se retorna a la pestaña Router y hacemos click sobre el nombre del router “router_tesis” y en la vista que nos presenta hacemos click en añadir nueva interfaz.
Figura 27. Añadir Interfaz Fuente: Autores
75
En el campo subred se seleccionara la red interna creada llamada network_tesis asociada a la subnet_tesis y dejaremos el campo Dirección IP en blanco para que asigne la primera ip de la red creada para ser el gateway por defecto 172.16.1.1 como puede verse a continuación.
Figura 28. Asignación De Red Interna
Fuente: Autores
Una vez hecho lo anterior nuestra topología de red gráfica se integra de la siguiente forma:
Figura 29. Nueva Topología De Red Fuente: Autores
Con un router enlazado a una red pública desde una interfaz y a una red interna desde otra. Otra vista de la topología de red corresponde a la relación lógica expuesta por la herramienta así:
76 Figura 30. Relación Lógica Topología De Red
Fuente: Autores
En donde la red de color azul simboliza la red pública y la naranja la red interna y en el medio el router que interconecta las respectivas redes mediante el gateway por defecto que se ha definido para cada interfaz.
Esta vista nos presenta las imágenes principales o creadas recientemente para ser utilizadas en el lanzamiento de nuevas instancias, para el escenario una imagen cirrOS sistema operativo diseñado por OpenStack con optimizaciones sobre el performance de hardware del servidor que ejecute la plataforma.
77 Figura 31. Vista De Imágenes
Fuente: Autores
A continuación, tendremos que crear un par de claves rsa para lograr mediante estas llaves la conexión vía ssh contra las instancias creadas.
Figura 32. Menú Pares De Claves Fuente: Autores
Como se aprecia en este momento se ha generado la clave ssh únicamente seleccionando el botón crear par de claves el cual solo nos solicita un nombre para el par creado
78 Figura 33. Crear Par De Claves
Fuente: Autores
En este menú se podrá realizar el lanzamiento de las instancias que sean necesarias para la implementación del proyecto, para iniciar basta con hacer click sobre el botón lanzar instancia.
Figura 34. Menú Instancias Fuente: Autores
Para lanzar la instancia será necesario realizar el diligenciamiento de todas las secciones marcadas con un * en el listado del costado izquierdo, lo primero que se solicita es el nombre que se le desea dar a la instancia, una descripción de la misma la zona de disponibilidad que por defecto
79
siempre será nova y el contador que hace referencia a la cantidad de máquinas o instancias lanzadas consecutivamente.
Figura 35. Pestaña Detalles Lanzamiento De Una Instancia Fuente: Autores
Continuando con la pestaña origen es momento de seleccionar la imagen del sistema operativo que vamos a utilizar para ello en el seleccionador de origen de arranque marcaremos la opción Imagen, en crear nuevo volumen marcaremos no o sí dependiendo de si se desea crear un volumen de datos para este caso será no dado que no se almacenarán datos, y se seleccionará la imagen cirros creada anteriormente por el sistema operativo de OpenStack.
80 Figura 36. Pestaña Origen Lanzamiento De Una Instancia
Fuente: Autores
Ahora se selecciona el sabor o composición de hardware que le vamos a asignar a la instancia dadas las características físicas del servidor para este escenario se crean 3 instancia con 512Mb de Ram, 1Gb para la partición raíz del disco duro y 1 Virtual CPU.
Figura 37. Pestaña Sabor Lanzamiento De Una Instancia Fuente: Autores
81
Continuando con la parametrización de la instancia llegamos a la categoría de redes en donde tendremos la opción de seleccionar dos interfaces de red en donde seleccionaremos la red que hemos creado previamente y que definimos bajo el nombre de “network_tesis”, esto habilitará sobre la instancia una interfaz con el direccionamiento de red definido en esta configuración.
La opción de la interfaz pública o será asignada en la creación de la instancia dado que posteriormente se anexará la ip flotante al recurso.
Figura 38. Pestaña Redes Lanzamiento De Una Instancia Fuente: Autores
Dado que en pasos anteriores ya se creó un par de claves estas automáticamente son asignadas en la instancia, bajo el escenario en que se tuvieran varias llaves creadas será necesario seleccionar con cuál de estas se desea autenticar contra la instancia.
En este momento ya es posible seleccionar el botón Ejecutar Instancia para realizar el lanzamiento, las pestañas de configuración, Grupo de servidores, Scheduler Hints y Metadatos no serán necesarios para esta configuración puesto que la base de esta implementación propuesta es un enjambre de docker el cual no requiere estas opciones, si se parametriza un sistema operativo para el funcionamiento normal de un servidor de aplicaciones o base de datos estas opciones deben ser configuradas para temas de auditorías.
82 Figura 39. Pestaña Par De Claves Lanzamiento De Una Instancia
Fuente: Autores
Al lanzar la instancia se aprecia que Openstack ejecuta 2 fases internas una de configuración o programación y la otra de ejecución que mostrara que la instancia pasa a un estado corriendo o “running” en inglés. Lo anterior se puede observar a continuación:
Figura 40. Instancia En Fase De Programación Fuente: Autores
83 Figura 41. Instancia En Fase De Ejecución (Corriendo)
Fuente: Autores
El siguiente paso es asignar una IP Flotante a la instancia asociada a la interfaz de red parametrizada en el despliegue de la instancia para de esta manera permitir las conexiones externas hacia la instancia o su comunicación contra las redes de internet.
Para ello se selecciona el listado desplegable ubicado al costado derecho de la instancia que indica crear instantánea y seleccionaremos la opción asociar ip flotante, tal como se exhibe en la siguiente figura.
84 Figura 42. Asignación IP Flotante A Una Instancia
Fuente: Autores
En este momento al consultar la topología gráfica de red encontraremos lo siguiente en donde ya se tiene una instancia creada en el segmento de red privado conectado al router listo para salir a internet.
Figura 43. Mapa Topológico Después De Lanzamiento De Instancia Y Configuración De IP Flotante Fuente: Autores
85
Ahora en la pestaña instancia al seleccionar el nombre de la instancia, podremos observar que se realizó el despliegue y creación de la máquina virtual que diseñamos llamada swarm_manager la cual nos permitirá acceder desde la consola, o incluso revisar los logs de la instancia y adicionalmente posee un sistema de auditoría para dar un seguimiento a las acciones realizadas en ella.
Figura 44. Opciones De Administración Instancia Fuente: Autores
Al seleccionar la opción consola se ejecuta un complemento de OpenStack que permite acceder a la instancia de manera remota desde el mismo Horizon Dashboard de OpenStack como se observa en esta figura.
86 Figura 45. Lanzamiento De La Consola VNC De Una Instancia
Fuente: Autores
Después de un par de segundos aparecerá en pantalla la vista de Login de la instancia para ingresar al sistema operativo así como el usuario y contraseña para acceder en ella.
Figura 46. Login En Una Instancia Fuente: Autores
Una vez hecho el login en la instancia por medio de la herramienta de red ifconfig podremos comprobar el direccionamiento creado en la instancia el cual se corresponde con la creación de las redes realizada.
87 Figura 47. Configuración De Red En Una Instancia
Fuente: Autores
Ahora por medio de un ping tendremos una prueba ICMP para comprobar comunicación