di.png

Resumen

OpenStack-DI es el servicio de Infraestructura como servicio (IaaS) del Departamento de Informática de la Universidad de Almería. Actualmente ofrece servicios de máquinas virtuales, almacenamiento como servicio (almacenamiento de bloques y volúmenes NFS) y balanceadores como servicio.

OpenStack-DI además, es el soporte para el resto de servicios cloud del Departamento (Cloud-DI), como son servidores virtuales para almacenamiento de archivos, gestión de proyectos, control de versiones, automatización de tareas y autenticación de usuarios.

Objetivo
  • Ofrecer Infraestructura como servicio de apoyo a docencia e investigación.

1. Servicios que ofrece OpenStack-DI

OpenStack-DI es el proyecto de Cloud-DI que ofrece Infraestructura como servicio. Pese a ser el proyecto de base sobre el que se sustenta el cloud del Departamento de Informática, lo consideramos como un componente más.

Actualmente, OpenStack-DI ofrece:

  • Servicios para la creación de Máquinas y laboratorios virtuales.

  • Servicios de Almacenamiento, tanto de bloques como volúmenes NFS.

  • Balanceadores como servicio.

2. Servicios que ofrece Cloud-DI

Algunos de los servidores del Departamento de Informática, como los de control de versiones y gestión de proyectos, son realmente máquinas virtuales creadas dentro de OpenStack-DI.

3. Infraestructura de OpenStack-DI

3.1. Plataforma de producción

  • Servidores de cómputo: 16

  • RAM disponible: 3 TB

  • Núcleos: 512

  • Espacio disponible para instancias: 42,8 TB

  • Almacenamiento disponible para volúmenes: 21,7 TB

3.2. Plataforma de pruebas

  • Servidores de cómputo: 3

  • RAM disponible: 94,2 GB

  • Núcleos: 48

  • Espacio disponible para instancias: 1.9 TB

  • Almacenamiento disponible para volúmenes: 10,8 TB

  • Almacenamiento de objetos

  • Almacenamiento de archivos compartido

4. Acceso a Cloud-DI

Todos los recursos de Cloud-DI, ya sean de OpenStack-DI, o servidores de apoyo a docencia de Cloud-DI, sólo son accesibles desde la red de la UAL.

Para el acceso a los recursos de Cloud-DI desde fuera de la UAL será necesario usar una conexión VPN. Consulta vpn.ual.es para configurar tu acceso a la VPN de la UAL.

5. Primeros pasos en OpenStack-DI

Para utilizar OpenStack-DI es necesario disponer de una cuenta de usuario. El acceso sólo está permitido desde la red de la UAL. El acceso desde fuera de la UAL se realizará mediante VPN.

5.1. Solicitud de cuenta de usuario

  1. Solicita a clouddi@ual.es tu acceso a OpenStack-DI. Te proporcionarán un dominio, un login y un password de acceso.

  2. Introduce tus credenciales en openstack.di.ual.es. Una vez dentro del sistema tendrás acceso a un _proyecto OpenStack.

    Un proyecto OpenStack es un conjunto de recursos disponible para uno o más usuarios. Ejemplos de recursos básicos son los núcleos de procesador (VCPU), RAM o espacio de almacenamiento.

    De forma predeterminada cada usuario tiene un proyecto. No obstante, un mismo usuario puede ser miembro de más de un proyecto (p.e. Laboratorio ARSO, TIC-211, Laboratorio Sistemas de Información)

5.2. Cambio de la contraseña

Para cambiar la clave proporcionada despliega el menú de las opciones del usuario conectado situado en la parte superior derecha y selecciona Settings.

Settings.png

Se desplegará un menú en la izquierda. A continuación, selecciona Change password.

ChangePassword.png

5.3. Generación de claves SSH

Las claves SSH ofrecen una forma más segura de conexión remota ya que evitan la introducción de usuario y contraseña en los inicios de sesión, reduciendo el riesgo de ataques de fuerza bruta para descubrimiento de contraseñas. Además, suponen una opción más cómoda de inicio de sesión, ya que evitan el recordar las contraseñas en cada conexión.

Las claves SSH se generan en pares, dando lugar a la clave privada y a la clave pública. La clave privada ha de ser protegida y no debe ser compartida con nadie. La clave pública puede ser compartida libremente y se insertará en las instancias en el momento de su creación.

Para generar un par de claves SSH, ejecuta el comando siguiente en una terminal Linux o Mac. Para usuarios Windows se recomienda usar Git for Windows, disponible al instalar Git.

ssh-keygen

Si no indicamos otro nombre, esto genera dos archivos con los nombres id_rsa e id_rsa.pub que se almacenarán en la carpeta home del usuario en la rutas:

  • Clave privada: /home/user/.ssh/id_rsa

  • Clave pública: /home/user/.ssh/id_rsa.pub

También se pedirá la introducción de una contraseña para el uso del par de claves. Por ahora, lo dejaremos sin contraseña.

5.4. Registra tus claves SSH

Para el acceso SSH a máquinas virtuales Linux es necesario registrar la clave SSH pública en la cuenta de usuario OpenStack. Las clave pública SSH será inyectada a las instancias creadas en el proceso de inicialización.

  1. Inicia sesión en OpenStack-DI (openstack.di.ual.es).

  2. En el menú de la izquierda selecciona Project | Compute | Key Pairs

  3. Si dispones de una clave SSH, pulsa el botón Import Key Pair. En el formulario, introduce en Key Pair Name el nombre que quieres asignar a tu clave pública en OpenStack y pega tu clave pública en el cuadro de texto Public Key.

    ImportKeyPair.png

    En el mismo formulario de importación de claves SSH aparecen los pasos a seguir en sistemas Linux o Mac para crear tu clave SSH. También puedes usar esos comandos en sistemas Windows si tienes instalado un emulador BASH como Git Bash

    Si eres usuario de Windows, se recomienda instala Git for Windows. Este software, además de instalar Git para control de versiones, instalará Git BASH en tu sistema, un emulador BASH que te será muy útil para la conexión SSH a máquinas virtuales Linux desde tu sistema Windows.

  4. Si no dispones de una clave SSH o bien no quieres o no puedes generarla, OpenStack puede crear tu par de claves. Para crear tu par de claves desde OpenStack pulsa el botón Create Key Pair. Introduce en el formulario el nombre que quieras a dar a tu clave SSH.

    CreateKeyPair.png

    A continuación, pulsa el botón Create Key Pair. Descarga la clave generada.

    DownloadKeyPair.png

