En el articulo anterior creamos un servidor el cual administra las imágenes Docker que son utilizadas durante el proceso de instalación de OpenStack. A lo largo de este articulo sera explicado el proceso de configuración previa a la instalación de OpenStack.
Soluciones de Infraestructura como Servicio como lo es OpenStack, buscan maximizar el uso de los recursos del centro de datos, por lo cual se recomienda habilitar varios módulos del kernel que nos ayuden a mejorar el desempeño en cada uno de los equipos.
La virtualización anidada es la capacidad que permite a los usuarios la creación de máquinas virtuales dentro de una máquina virtual. El proceso de habilitación de esta capacidad depende de la arquitectura del procesador que se este utilizado, el comando lscpu nos proporciona la información acerca del CPU.
$ lscpu
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
CPU(s): 88
On-line CPU(s) list: 0-87
Thread(s) per core: 2
Core(s) per socket: 22
Socket(s): 2
NUMA node(s): 1
Vendor ID: GenuineIntel
CPU family: 6
Model: 79
Model name: Intel(R) Xeon(R) CPU E5-2699 v4 @ 2.20GHz
Stepping: 1
CPU MHz: 1578.328
CPU max MHz: 3600.0000
CPU min MHz: 1200.0000
BogoMIPS: 4391.44
Virtualization: VT-x
L1d cache: 32K
L1i cache: 32K
L2 cache: 256K
L3 cache: 56320K
NUMA node0 CPU(s): 0-87
Flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 sdbg fma cx16 xtpr pdcm pcid dca sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm 3dnowprefetch epb invpcid_single intel_pt ssbd ibrs ibpb stibp kaiser tpr_shadow vnmi flexpriority ept vpid fsgsbase tsc_adjust bmi1 hle avx2 smep bmi2 erms invpcid rtm cqm rdseed adx smap xsaveopt cqm_llc cqm_occup_llc cqm_mbm_total cqm_mbm_local dtherm ida arat pln pts flush_l1d
En este caso la arquitectura del procesador del servidor utilizado es x86, por lo que las instrucciones para habilitar son:
$ rmmod kvm-intel
$ echo 'options kvm-intel nested=y' >> /etc/modprobe.d/dist.conf
$ modprobe kvm-intel
Otro modulo del kernel que nos mejora el desempeño es vhost_net. De acuerdo a este articulo de RedHat, este modulo ayuda a reducir las operaciones de escritura, latencia y uso de CPU y se habilita a traves de la instrucción:
$ modprobe vhost_net
En este punto nuestros servidores o nodos destino han sido configurados para obtener un mejor desempeño. Ahora es momento de proceder con la instalación de la herramienta Kolla-Ansible y sus respectivas dependencias.
Todas instrucciones que se mostrarán a continuación pueden ser ejecutadas desde cualquier máquina que tenga conectividad a los nodos destino. En nuestro diagrama de ejemplo el servidor con nombre de undercloud mantiene conexión con el resto de nodos destino a traves de la red de administración con CIDR de «192.168.121.0/27».
Esta máquina utilizará kolla-ansible para realizar la Instalación de OpenStack. Este programa puede ser instalado de distintas formas, sin embargo en este caso sera instalado desde su código fuente.
$ wget http://tarballs.openstack.org/kolla-ansible/kolla-ansible-stable-rocky.tar.gz
$ tar -C /opt -xzf kolla-ansible-stable-rocky.tar.gz
$ mv /opt/kolla-*/ /opt/kolla-ansible
$ sudo cp /opt/kolla-ansible/etc/kolla/passwords.yml /etc/kolla/
$ pip install /opt/kolla-ansible
Como ultimo paso previo a la instalación de OpenStack, se necesita un archivo de configuración el cual especifique los detalles de la instalación (versión de OpenStack a instalar, dirección IP del VIP, dirección IP del repositorio de imágenes, habilitación de servicios, etc.). Estos son algunos de los valores utilizados en el archivo globals.yml:
openstack_release: "7.0.0"
kolla_internal_vip_address: "10.10.13.3"
docker_registry: "10.10.13.2:5000"
network_interface: "eth0"
kolla_external_vip_interface: "eth1"
api_interface: "{{ kolla_external_vip_interface }}"
storage_interface: "eth2"
cluster_interface: "eth2"
tunnel_interface: "eth1"
neutron_external_interface: "eth2"
neutron_plugin_agent: "opendaylight"
En este punto se cuenta con la configuración previa a la instalación de servicios de OpenStack. El siguiente articulo proporcionará los pasos necesarios para realizar el despliegue de los servicios de OpenStack en una configuración de Alta Disponibilidad.
Nota: El script undercloud.sh contiene las instrucciones mencionadas en este articulo