Entorno HA Multi-Node con Openstack
En esta serie de videos vamos a acercar la tecnología de despliegues de infraestructura Cloud basados en Openstack. Realizaremos desde un primer paso inicial de infraestructura en HA Multinodo hasta el despliegue de todos los módulos específicos orientados a PaaS o arquitecturas Multi-Región mas compleja
Configuración y arquitectura de Nodos
- 1 x Nodo Gestión – 2 vCPU 2 GB Ram
- 3 x Nodo Contro – 2 vCPU 8 GB Ram
- 1 x Nodo Computo – 2 vCPU 8 GB Ram (Capacidad para virtualizar)
Interfaces y uso:
- Ens160: Interfaz configurada en “Bridge” con conectividad a internet. Configuraremos las interfaces “kolla_external_vip_interface” . Esta red es la que expone los servicios hacia el exterior.Configuraremos también una VIP que utilizará nuestro Keepalived para dar Ha entre nodos de control
- Ens192: Interfaz configurada para la comunicación interna entre los hosts. No debe tener salida a internet y esta configurada en nuestro Vmware como “Host Only“. Expondremos la interfaz “network_interface y api_interface“. Configuraremos también una VIP que utilizará nuestro Keepalived para dar Ha entre nodos de control
- Ens256: Storage Interface. Configurada como internal “Host Only” y podremos usarla en siguientes capitulos para configurar un ceph external y conectarlo el storage separado através de este rango interno
- Ens161: Red sin configurar para Openstack en la que se utilizará para que genere sus rangos o redes tipo vlan para comunicarlas con el exterior.
Instalamos dependencias
Actualizamos las dependencias y paquetes en función de nuestra versión de S.O. En nuestro caso para Rocky 9
sudo dnf install git python3-devel libffi-devel gcc openssl-devel python3-libselinux
Instalamos dependencias para instalar en entorno virtual
- Creamos y activamos nuestro entorno virtual:
python3 -m venv /path/to/venv
source /path/to/venv/bin/actívate
- Instalamos y actualizamos la ultima versión de Pip:
pip install -U pip
- Instalamos la versión “ansible-core”. Kolla-ansible requiere al menos Ansible 8 (ansible core 2.15) o Ansible 9 (ansible core 2.16)
pip install 'ansible-core>=2.15,<2.16.99'
Instalamos Kolla-Ansible
- Instalamos kolla-ansible y sus dependencias con pip
pip install git+https://opendev.org/openstack/kolla-ansible@master
2. Creamos el directorio /etc/kolla
sudo mkdir -p /etc/kolla
sudo chown $USER:$USER /etc/kolla
- Copiamos el archivo globals.yml y passwords.yml a /etc/kolla
cp -r /path/to/venv/share/kolla-ansible/etc_examples/kolla/* /etc/kolla
- Copiamos los archivos all-in-one y multinode inventory para trabajar
cp /path/to/venv/share/kolla-ansible/ansible/inventory/* .
Globals.yml
A continuación detallamos todas las variables del archivo globals que necesitamos modificar para la configuración base de nuestro openstack
- enable_openstack_core: “yes”
- horizon_keystone_multidomain: “True”
- kolla_base_distro: “rocky”
- openstack_release: “2024.1”
- kolla_internal_vip_address: “10.0.0.209”
- kolla_external_vip_address: “192.168.0.209”
- network_interface: “ens192”
- kolla_external_vip_interface: “ens160”
- api_interface: “ens192”
- neutron_external_interface: “ens161”
- nova_compute_virt_type: “qcow”
Preparación Inventory & Hosts
El archive multinode es donde definiremos nuestra configuración de hosts y que servicio correrá en cada uno. Añadiremos los nodos a su subsección de inventory y aplicaremos el grupo control para desplegar los servicios:
- Network
- Monitoring
- Storage
- Otros
Instalamos Ansible Galaxy y generamos archivo Passwords
En este punto instalamos las dependencias de Ansible Galaxy y generamos el archivo passwords.yml para todos los servicios.
kolla-ansible install-deps
kolla-genpwd
Prepara y Despliega Kolla
Preparamos todos los hosts para instalar todos los paquetes de versiones, configuraciones y archivos necesarios en cada uno de los hosts.
kolla-ansible -i ./all-in-one bootstrap-servers
kolla-ansible -i ./all-in-one prechecks
kolla-ansible -i ./all-in-one deploy
Accede a tu Openstack
En este punto, a través de tu navegador y tu VIP External podrás acceder a tu Openstack:
http://192.168.0.209/auth/login/
La password de Admin podrás encontrarla en tu archivo generado como passwords.yml con el comando
cat /etc/kolla/passwords.yml | grep admin