5.5. Configuración de las Reglas de seguridad

En OpenStack, cada proyecto tiene sus propias reglas de seguridad, y funcionan a modo de cortafuegos sobre las instancias definidas en el proyecto.

De forma predeterminada, las instancias creadas no se pueden comunicar con el exterior. Configura las reglas de seguridad (p.e. abriendo los puertos SSH, RDP para escritorio remoto de Windows, HTTP para servidores web, …​) de tu proyecto para que se pueda acceder de forma adecuada a las instancias.

La configuración básica de las reglas de seguridad se puede realizar en el menú Project | Network | Security Groups. Desde ahí podrás configurar las reglas predeterminadas (default) para todas las máquinas virtuales de un proyecto o crear nuevos grupos de seguridad con reglas específicas.

Pulsando el botón Manage Rules accedemos a las reglas de seguridad predeterminadas (default) de este proyecto. Por tanto, las máquinas virtuales creadas en este proyecto a las que se apliquen las reglas de seguridad default tendrían abierta la comunicación de acuerdo con las reglas indicadas en el grupo de seguridad.

Grupos de seguridad

De forma predeterminada, el grupo de seguridad default no incorpora ninguna regla de seguridad. Hasta que no se le añadan reglas de seguridad, o se creeen grupos de seguridad que añadan reglas de seguridad, no será posible establecer comunicación con las instancias creadas.

Pulsa el botón Add Rule para añadir reglas de seguridad. En el formulario selecciona la regla de seguridad aplicable a las instancias.

AddRule.png

Reglas se seguridad básicas:

  • RDP (puerto 3389): Acceso de Escritorio remoto. Util para conexión a instancias Windows.

  • HTTP (puerto 80): Util para aplicaciones web con servidor Apache.

  • SSH (puerto 22): Para establecer una conexión SSH. Util para conexión a la terminal de instancias Linux.

Grupos de seguridad

El STIC sólo tiene abiertos en la red Cloud-DI los puertos 80 (HHTP), 22 (SSH) y 3389 (RDP) para la conexión VPN. No podrás establecer conexiones a otros puertos desde fuera de la UAL aunque estés usando la conexión VPN.

Consulta la guía de uso oficial de OpenStack

Para más información sobre la configuración del acceso y seguridad de las instancias consulta la Guía de uso oficial de OpenStack

5.6. Creación de una máquina virtual

Puedes crear una máquina virtual seleccionando Project | Compute | Instances y pulsando el botón Launch instance.

LaunchInstanceButton.png

En el asistente deberás proporcionar:

  • Paso 1: Nombre de la instancia y cantidad de instancias a crear. La zona de disponibilidad siempre es nova. El formulario también muestra el total de instancias (máquinas virtuales) creadas y disponibles.

LaunchInstanceDetails.png
  • Paso 2: En la fuente, selecciona Image o Image snapshot dependiendo de si quieres crear una instancia a partir de una imagen limpia o de un snapshot, respectivamente. La selección de la imagen base para la instancia se realizará a partir del cuadro inferior, el cual se podrá filtrar introduciendo en el cuadro de búsqueda alguno de los caracteres del nombre de la imagen.

Las imágenes de Windows y de XUbuntu están disponibles como Image snapshot, no como Image.

Desactiva la creación de un nuevo volumen asociado a la instancia. Si más adelante necesitas crear uno o más volúmenes para tu instancia, podrás crearlos desde el menú de volúmenes (Project | Compute | Volumes).

Selección de una imagen base para la instancia
  • Paso 3. Sabor de las instancias creadas. OpenStack denomina sabor a un conjunto de propiedades que representan las características hardware de las instancias a crear (número de cores, RAM, espacio de disco). Selecciona un sabor adecuado para la instancia a crear.

LaunchInstanceFlavor.png

Una señal de advertencia puede estar indicando un sabor demasiado pequeño para la instancia a crear o una superación de la cuota de los recursos del proyecto.

  • Paso 4. Red a la que conectar la instancia creada. Seleccionar entre las redes disponibles la red a la que conectar la máquina virtual. Normalmente, conectaremos la instancia en la red del proyecto, aunque es posible conectarla a cualquier otra red que tengamos creada.

LaunchInstanceNetworks.png
  • Paso 5. Selección de grupos de seguridad. Los grupos seleccionados estableceran los puertos y el tipo de comunicación permitida con la instancia creada. Selecciona todos los grupos de seguridad aplicables a la instancia creada.

LaunchInstanceSecurityGroups.png
  • Paso 6. Selección de la clave pública. Para instancias Linux deberemos seleccionar la clave pública a inyectar a la instancia creada. Dicha clave será la que se emparejará con nuestra clave privada local en el momento de la conexión SSH.

LaunchInstanceKeyPair.png

Pulsar el botón Launch Instance para proceder a la creación de la instancia. Tras unos instantes la instancia estará creada y disponible para su uso.

En máquinas Windows no es necesario inyectar la clave pública.

Consulta la guía de uso oficial de OpenStack

Para más información sobre la creación de instancias consulta la Guía de uso oficial de OpenStack

5.7. Iniciar, reiniciar y apagar una máquina virtual

Puedes iniciar, reiniciar y apagar una máquina virtual desplegando las acciones que aparecen a su lado en el listado de instancias del proyecto Project | Compute | Instances.

  • Iniciar instancia: Start Instance

  • Apagar instancia: Shutoff Instance

  • Reiniciar instancia: Soft Reboot Instance o Hard Reboot Instance

No confundir Shutoff Instance con Delete Instance. Shutoff instance apaga la instancia. En cambio, Delete Instance la elimina y lo perderemos todo.

