En el capítulo número 2 vamos a analizar y realizar el despliegue de una segunda región conectada a nuestra cloud principal. Son muchas las empresas que por necesidades de continuidad de negocio, compliance, crecimiento o arquitectura de sistemas necesita poder desplegar infraestructura de virtualización en diferentes ubicaciones.
La gestión y diseño de estos entornos se vuelve normalmente complicada y en este laboratorio vamos a realizar paso a paso como #Openstack es capaz de resolver esta problemática, cual es su enfoque y como configurar cada parámetro de su diseño para poder realizar un setup sencillo y funcional.
Para ello vamos a instalar una segunda región de computación y gestión independiente que estará conectada únicamente a través de dos elementos:
- Keystone: Authenticación y RBAC centralizado para todos los usuarios de nuestra plataforma
- Horizon: Dashboard global para la centralización de la gestión UI.
Por recursos de computación en nuestro PC, esta segunda Región será unicamente una única VM denominada all-in-one (AIO) que albergará todos los servicios de nuestro openstack.
Preparamos nuestros nodos
Para este despliegue vamos a necesitar una nueva VM con la misma template Rocky9 y configuración que vimos en la Región1. Los recursos mínimos que recomiendo para este lab son 4vcpu, 8 GB Ram teniendo en cuenta que si queremos virtualizar VM necesitaremos computo disponible. A nivel de red configuraremos los interfaces de la misma manera que en el capítulo 1. Os comparto una tabla global donde podréis ver el estado actual de nuestro laboratorio.
Como ya preparamos en el laboratorio 1 de despliegue tendremos nuestro nodo global de gestión donde tendremos las configuraciones de cada una de las N regiones a desplegar. Para simplificar la gestión hemos movido el archivo de configuración de /etc/kolla a /root/kolla/regionx/.
En esta ruta copiaremos los archivos principales de globals.yml y multinode donde definiremos la configuración de la región2 y su lista de máquinas, en este caso, una única máquina virtual. Es importante cuando lancemos el comando kolla-ansbile para deploy/reconfigures o cualquier acción siempre pasar el parámetro –configdir /root/kolla/regionx/ ya que hemos modificado nuestro path. Si queremos fijarlo también podemos hacerlo dentro del archivo globals.yml
Desde el nodo de gestión deberemos llegar a nuestra máquina virtual nueva preparada para otra región. Al ser un laboratorio todo lo vamos a tener desplegado en L2 pero en caso de ser ubicaciones con arquitecturas distintas tendremos que configurar nuestras redes para llegar entre sí. En est caso para simplificar vamos a llegar a través de nuestra interfaz Bridge que hace de externa aunque también podriamos comunicarlo por nuestra interfaz interna. Preparamos el archivo /etc/hosts con el hostname y la IP, para mi la 192.168.0.180.
Configurar globals.yml Region2
Configuración Interfaces y Networking:
-------------------------------------------
#Similar a lo que vimos en el despliegue de la región 1 configuramos nuestros interfaces y IP. Al ser un AIO todas las IP
#coincidirán con la IP de nuestro único nodo. En este caso es muy importante deshabilitar el despliegue del HAProxy, en caso
#negativo no funcionará ya que intentará desplegarlo con 1 nodo y dará error.
#enable_glance: "{{ enable_openstack_core | bool }}"
enable_haproxy: "no"
enable_keepalived: "{{ enable_haproxy | bool }}"
kolla_internal_vip_address: "10.0.0.180"
kolla_external_vip_address: "192.168.0.180"
kolla_external_fqdn: "external.laboratorio.es"
network_interface: "ens192"
kolla_external_vip_interface: "ens160"
api_interface: "ens192"
neutron_external_interface: "ens256"
Configuración de Autenticación con Keystone:
-------------------------------------------------
#Configuramos nuestra región 2 para que no despliegue por defecto en este AIO el contenedor de Keystone y apunte al Keystone
#de la región 1 para autenticar.
#Deshabilitamos el despliegue con Kolla del contenedor.
enable_keystone: "no"
#Elegimos el nombre de nuestra Region2. Debe coincidir con la configuración que seleccionemos en el globals de la Región1.
openstack_region_name: "RegionTwo"
kolla_internal_fqdn_r1: "10.0.0.209"
keystone_internal_url: "10.0.0.209"
keystone_internal_url: "{{ internal_protocol }}://{{ kolla_internal_fqdn_r1 }}:{{ keystone_public_port }}"
openstack_auth:
auth_url: "{{ keystone_internal_url }}"
username: "{{ keystone_admin_user }}"
password: "Vuestra password de admin"
user_domain_name: "{{ default_user_domain_name }}"
project_name: "{{ keystone_admin_project }}"
domain_name: "Default"
#Otras configuraciones
------------------------------------
#Vamos a habilitar el despliegue de Openstack Core para desplegar nuestros modulos base en el AIO preparado.
#Vamos a desactivar el modulo de horizon ya que vamos a utilizar el desplegado en la región 1 y centralizar el dashboard
#de nuestro entorno cloud.
enable_openstack_core: "yes"
horizon_keystone_multidomain: "True"
#Heat es un modulo para automatización de openstack usado para plantillas de Infraestructura como código o utilizado para
#algunos despliegues de modulos. Actualmente lo desactivaremos para no consumir más recursos.
enable_heat: "no"
#enable_horizon: "{{ enable_openstack_core | bool }}"
enable_horizon: "no"
Configurar Globals.yml Region1
Configurar Keystone para habilitar las varias regiones que conectaremos
------------------------------
openstack_region_name: "RegionOne"
# Use this option to define a list of region names - only needs to be configured
# in a multi-region deployment, and then only in the *first* region.
multiple_regions_names:
- "{{ openstack_region_name }}"
- "RegionTwo"
Reconfiguramos y desplegamos Region1 y Region2
#Reconfiguramos Region1
Kolla-ansible -i /root/kolla/region1/multinode --configdir /root/kolla/region1/reconfigure
#Desplegamos Region2
Kolla-ansible -i /root/kolla/region2/multinode --configdir /root/kolla/region2/bootstrap-servers
Kolla-ansible -i /root/kolla/region2/multinode --configdir /root/kolla/region2/prechecks
Kolla-ansible -i /root/kolla/region2/multinode --configdir /root/kolla/region2/deploy
Una vez llegados a este punto podremos ir a nuestra máquina virtual aio-reg2 y podremos realizar un docker ps -a. Como véis en la imagen a continuación podremos ver que se han desplegado todos los modulos principales y core de openstack correctamente. Los contenedores de Horizon y Keystone en este caso no aparecen ya que estamos conectados hacia los contenedores de la región1.
Si accedemos a nuestro Horizon a través de nuestra URL, en este caso yo he resuelto internamente la dirección a external.laboratorio.es podremos ver como aparece un nuevo campo llamado “Región” donde podremos seleccionar entre el array definido en el globals.yml de la Region1. Si accedemos con nuestro usuario podremos cambiar entre las regiones en la parte superior del dashboard y poder movernos entre los recursos de diferentes proyectos asignados a nuestra región.