Aprendiendo sobre OpenStack: estructura, componentes básicos y metodologías de instalación
OpenStack es una plataforma de cloud computing de código abierto que permite crear y administrar infraestructuras de nube pública y privada. Es compatible con Linux y ofrece una solución flexible y escalable para satisfacer las necesidades de organizaciones de todos los tamaños. En este artículo, exploraremos la estructura y los componentes básicos de OpenStack, y discutiremos las metodologías de instalación más comunes, incluyendo Kolla-Ansible para entornos de producción y Packstack y Devstack para pruebas de concepto.
Estructura y componentes básicos:
OpenStack está compuesto por varios proyectos y servicios interconectados que trabajan juntos para proporcionar una solución completa de cloud computing. Algunos de los componentes básicos más importantes incluyen:
- Horizon: Es la interfaz web de OpenStack, que proporciona una consola gráfica para administrar los recursos de la nube.
- Keystone: Este componente maneja la autenticación y la autorización en OpenStack, permitiendo la gestión segura de usuarios, roles y permisos.
- Nova: Es el servicio de computación que se encarga de aprovisionar y administrar las instancias virtuales en la nube.
- Neutron: Este componente es responsable de la gestión de redes en OpenStack, permitiendo la creación y configuración de redes, subredes y routers virtuales.
- Cinder: Es el servicio de almacenamiento en bloque que proporciona volúmenes persistentes para las instancias virtuales.
- Swift: Este servicio ofrece almacenamiento de objetos distribuido, escalable y duradero, ideal para almacenar archivos y datos de aplicaciones.
Metodologías de instalación:
Existen varias metodologías de instalación para OpenStack, pero nos centraremos en dos enfoques principales (Ambientes de pruebas y Produccion) con cuatros herramientas para los fines: Kolla-Ansible, TripleO, Packstack y Devstack.
- Metodologias de instalación recomendadas para ambientes en producción
- Kolla-Ansible: Es una solución recomendada para implementaciones de producción. Utiliza contenedores Docker y la herramienta de automatización Ansible para desplegar y administrar OpenStack de forma eficiente, segura y escalable. Kolla-Ansible facilita la actualización y el mantenimiento del entorno de OpenStack, además de proporcionar una arquitectura altamente disponible.
- TripleO (OpenStack on OpenStack): TripleO es otra opción para la implementación de OpenStack, especialmente diseñada para entornos de producción. Esta metodología utiliza OpenStack para desplegar y gestionar una instalación de OpenStack, proporcionando una arquitectura altamente disponible y escalable. TripleO utiliza plantillas Heat y servicios de contenedores, como Kubernetes, para administrar y orquestar el despliegue y la actualización de OpenStack
- Metodologias recomendadas para ambientes de pruebas conceptos o desarrollos
- Packstack: Es una herramienta de instalación automatizada que utiliza scripts de Puppet para desplegar OpenStack en un entorno de pruebas de concepto. Es ideal para usuarios que desean familiarizarse con OpenStack y probar sus características en un entorno no crítico. Packstack simplifica el proceso de instalación y configuración, pero no es recomendable para entornos de producción.
- Devstack: Es otra opción para entornos de pruebas de concepto y desarrollo. Es un conjunto de scripts que automatiza el despliegue de OpenStack desde su código fuente, facilitando la personalización y el desarrollo de nuevas características. Devstack es útil para contribuir al proyecto OpenStack o para desarrollar aplicaciones específicas, pero no es adecuado para entornos de producción.
- Bonus
- MicroStack es una solución de instalación de OpenStack simplificada y de un solo nodo diseñada para entornos de desarrollo, pruebas y demostraciones, actualmente esta fase beta el proceso para realizar instalaciones de Openstack con MicroStack en ambiente multi-nodo.
Integración de servicios básicos:
La siguiente imagen muestra cómo se correlacionan e integran los servicios básicos de OpenStack mencionados anteriormente:
+-----------+ +---------+
| Horizon |<--->| Keystone|
+-----------+ +---------+
| |
v v
+-----------+ +---------+
| Nova |<--->| Neutron |
+-----------+ +---------+
| |
v v
+-----------+ +---------+
| Cinder |<--->| Swift |
+-----------+ +---------+
En este diagrama de texto, las flechas bidireccionales representan la comunicación entre los diferentes componentes. Horizon se comunica con Keystone para la autenticación y la autorización. Keystone, a su vez, se comunica con Nova y Neutron para la administración de las instancias virtuales y la gestión de redes, respectivamente. Finalmente, Nova y Neutron se conectan con Cinder y Swift para la gestión del almacenamiento en bloque y del almacenamiento de objetos, respectivamente.
Bonus: Instalando MicroStack en ubuntu.
Metodología de instalación MicroStack en un solo nodo (MicrosStack Todo en uno):
MicroStack es una solución de instalación de OpenStack simplificada y de un solo nodo diseñada para entornos de desarrollo, pruebas y demostraciones. MicroStack es una versión "todo en uno" de OpenStack, que incluye los servicios esenciales preconfigurados y empaquetados como un snap para una fácil instalación y configuración. Aunque no es adecuado para entornos de producción a gran escala, MicroStack ofrece una excelente opción para aquellos que desean explorar rápidamente OpenStack sin pasar por un proceso de instalación complicado.
Para instalar MicroStack en Ubuntu, sigue estos sencillos pasos:
- Asegúrate de tener instalado el gestor de paquetes Snap en tu sistema. Si no lo tienes, puedes instalarlo ejecutando:
sudo apt update
sudo apt install snapd
- Instala MicroStack usando el comando snap:
sudo snap install microstack --classic --edge
- Una vez que MicroStack esté instalado, inicializa la configuración con el siguiente comando:
sudo microstack.init --autoEsto configurará los servicios básicos de OpenStack, incluidos Keystone, Nova, Neutron, Glance y Cinder. También creará una red interna, una subred y un enrutador para que puedas comenzar a lanzar instancias virtuales.
- Después de que la inicialización se haya completado, podrás acceder a la interfaz web de Horizon utilizando la URL y las credenciales proporcionadas por el comando de inicialización.
Ten en cuenta que MicroStack está diseñado para un uso simplificado y no para entornos de producción a gran escala. Para implementaciones de producción, se recomienda utilizar soluciones como Kolla-Ansible o TripleO.
NOTA: Al momento de publicar esta manual existe una version beta para implementación en multinodos
Metodología de instalación MicroStack en multi-nodo:
Para el proceso de instalación multi-nodo con microStack, se debe instalar el snap de MicroStack.
(Traducción de la pagina oficial de ubuntu)
Requisitos: Necesitarás un procesador multicore, al menos 8 GiB de memoria y 100 GiB de espacio en disco. MicroStack ha sido probado en máquinas físicas y virtuales (KVM) basadas en x86 que ejecutan Ubuntu 18.04 LTS o Ubuntu 20.04 LTS.
En este momento, usa el canal beta:
sudo snap install microstack --beta
Instala el snap en la máquina designada como nodo de control y en cualquier máquina designada como nodos de cómputo.
Puedes ver información sobre el snap instalado de la siguiente manera:
snap list microstack
Name Version Rev Tracking Publisher Notes
microstack ussuri 245 latest/beta canonical✓¡Aquí vemos que se ha implementado OpenStack Ussuri!
Inicialización:
El proceso de iniciación se debe hacer el nodo de control como los nodos de cómputo.
En el Nodo de control
Realiza este paso en la máquina designada como nodo de control.
El paso de inicialización del nodo de control despliega, configura y arranca automáticamente los servicios de OpenStack. En particular, creará la base de datos, las redes, una imagen, varios sabores (flavors) y grupos de seguridad ICMP/SSH. Todo esto se pueden hacer en 10 o 20 minutos, dependiendo de tu máquina:
sudo microstack init --auto --control
Cuando termine, genera una cadena de conexión que un nodo de cómputo designado necesitará para unirse al clúster:
sudo microstack add-compute
Salida de muestra del comando anterior sudo microstack add-compute :
Use the following connection string to add a new compute node to the cluster (valid for 20 minutes from this moment):
hKhob3N0bC4yNs99XBP9rLu0/+McUBiXTr4TG7SsdfahgNz...En el Nodo de cómputo
Realiza este paso en una máquina designada como nodo de cómputo utilizando la cadena de conexión generada previamente.
Dado que el nodo de cómputo solo administra el servicio de cómputo de OpenStack, el paso de inicialización del nodo de cómputo es mucho más corto que el del nodo de control. Un nodo de cómputo puede tardar tan solo 30 segundos en unirse al clúster: sudo microstack init --auto --compute --join <connection-string>
sudo microstack init --auto --compute --join hKhob3N0bC4yNs99XBP9rLu0/+McUBiXTr4TG7SsdfahgNz...Nota: Cada nodo de cómputo adicional requerirá que se genere una nueva cadena de conexión. Agrega tantos nodos de cómputo como desees repitiendo el proceso de unión (join).
Proceso de Verificación
El propósito del paso de verificación es confirmar que la nube funciona correctamente y descubrir algunos de los valores predeterminados utilizados por MicroStack. La verificación consiste en las realizar las siguientes acciones.
- Realizar diversas consultas de OpenStack.
- Crear una instancia.
- Conectarse a la instancia a través de SSH.
- Acceder al panel de control de la nube.
Consulta a OpenStack
Los comandos de esta sección se pueden ejecutar tanto en el nodo de control como en un nodo de cómputo.
El cliente estándar de OpenStack viene preinstalado y se invoca de la siguiente manera:
microstack.openstack <command>Para listar la imagen predeterminada:
microstack.openstack image list Salida de Ejemplo del comando Anterior+--------------------------------------+--------+--------+ | ID | Name | Status | +--------------------------------------+--------+--------+ | 3eda7-asdd6-4639-a001-asdfbasdff4563 | cirros | active | +--------------------------------------+--------+--------+
Para obtener la lista predeterminada de sabores (flavors):
microstack.openstack flavor list
Salida de Ejemplo del comando anterior
+----+-----------+-------+------+-----------+-------+-----------+
| ID | Name | RAM | Disk | Ephemeral | VCPUs | Is Public |
+----+-----------+-------+------+-----------+-------+-----------+
| 1 | m1.tiny | 512 | 1 | 0 | 1 | True |
| 2 | m1.small | 2048 | 20 | 0 | 1 | True |
| 3 | m1.medium | 4096 | 20 | 0 | 2 | True |
| 4 | m1.large | 8192 | 20 | 0 | 4 | True |
| 5 | m1.xlarge | 16384 | 20 | 0 | 8 | True |
+----+-----------+-------+------+-----------+-------+-----------+Crear una instancia
Los comandos de esta sección se pueden ejecutar tanto en el nodo de control como en un nodo de cómputo.
MicroStack viene con un práctico comando de creación de instancias llamado "microstack launch". Utiliza los siguientes valores predeterminados para sus instancias:
- Par de claves 'microstack'.
- Sabor 'm1.tiny'.
- Dirección IP flotante en la subred '10.20.20.0/24'.
La instancia se creará en un nodo de cómputo que el nodo creador ve como una zona de disponibilidad, que a su vez se basa en los nombres de los hipervisores.
Para obtener la lista de hipervisores:
microstack.openstack hypervisor list
Salida de Ejemplo del comando anterior
+----+------------------------------------------+-----------------+-----------+-------+
| ID | Hypervisor Hostname | Hypervisor Type | Host IP | State |
+----+------------------------------------------+-----------------+-----------+-------+
| 1 | pmatulis-ss-mstack-1.project.serverstack | QEMU | 10.5.0.41 | up |
| 2 | pmatulis-ss-mstack-2.project.serverstack | QEMU | 10.5.0.6 | up |
+----+------------------------------------------+-----------------+-----------+-------+Debería haber al menos dos. Uno que está incluido con el nodo de control y uno para cada nodo de cómputo.
Importante:
Para crear una instancia desde un nodo de cómputo, primero deberás importar manualmente un par de claves de OpenStack (es decir, usar el comando ssh-keygen y microstack.openstack keypair create).
Desde el nodo de control, para crear una instancia (en el hipervisor 'pmatulis-ss-mstack-2') llamada 'test' basada en la imagen 'cirros':
microstack launch cirros --name test --availability-zone nova:pmatulis-ss-mstack-2.project.serverstack
El comando microstack launch también admite los argumentos --key, --flavor, --image y --net-id, en cuyo caso deberás crear objetos usando el cliente estándar si se desean valores no predeterminados.
Nota: El comando launch se puede reemplazar con el comando tradicional microstack.openstack server create.
Conectar a la instancia
La salida del comando microstack launch incluye toda la información necesaria para conectarse a la instancia a través de SSH:
Creating local "microstack" ssh key at /home/ubuntu/snap/microstack/common/.ssh/id_microstack
Launching server ...
Allocating floating ip ...
Server test launched! (status is BUILD)
Access it with `ssh -i /home/ubuntu/snap/microstack/common/.ssh/id_microstack cirros@10.20.20.204`Importante: Al conectarse a la instancia a través de SSH desde un nodo de cómputo, será necesario configurar los grupos de seguridad de OpenStack.
Desde el nodo de control, acceda a la instancia utilizando la clave SSH privada asociada al par de claves predeterminado:
ssh -i /home/ubuntu/snap/microstack/common/.ssh/id_microstack cirros@10.20.20.204
Note:
Si recibe un mensaje de error como sign_and_send_pubkey: no mutual signature supported Entocnes necesitas usar la option de ssh PubkeyAcceptedKeyTypes que permite los tipos de llaves antiguas. Complete el comando como lo muestro: ssh -o "PubkeyAcceptedKeyTypes +ssh-rsa" -i /home/ubuntu/snap/microstack/common/.ssh/id_microstack cirros@10.20.20.204
Acceso al panel de control (Horizon dashboard openstack) de la nube
Puedes acceder al panel haciendo log in en la interfaz de uusario web desde tu navegador con la siguientes URL:
https://10.20.20.1
Para obtener la contraseña del usuario admin debe ejecutar el siguiente comando
sudo snap get microstack config.credentials.keystone-password
Contraseña de ejemplo
OXU4zZWCASRGASDF3sdaFDSfasXioKUna vez iniciada la seccion en el portal de Horizon, deberias ver dos hipervisores y una instancia corriendo en el hipervisor "pmatulis-ss-mstack-2.project.serverstack"
Para aprender mas sobre MicroStack, visita la pagina https://microstack.run.