5.8. Asignación de IP flotante

Las instancias creadas son conectadas a una de las redes privadas de un proyecto OpensStack. Inicialmente, es posible la comunicación entre las instancias de dicha red. Pero de forma predeterminada, no es posible la conexión a la instancia creada desde nuestro equipo de trabajo, o en general, desde otro equipo que esté fuera de la red del proyecto en el que se ha creado la máquina virtual.

Podemos ver la instancia creada y conectada a la red del proyecto en el menú Project | Network | Network Topology.

NetworkTopology.png

Las IPs flotantes son la base para la comunicación con la instancia desde el exterior. Nuestro proyecto tiene una cuota de IPs flotantes y deberemos gestionarlas de forma eficiente.

Para asignar una IP flotante a una instancia, mostrar en primer lugar la lista de instancias (Project | Compute | Instances). A continuación, seleccionar Associate Floating IP en el menú desplegable de la instancia.

AssociateFloatingIP.png

En el formulario, pulsar el botón + para pedir una IP flotante.

ManageFloatingIPAssociations.png

El formulario siguiente muestra la red que propocionará las IPs flotantes (ext-net), que es la red que el STIC proporciona a Cloud-DI. En este formulario pulsaremos el botón Allocate IP.

AllocateFloatingIP.png

El STIC tiene reservada la red 192.168.64.0/21 para Cloud-DI. Cloud-DI Team ha reservado un pequeño conjunto de estas IPs para la gestión del propio cloud, quedando como pool de direcciones IPs disponibles desde 192.168.64.21 hasta 192.168.71.255, lo que supone más de 2000 direcciones IP para máquinas virtuales.

De vuelta al formulario, se mostrará la IP flotante asignada de la red ext-net. Pulsar el botón Associate.

AssignedFloatingIP.png

Ahora la instancia aparecerá con la IP flotante asignada, la cual podremos usar para conectarnos a ella desde fuera de la red privada de OpenStack en la que se creó.

InstanceWithFloatingIP.png

5.9. Conexión a la máquina virtual

Una vez creada la máquina virtual y asignada una IP flotante en el caso de que queramos conectarnos a ella desde una red diferente a la que fue creada, usaremos un cliente para conectarnos a ella usando un cliente.

Table 1. Clientes habituales de conexión a máquinas virtuales
Sistema operativo Uso Cliente recomendado

Linux

Terminal

Terminal

Linux con Interfaz gráfica

X2Go

Máquina Windows

Remmina

Mac

Terminal

Terminal

Linux con Interfaz gráfica

X2Go

Máquina Windows

Microsoft Remote Desktop

Windows

Terminal

Git BASH, Putty

Linux Interfaz gráfica

X2Go

Máquina Windows

Cliente de escritorio remoto

6. Imágenes disponibles en OpenStack-DI

Actualmente están disponibles las imágenes siguientes en OpenStack-DI:

Table 2. Imágenes en OpenStack-DI y modos de acceso
Image Login Modo de acceso

Ubuntu 16.04 LTS y Ubuntu 18.04 LTS

ubuntu

Key Pair

CentOS 6 y Centos 7

centos

Key Pair

Fedora 27

fedora

Key Pair

cirros

cirros

Key Pair

Windows Server 2012 R2

Administrator

Contraseña

Contacta con clouddi@ual.es para obtener la contraseña para instancias en las que el modo de acceso no sea con Key Pair.

6.1. Subir una imagen

Normalmente la subida de imágenes es una tarea que se debe dejar a los técnicos de OpenStack-DI. No obstante, si se trata de imágenes sin interés para uso general, se pueden seguir estos pasos para tener una imagen disponible en el proyecto personal.

Las imágenes se subirán en formato QCOW2 y OpenStack matiene una página con enlaces a descargas de imágenes configuradas para ejecutarse en modo cloud (con el paquete cloud-init, soporte para el acceso mediante claves SSH e inyección de datos de usuario.

  1. Inicia sesión en OpenStack-DI.

  2. Selecciona el proyecto en el que crear la imagen.

  3. En el menú de la izquierda selecciona Project | Compute | Images.

  4. Pulsa el botón Create Image.

  5. En el formulario completa los datos siguientes:

    • Nombre de la imagen (p.e. openSsure Leap 15.1).

    • `Image Source: Introduce el archivo con la imagen descargada.

    • Format: Seleccionar QCOW2.

    • Protected: Indica si las configuraciones establecidas en Rawdisk, Minimum Disk, Minimum RAM pueden ser modificadas por otros usarios a los que le diéramos permiso de uso sobres esta imagen en el caso de hacerla pública.

  6. Tras pulsar Create Image se procederá a la subida y creación de la imagen.

La imagen aparecerá tras unos instantes en la lista de imágenes disponibles.

6.2. Proteger/Desproteger una imagen

En una imagen se puede proteger la configuración de parámetros como RAM y disco mínimo para poder crear instancias a partir de ella. Una imagen protegida impedirá que otros usuarios puedan modificar estos valores.

  1. Inicia sesión en OpenStack-DI.

  2. Selecciona el proyecto en el que proteger la imagen.

  3. En el menú de la izquierda selecciona Project | Compute | Images.

  4. Selecciona la imagen a proteger, despliega el listbox de Actions y selecciona Edit Image.

  5. Pulsa en los botones Yes | No de Protected en Image Sharing.

  6. Aplica los cambios pulsando el botón Update Image.

6.3. Crear snapshot de una instancia

Un snapshot es una imagen creada a partir del estado del disco de una instancia a modo de fotografía de una instancia. El snapshot creado puede ser usado posteriormente para crear nuevas instancias, lo que lo hace una buena opción para la distribución de instancias con software preinstalado y configuraciones aplicadas.

  1. Inicia sesión en OpenStack-SI.

  2. Selecciona el proyecto en el que crear el snapshot.

  3. En el menú de la izquierda selecciona Project | Compute | Instances.

  4. Selecciona la instancia a la que crear el snapshot y selecciona Create Snapshot en el listbox de Actions de la instancia.

Tras unos instantes, el snapshot estará creado y listo para ser replicado.

Los snapshots no son etiquetados como imágenes, sino como snapshot images Es importante tener esto en cuenta porque a la hora de crear una instanncia a a partir de ellos, habrá que seleccionar snapshot images como origen de la instancia en el Asistente para la creación de instancias.

No obstante, esto se puede modificar cambiando los metadatos del snapshot, cambiando los valores de las propiedades image_location e image_type de snapshot por image.

7. Uso de volúmenes en OpenStack-DI

OpenStack ofrece un servicio de almacenamiento de bloques, lo que nos permite poder crear volúmenes y conectarlos a máquinas virtuales. Los volúmenes nos dan almacenamiento persistente, entendido como que el volumen se conserva a pesar de que se elimine la máquina virtual a la que está conectado.

7.1. Creación de un volumen

  1. Inicia sesión en OpenStack-DI.

  2. Selecciona el proyecto en el que crear el volumen.

  3. En el menú de la izquierda selecciona Project | Compute | Volumes.

  4. En la pestaña Volumes pulsa el botón Create Volume.

    CreateVolumeButton.png
  5. En el formulario introduce los valores para el nombre del volumen y el tamaño.

    CreateVolume.png
  6. Pulsa el botón Create Volume.

Tras unos instantes el volumen aparecerá en la lista de volúmenes creados y disponible para ser conectado a una instancia.

7.2. Conexión de un volumen a una instancia

Una vez creado un volumen, éste puede ser conectado a una instancia.

Un volumen sólo puede estar conectado a una instancia. Para conectarlo a otra instancia, el volumen tendrá que ser desconectado previamente.

  1. Inicia sesión en OpenStack-DI.

  2. Selecciona el proyecto en el que crear el volumen.

  3. En el menú de la izquierda selecciona Project | Compute | Volumes.

  4. En la pestaña Volumes selecciona el volumen que quieras conectar a una instancia, despliega el listbox de Actions y selecciona Manage Attachments.

    ManageAttachmentsOption.png
  5. Selecciona en el formulario la instancia a la que conectar el volumen.

ManageVolumeAttachments.png

Tras unos instantes el volumen aparecerá conectado a la instancia indicando que está en uso y el dispositivo en el que está disponible.

VolumeAttached.png

A continuación sigue los pasos del sistema operativo en el que se haya conectado el volumen para inicializarlo (crear tabla de particiones, formatear, montar, …​)

Consulta la guía de uso oficial de OpenStack

Para más información sobre la creación y administración de volúmenes consulta la Guía de uso oficial de OpenStack

7.3. Desconexión de un volumen

  1. Inicia sesión en OpenStack-DI.

  2. Selecciona el proyecto en el que está el volumen a desconectar.

  3. En el menú de la izquierda selecciona Project | Volumes.

  4. En la pestaña Volumes selecciona el volumen que quieras desconectar a una instancia, despliega el listbox de Actions y selecciona Manage Attachments.

  5. Pulsa el botón Detach Volume para desconectar el volumen de la instancia

DetachVolume.png

A continuación aparecerá un cuadro de diálogo de confirmación. Pulsar el botón Detach Volume para liberar el volumen de la instancia.

DetachVolumeConfirm.png

7.4. Extender un volumen

  1. Inicia sesión en OpenStack-DI.

  2. Selecciona el proyecto en el que está el volumen a desconectar.

  3. En el menú de la izquierda selecciona Project | Volumes.

    Desconecta el volumen antes de ampliarlo.

  4. En la pestaña Volumes selecciona el volumen que quieras extender, despliega el listbox de Actions y selecciona Extend Volume.

  5. Configura el nuevo tamaño del volumen en el formulario.

ExtendVolume.png

7.5. Transferir un volumen a otro proyecto

Un volumen sólo se puede utilizar en el proyecto al que pertence, pudiendo intercambiarse entre las distintas máquinas virtuales del proyecto. Sin embargo, hay situaciones en las que estamos interesados en usar un volumen en una instancia que tenemos en otro proyecto, o transferir el volumen a otro usuario de OpenStack-DI. Esta operación es la que se conoce como Transferir un volumen en OpenStack.

Para transferir un volumen, éste ha de estar desconectado. Consulta la sección Desconexión de un volumen

  1. Inicia sesión en OpenStack-DI.

  2. Selecciona el proyecto en el que crear el volumen.

  3. En el menú de la izquierda selecciona Project | Compute | Volumes.

  4. En la pestaña Volumes selecciona el volumen que quieras transferir, despliega el listbox de Actions y selecciona Create Transfer.

    CreateTransferOption.png
  5. Introduce un nombre significativo de la transferencia para que pueda ser identificado claramente por otras personas en el caso de que se vaya a transferir el volumen a otro usuario OpenStack.

    CreateVolumeTransfer.png
  6. Pulsa el botón Create Volume Transfer. Como resultado se nos mostrará un ID de transferencia y una clave de autorización que debemos conservar para poder completar el proceso de transferencia del volumen.

    VolumeTransferDetails.png
  7. Descargar el arvhivo con los datos de la transferencia pulsando el botón Download transfer credentials. El volumen quedará pendiente de que se complete el proceso aceptando la transferencia.

    AwaitingTransfer.png
  8. En el proyecto de destino de la transferencia pulsar el botón Accept Transfer.

  9. Introducir en el formulario los valores de ID de transferencia y Clave de autorización que descargamos en el archivo de credenciales de la transferencia

    AcceptVolumeTransfer.png
  10. Pulsar el botón Accept Volume Transfer. El volumen aparecerá transferido en la lista de volúmenes disponibles del proyecto de destino.

8. Aprovisionamiento de una instancia durante la creación

Al crear una instancia en OpenStack-DI es posible aprovisionarla (configurarla) durante su proceso de creación. De esta forma, nuestras instancias ya tendrán instalados y configurados los paquetes necesarios.

La configuración de una instancia se realiza en el paso de Configuration del asistente. Básicamente, hay que incluir un sript bash en el cuadro de texto Customization Script tal y como muestra la figura siguiente.

configuracion.png

A continuacion, se muestra el script de configuración de Docker CE en una instancia Ubuntu durante su creación.

8.1. Creación de una instancia con acceso mediante login y password

Durante lo creación de una instancia introduce el código siguiente en el cuadro de texto Customization Script del paso Configuration del asistente de creación de instancias.

InstanceConfiguration.png

Recuerda cambiar la contraseña de la línea 2.

9. Almacenamiento compartido de archivos (NFS)

OpenStack-DI permite la creación de volúmenes NFS y ser compartidos por varias instancias. Los volúmenes NFS nos dan almacenamiento persistente, de forma que el volumen se conserva a pesar de que se eliminen las máquinas virtuales a las que esté conectado.

9.1. Creación de un volumen NFS

  1. Inicia sesión en OpenStack-DI.

  2. Selecciona el proyecto en el que crear el volumen.

  3. En el menú de la izquierda selecciona Project | Compute | Shares.

  4. En en submenú Shares pulsa el botón Create Share.

    CreateShareButton.png
  5. En el formulario introduce los valores para el nombre del volumen NFS, el tamaño y el tipo de volumen NFS (default_share_type). Mantener NFS como protocolo.

    CreateShare.png
  6. Pulsa el botón Create.

Tras unos instantes, el volumen NFS aparecerá en la lista de volúmenes creados y disponible para ser conectado a las instancias necesarias.

9.2. Configuración de las reglas de acceso

Una vez creado un volumen NFS, hay que configurar las reglas de acceso que permiten su uso desde las distintas instancias que lo tengan conectado.

Es posible definir reglas de acceso diferentes para cada instancia (p.e. una instancia tiene acceso de lectura/escritura mientras que el resto sólo lo tienen de lectura).

  1. Inicia sesión en OpenStack-DI.

  2. Selecciona el proyecto en el está creado el volumen.

  3. En el menú de la izquierda selecciona Project | Compute | Shares.

  4. En en submenú Shares selecciona el volumen NFS que quieras configurar, despliega el listbox Actions y selecciona Manage Rules.

    SelectManageRules.png
  5. Pulsa el botón Add Rule

  6. Completa el formulario Add Rule con las reglas de acceso al volumen NFS. A continuación se muestra cómo dar acceso de lectura/escritura vía IP a la dirección IP 192.168.67.2.

    AddShareRule.png
  7. Pulsar Add para definir la regla de acceso.

Aparerá la regla definida para el volumen NFS.

ShareRuleDefined.png

Las reglas no se pueden modificar. Habrá que eliminarla y volver a crearla de nuevo

Para dar acceso a varias máquinas virtuales, basta con añadir nuevas reglas indicando la IP el nivel de acceso deseado.

9.3. Conexión de un volumen NFS a una instancia

Una vez definidas las reglas de acceso a un volumen NFS procederemos a conectarlo a una instancia.

  1. Inicia sesión en OpenStack-DI.

  2. Selecciona el proyecto en el que está creado el volumen NFS.

  3. En el menú de la izquierda selecciona Project | Compute | Share.

  4. En el submenú Shares haz clic sobre el nombre volumen NFS que quieras conectar a una instancia.

  5. En la página aparecen los detalles definidos con las reglas de acceso. Copia el valor de Path. Este será el valor que usaremos en las instancias que monten este volumen.

    ShareDetails.png
  6. Selecciona en el formulario la instancia a la que conectar el volumen y después pulsa el botón Attach Volume

A continuación sigue los pasos del sistema operativo en el que se haya conectado el volumen para inicializarlo y usarlo (crear tabla de particiones, formatear, montar, …​)

Example 1. Conexión de un volumen NFS en Ubuntu
$ sudo apt install -y nfs-common (1)
$ sudo mkdir /mnt/proyectos (2)
$ sudo mount 192.168.64.17:/var/lib/manila/mnt/share-29ffbd8a-b1bc-403d-94b0-8b3f991aa0a4 /mnt/proyectos (3)
1 Instalación de paquetes NFS
2 Creación del directorio donde montar el volumen NFS
3 Montar el volumen NFS en el directorio creado usando el path devuelto en las propiedades del volumen NFS.

Podemos comprobar que el volumen está creado

VolumenNFSMontado.png
Consulta la guía de uso oficial de OpenStack

Para más información sobre la creación y administración de volúmenes NFS consulta la Guía de uso oficial de OpenStack

9.4. Extender un volumen NFS

Los volúmenes NFS pueden ser extendidos y esta operación se puede hacer en caliente, sin necesidad de desconectar el volumen previamente.

  1. Inicia sesión en OpenStack-DI.

  2. Selecciona el proyecto en el que está creado el volumen NFS.

  3. En el menú de la izquierda selecciona Project | Compute | Share.

  4. En el submenú Shares despliega el menú Actions del volumen NFS que quieras extender y selecciona Extend Share.

  5. Define el nuevo tamaño del volumen y pulsa el botón Extend.

    ExtendShare.png

Se puede comprobar que, tras extender el volumen, el espacio aparece disponible de inmediato.

VolumenNFSExtendido.png

9.5. Eliminar un volumen NFS

  1. Inicia sesión en OpenStack-DI.

  2. Selecciona el proyecto en el que está creado el volumen NFS.

  3. En el menú de la izquierda selecciona Project | Compute | Share.

  4. Asegúrate que no hay instancias que estén usando el volumen NFS a eliminar.

  5. En el submenú Shares despliega el menú Actions del volumen NFS que quieras eliminar y selecciona Delete Share.

  6. Confirma su eliminación en el cuadro de diálogo.

10. Balanceadores como servicio (LBaaS)

OpenStack-DI ofrece un servicio muy interesante para poder crear balanceadores de carga. Los balanceadores definidos podrán distribuir las peticiones entre cada uno de los miembros del conjunto de recursos balanceados. LBaaS nos pemitirá definir varios pools de recursos, cada uno con sus miembros. En cada pool se establecerá una política o método de balanceo a elegir entre least connections, round robin o source ip.

Para ilustrar su uso partimos de dos servidores Apache instalados en dos máquinas virtuales diferentes. Crearemos un balanceador con política de round robin.

10.1. Creación de un balanceador

  1. Inicia sesión en OpenStack-DI.

  2. Selecciona el proyecto en el que crear el balanceador.

  3. En el menú de la izquierda selecciona Project | Network | Neutron Load Balancers.

  4. Pulsa el botón Create Load Balancer.

CreateLoadBalancerButton.png

10.1.1. Paso 1. Configurar los detalles del balanceador

En este paso estableceremos el nombre del balanceador y la red (p.e. la red del proyecto) donde se encuentran los recursos a balancear.

LoadBalancerDetails.png

10.1.2. Paso 2. Configurar los detalles del listener

El listener es el proceso que se encargar de comprobar las peticiones de acuerdo con el puerto y el protocolo que se configure.

Para nuestro ejemplo configuraremos el protocolo HTTP y el puerto 80 y dejaremos el nombre de listener predeterminado.

ListenerDetails.png

10.1.3. Paso 3. Configurar el método de balanceo del pool

El pool contiene la lista de miembros que sirven contenido a través del balanceador. En este paso se define el método que se utilizará para balancear eligiendo entre least connections, round robin o source ip.

Para nuestro ejemplo usaremos el método round robin y dejaremos el nombre de pool predeterminado.

PoolDetails.png

10.1.4. Paso 4. Configurar los miembros del pool

En este paso añadiremos los miembros del pool, que en nuestro caso serán los dos servidores Apache. Para ello, se pulsa el botón Add del grupo de Available Instances sobre cada miembro que se quiera incorporar al pool. Los miembros seleccionados quedarán en el grupo Allocated Members.

También tendremos que definir el puerto de acceso a los miembros del pool. En nuestro caso será el 80.

PoolMembers.png

10.1.5. Paso 5. Configurar el monitor del pool

Puede ocurrir que algunos miembros del pool dejen de estar disponibles en cualquier momento. Para evitar dirigir peticiones a miembros no disponibles, se define un monitor, que comprueba periódicamente el estado de los miembros. Cuando un miembro deja de contestar se retira del pool hasta que no vuelva a estar disponible.

En este paso configuramos el tipo de monitorización (HTTP, ping o TCP), la cadencia de la monitorización, timeout y el número de intentos antes de descartar del pool a un miembro.

En nuestro ejemplo, elegiremos HTTP, lo que nos permitirá configurar otros parámetros específicos. como el método HTTP usado para la monitorización (p.e. GET), el código HTTP devuelto (p.e. 200) y el path pra la prueba (/).

MonitorDetails.png

Por último, pulsaremos el botón Create Load Balancer del asistente para proceder a crear el balanceador. En Horizon aparecerán los datos del balanceador creado. Si recargamos la página también veremos el listener creado.

BalanceadorCreado.png

10.2. Configuración de una IP flotante para un balanceador

Definiremos una dirección IP flotante al balanceador, que actuará como la dirección IP de acceso a los recursos balanceados. En nuestro caso, será la IP de acceso a los dos servidores Apache.

LoadBalancerFloatingIP.png

En el cuadro de diálogo indicaremos de dónde obtener la IP flotante, que normalmente será de la red externa.

LoadBalancerRequestFloatingIP.png

Si hubiese direcciones IP flotantes libres en el proyecto, también apaecerían en desplegable de direcciones IP floatantes para el balanceador.

La dirección IP flotante asignada la podemos ver al hacer clic sobre el balanceador.

LoadBalancerConFloatingIP.png

10.3. Prueba del balanceador

Para probar el balanceador, cambiaremos las páginas de inicio de los dos servidores Apache de forma que podamos comprobar que se está haciendo correctamente el balanceo entre los miembros del pool.

En Ubuntu, la página de inicio de Apache2 está en /var/www/html/index.php.

A continuación, al ir accediendo a la dirección IP del balanceador comprobaremos que de forma alternativa irá balanceando sobre los dos servidores Apache de acuerdo con la política de balanceo definida.

ServidorApache1.png
ServidorApache2.png

10.4. Modificar el pool

Se pueden añadir o retirar miembros del pool de un balanceador. Tendremos que seguir estos pasos:

  1. Hacer clic sobre el balanceador en la lista de balanceadores disponibles.

  2. Hacer clic sobre el listener en la lista de listeners del balanceador.

  3. Hacer clic en Default Pool ID.

  4. Pulsar el botón Add/Remove Pool Members para añadir o eliminar los miembros del pool.

AddRemovePoolMembers.png

10.5. Eliminación de un balanceador

Un balanceador tiene una serie de objetos anidados en su interior (listener, pool y health monitor). Para eliminar el balanceador habrá que eliminar dichos objetos desde dentro hacia afuera.

Para ello, seguiremos estos pasos:

  1. Hacer clic sobre el balanceador en la lista de balanceadores disponibles.

  2. Hacer clic sobre el listener en la lista de listeners del balanceador.

  3. Hacer clic en Default Pool ID.

  4. Haz clic en el Health Monitor ID.

  5. Despliega el menú del monitor y selecciona Delete Health Monitor y confirma los cambios.

    DeleteHealthMonitor.png
  6. Despliega el menú del pool, selecciona Delete Pool y confirma los cambios.

  7. Despliega el menú del listener, selecciona Delete Listener y confirma los cambios.

  8. Despliega el menú del balanceador, selecciona Delete Load Balancer y confirma los cambios.

11. Networking

Normalmente, en OpenStack-DI los técnicos facilitan los proyectos con la infraestructura básica de red creada. Esta infraestructura básica consiste en una red para el proyecto a la que se conectarán las instancias creadas. Dicha red de proyecto se conectará a la red la UAL mediante un router virtual, que también se proporcionará configurado.

11.1. Configuración de la infraestructura básica de red de un proyecto

En OpenStack, la infraestructura básica de red para un proyecto consta de:

  • Red de proyecto

  • Router de proyecto conectado a red externa y a red de proyecto.

Hay que seguir los pasos siguientes para realizar dicha configuración:

11.2. Crear red de proyecto

  1. Inicia sesión en OpenStack-DI.

  2. En el menú de la izquierda selecciona Project | Network | Networks.

  3. Pulsa el botón Create Network

  4. En la ficha Network del asistente completa el nombre de la red siguiendo la plantilla nombre del proyecto seguido de -net. Mantener seleccionadas las opciones Enable Admin State y Create Subnet y dejar nova en Availability Zone Hints.

    CreateNetwork Name.png
  5. En la ficha Subnet del asistente completa el nombre de la subred siguiendo la plantilla nombre del proyecto seguido de -subnet. En Network Address introducir las direcciones de la red del proyecto en formato CIDR (p.e. `10.0.0.0/24). Dejar el resto con los valores predeterminados como se muestra en la figura.

    OpenStack-DI está configurado para que las redes de proyecto que se definan tienen que ser subredes de la red 10.0.0.0/8, definiendo un rango de direcciones comprendidas desde la 10.0.0.0 hasta la 10.255.255.255. Para la mayoría de los casos, una red 10.0.0.0/24 es el valor más adecuado para Network Address.

    CreateNetwork Subnet.png
  6. En la ficha Subnet Details del asistente deja activado Enable DHCP y configura los DNS que se proporcionarán a las instancias en esta red. Los DNS se introducen en DNS Name Servers introduciendo uno por línea en el caso de tener que introducir varios. Introduciremos al menos un DNS de la UAL (150.214.156.2).

    CreateNetwork SubnetDetails.png
  7. Pulsar Create en el asistente para crear la red.

Una vez creada la red del proyecto, hay que crear un router para conectarla a la red de la UAL de forma que las instancias de la red del proyecto tengan puedan estar conectadas a Internet. En la sección siguiente se explica cómo configurar el router del proyecto.

11.3. Crear router de proyecto

La red de proyecto tiene que conectarse a la red de la UAL a través de un router que crearemos a continuación.

  1. Inicia sesión en OpenStack-DI.

  2. En el menú de la izquierda selecciona Project | Network | Routers.

  3. Pulsa el botón Create Router

  4. En Router Name introduciremos el nombre del router siguiendo la plantilla nombre del proyecto seguido de -net (p,e. johndoe-net). Mantener seleccionada la opción Enable Admin State y dejar nova en Availability Zone Hints.

  5. En External Network seleccionar ext-net de la lista.

CreateRouter.png

Una vez creado el router del proyecto, falta conectarlo a la red del proyecto. Por ahora, sólo se encuentra conectado a la red de externa. Podemos comprobarlo si seleccionamos Project | Network | Network Topology.

NetworkTopologyUnfinished.png

En la sección siguiente se explica cómo terminar de configurar el router del proyecto conectándolo a la red del proyecto.

11.4. Añadir interfaz al router

Para terminar de configurar el router y la configuración de red del proyecto hay que añadir una segunda interfaz de red al router para conectarlo a la red del proyecto.

  1. Inicia sesión en OpenStack-DI.

  2. Puedes crear la segunda interfaz de red del router de cualquiera de estas dos formas:

    • En el menú de la izquierda selecciona Project | Network | Network Topology. Sitúa el ratón sobre el router y selecciona el botón Add Inteface

      NetworkTopology AddInterface Topology.png
    • En el menú de la izquierda selecciona Project | Network | Routers. Haz clic sobre el enlace del router. En la ficha Interfaces pulsa el botón Add Interface.

      NetworkTopology AddInterface Router.png
  3. En el formulario Add Interface selecciona la red del proyecto para que el router quede conectado a la red del proyecto a través de esta interfaz.

    AddInterface.png
  4. Pulsa el botón Submit para guardar los cambios.

Finalmente, podemos ver la red configurada en Project | Network | Network Topology.

NetworkTopologyFinished.png

12. Operaciones extendidas sobre instancias

12.1. Redimensionar una instancia

Si una instancia necesita ampliar los recursos iniciales con los que fue creada, podemos ampliarlos cambiándole el sabor (flavour).

Es importante que la instancia esté apagada antes de proceder a redimensionarla.

  1. Seleccionar Project | Compute | Instances

  2. Desplegar el menú de acciones de la instancia a mover y seleccionar Resize Instance.

  3. Seleccionar el nuevo sabor en el cuadro de diálogo.

    ResizeInstance.png
  4. Pulsar el botón Resize en el asistente.

  5. Tras la ampliación, pulsar el botón Confirm Resize/Migrate.

  6. Iniciar la instancia con su nuevo sabor pulsando el bótón Start Instance.

12.2. Añadir claves SSH

Hay ocasiones en las que queremos que en una instancia puedan iniciar sesión varios usuarios en una misma cuenta. Esto es especialmente útil para técnicos. En estas situaciones la instancia debe tener la clave pública de cada uno de los usuarios que vayan a acceder a ella. Esto lo podemos realizar propocionando las distintas claves públicas en el momento de la creación o a posteriori, una vez que la instancia está creada.

Acceder a la clave pública a incorporar (p.e. id_rsa.pub) con el comando siguiente

cat ~/.ssh/id_rsa.pub

12.2.1. Añadir varias claves SSH durante la creación de una instancia

Durante lo creación de una instancia, no añadas ninguna clave durante la creación de la instancia e introduce el código siguiente en el cuadro de texto Customization Script del paso Configuration del asistente de creación de instancias.

Crea un item en ssh_authorized_keys con la clave pública de cada uno de los usuarios que vayan a iniciar sesión en la instancia.

No introduzcas ninguna clave en el paso Key Pair del asistente. Añade todas las claves directamente en el paso Configuration.

12.2.2. Añadir nuevas claves SSH a una instancia existente

Edita el archivo ~/.ssh/authorized_keys y pega directamente al final del archivo las claves públicas a añadir.

13. Operaciones reservadas a técnicos de OpenStack-DI

13.1. Administración de usuarios

13.1.1. Restablecer contraseña

Para cambiar la contraseña de un usuario, seleccionar el proyecto admin y mostrar la lista de usuarios seleccionando Identity | Users.

En el menú de acciones del usuario, seleccionar Change Password y completar los nuevos valores en el formulario.

13.1.2. Desactivar/Activar usuario

Para desactivar temporalmente la cuenta de un usuario o volver a activarla, seleccionar el proyecto admin y mostrar la lista de usuarios seleccionando Identity | Users.

En el menú de acciones del usuario, seleccionar Disable User o Enable User.

13.1.3. Crear usuario

  1. Seleccionar el menú Identity | Users.

  2. Pulsar el botón Create user

  3. Completar los valores siguientes en el formulario

    1. User Name: Login de Campus Virtual

    2. Description: Nombre completo

    3. Correo electrónico: Dirección de correo electrónico

    4. Contraseña

    5. Mantener el rol user. Esto determinará los privilegios del usuario

    6. Si ya existe un proyecto al que vincular el usuario, seleccionarlo de la lista Primary Project. Si no, crearemos un proyecto nuevo sobre la marcha pulsando el botón + de la lista desplegable Primary Project.

    Crear un proyecto sobre la marcha abre el Asistente para la creación de proyectos. Consulta la sección Crear proyecto para más información.

  4. Pulsar el botón Create User para proceder a la creación del usuario.

13.1.4. Eliminar usuario

Para eliminar un usuario, seleccionar el proyecto admin y mostrar la lista de usuarios seleccionando Identity | Users.

En el menú de acciones del usuario, seleccionar Delete User y confirmar su eliminación en el cuadro de diálogo.

13.2. Mover instancia

Para mover una instancia del servidor en el que se encuentra a otro diferente, seguir los pasos siguientes desde el proyecto admin:

Es importante que la instancia esté apagada antes de proceder a cambiarla de servidor.

  1. Seleccionar Admin | Compute | Instances

  2. Desplegar el menú de acciones de la instancia a mover y seleccionar Migrate Instance.

    No confundir la acción Migrate Instance con Live Migrate Instance. Esta última está disponible en OpenStack-DI pero no tiene funcionalidad asociada por lo que no debe usarse.

  3. Tras unos instantes se pedirá que se confirme la migración a otro servidor

    ConfirmMigration.png
  4. Pulsar el botón Confirm Resize/Migrate.

  5. Una vez migrada la instancia a otro servidor, iniciar la instancia pulsando el bótón Hard Reboot Instance. La opción Start Instance de instancias de otros proyectos no está disponible para el usuario admin.

13.3. Convertir una imagen en pública

Las imágenes subidas por los usuarios son privadas y sólo son visibles en el proyecto en el que se han creado. Para convetirlas en públicas y que puedan ser usadas por otros usuarios, seguir estos pasos.

  1. Inicia sesión en OpenStack-DI.

  2. Comprobar que se está en el proyecto admin.

  3. En el menú de la izquierda selecciona Admin | Compute | Images.

  4. Selecciona la imagen a modificar, despliega el listbox de Actions y selecciona Edit Image.

  5. Pulsa los botones Public | Private de Visibility en Image Sharing.

  6. Aplica los cambios pulsando el botón Update Image.

13.4. Administración de proyectos

13.4.1. Crear proyecto

  1. Inicia sesión en OpenStack-DI.

  2. En el menú de la izquierda selecciona Identity | Projects.

  3. Pulsa el botón Create Project

  4. En la ficha Project Information del asistente completa el nombre del proyecto (p.e. el login del usuario en Campus Virtual si es un proyecto individual o cualquier otro si es un proyecto compartido).

  5. Completa la descripción. Para proyectos individuales se recomienda seguir la plantilla Proyecto de seguido del nombre completo

    CreateProject Information.png
  6. En la ficha Project Members agrega desde la izquierda (All Users) los miembros del proyecto hasta que la parte derecha (Project Members) tenga los miembros deseados.

    CreateProject Members.png
  7. Pulsa Create Project.

13.4.2. Administrar miembros

  1. Inicia sesión en OpenStack-DI.

  2. En el menú de la izquierda selecciona Identity | Projects.

  3. En la lista Projects selecciona el proyecto al que quieras modificar sus miembros, y selecciona la opción Manage Members en el listbox de Actions.

  4. En la ficha Project Members agrega desde la izquierda (All Users) los miembros del proyecto hasta que la parte derecha (Project Members) tenga los miembros deseados.

  5. Pulsa Save para guardar los cambios.

13.4.3. Modificar la cuota de un proyecto

Los proyectos de OpenStack-DI ofrecen una cuota predetermianda de recursos de cómputo, almacenamiento y red. Es posible cambiar la cuota asignada siguiendo estos pasos:

  1. Inicia sesión en OpenStack-DI.

  2. En el menú de la izquierda selecciona Identity | Projects.

  3. En la lista Projects selecciona el proyecto al que quieras modificar sus miembros, y selecciona la opción Modify Quotas en el listbox de Actions.

  4. Configura los valores adecuados el cuadro de diálogo Edit Quotas.

    EditQuotas.png
  5. Pulsa Save para guardar los cambios.

13.5. Asignar IP flotante a un proyecto

La red externa de OpenStack-DI tiene reservado un rango de direcciones IP para servidores a los que poder asignar nombres DNS, servidores particulares, entre otros. Así, el rango de direcciones al que se accede cuando se solicita una IP flotante es un subconjunto del conjunto total de direcciones de la red ext-net.

Para asignar a un proyecto concreto una IP flotante del grupo de direcciones reservadas, un técnico seguirá estos pasos:

  1. Inicia sesión en OpenStack-DI.

  2. En el menú de la izquierda selecciona Admin | System | Floating IPs.

  3. Pulsa el botón Allocate IP to Project

  4. En el cuadro de diálogo seleccionar el proyecto al que asignar la IP flotante, indicar la IP a asignar y proporcionar una descripción.

AllocateFloatingIPAdmin.png

Tras estos pasos, el proyecto de destino tendrá adjudicada esa IP flotante para usarla convenientemente == Recursos complementarios