Saltar al contenido
StrongLinux

Documentación

Guía de operación de la nube

Esta guía es para quien opera una nube StrongLinux ya desplegada con strongctl (edición Servidor). La instalación está en la guía de instalación, y la actualización de versiones, en la guía de actualización.

Todos los comandos se ejecutan como root en el equipo donde se inicializó strongctl (el primer controller). La configuración de la nube está en /etc/strongctl/.

1. Comandos del día a día

ComandoPara qué
strongctl statusLista los grupos del inventario y los nodos de cada uno
strongctl verifyComprueba la salud de toda la nube (véase la sección 2)
strongctl deployAplica la configuración en todos los nodos; idempotente
strongctl deploy --role <rol>Solo los nodos de un rol: controller, compute, network o storage
strongctl secrets show <nombre>Muestra un secreto del almacén (p. ej.: keystone_admin)
strongctl tempestPruebas oficiales de OpenStack contra la nube (smoke; --suite full para todas)
strongctl upgradeActualización escalonada de correcciones
strongctl <comando> --checkSimula, sin modificar nada

Para usar el cliente openstack como administrador:

source /root/admin-openrc.sh
openstack server list --all-projects

2. Salud de la nube

strongctl verify comprueba, nodo a nodo:

Ejecute verify después de cualquier cambio y antes de un upgrade (que exige el verify en verde).

APIs publicadas

HAProxy publica las APIs con TLS en la dirección del controller (o en la VIP, con HA):

ServicioPuerto
Keystone (identidad)5000
Glance (imágenes)9292
Placement8778
Nova (cómputo)8774
Neutron (red)9696
Cinder (volúmenes)8776
Heat (orquestación)8004 y 8000 (CloudFormation)
Barbican (secretos)9311
StrongStack API Server9999
Horizon (panel)443, en /dashboard (el puerto 80 redirige)

Detrás de HAProxy, cada API escucha solo en la dirección interna (127.0.0.1 en el all-in-one). El metadata de Nova (8775) y la consola noVNC (6080) son internos.

Registros

DóndeQué
/var/log/<servicio>/Registro de cada servicio OpenStack (keystone, nova, neutron, cinder…)
journalctl -u <unit>Inicio, parada y errores de las units de systemd
/var/log/strongstack/StrongStack API Server
/var/log/haproxy.logAccesos a las APIs
journalctl -k | grep apparmorDenegaciones de AppArmor (sección 8)
/var/log/sudo.logUso de sudo

3. Credenciales y secretos

4. Añadir y mantener nodos

Añadir un nodo de cómputo o de almacenamiento

  1. Instale el nodo con la ISO (opción Compute o Storage) o con la imagen stronglinux-1.0-openstack-cloud-amd64.qcow2.
  2. Autorice la clave SSH de root del controller en el nodo nuevo (/root/.ssh/authorized_keys).
  3. Añada el nodo a /etc/strongctl/inventory.yml: la dirección en all.hosts y el nombre en el grupo del rol.
    all:
      hosts:
        cmp3: {ansible_host: 10.0.0.23, mgmt_ip: 10.0.0.23}
      children:
        compute:
          hosts:
            cmp3:
  4. Prepare la base y despliegue:
    strongctl bootstrap
    strongctl deploy
    strongctl verify

Use el deploy completo, sin --role: solo cambia el nodo nuevo, pero también ejecuta el registro del nodo de cómputo en Nova (nova-manage cell_v2 discover_hosts), que está en el primer controller y no se ejecuta con --role compute.

Sacar un nodo de cómputo de servicio para mantenimiento

openstack compute service set --disable --disable-reason "mantenimiento" <host> nova-compute
openstack server list --all-projects --host <host>
openstack server migrate --live-migration <vm>     # o apague las VM del equipo

Después del mantenimiento: openstack compute service set --enable <host> nova-compute.

Reiniciar un controller con alta disponibilidad

Reinicie un controller a la vez y compruebe con strongctl verify antes de pasar al siguiente. Galera, RabbitMQ y OVN vuelven al clúster por sí solos. Si los tres cayeron al mismo tiempo, siga la recuperación de Galera en la guía de alta disponibilidad.

5. Copias de seguridad

strongctl no hace copias de seguridad automáticas. Guarde, fuera de la nube:

QuéCómo
Configuración y almacéntar czf strongctl-$(date +%F).tgz -C /etc strongctl (incluye la CA en tls/)
Bases de datosmariadb-dump --all-databases --single-transaction --routines --events | gzip > bases-$(date +%F).sql.gz (con Galera, en un solo controller)
Claves de Keystonetar czf keystone-claves-$(date +%F).tgz -C /etc/keystone fernet-keys credential-keys
Imágenes de Glance/var/lib/glance/images/ (almacenamiento local)
Volúmenesopenstack volume backup create <volumen> (backend posix en /var/lib/cinder/backup)

Los archivos de configuración de los servicios (/etc/<servicio>/) no necesitan copia: strongctl deploy los vuelve a generar todos a partir de /etc/strongctl/.

Para restaurar en un controller nuevo: instale el sistema, restaure /etc/strongctl/ y las claves de Keystone, ejecute strongctl bootstrap, importe las bases de datos (zcat bases.sql.gz | mariadb) y ejecute strongctl deploy y strongctl verify.

6. Rotación de las claves de token (fernet)

Los tokens de Keystone se cifran con claves fernet en /etc/keystone/fernet-keys/. Rote las claves periódicamente, por ejemplo una vez por semana. En el primer controller:

runuser -u keystone -- keystone-manage fernet_rotate --keystone-user keystone --keystone-group keystone
strongctl deploy --role controller      # con HA: copia las claves nuevas a los demás controllers

Keystone mantiene 3 claves activas, así que los tokens ya emitidos siguen siendo válidos. Con un solo controller, basta el primer comando.

7. Certificados TLS

8. Seguridad en el día a día

9. Problemas comunes

SíntomaCausa probableQué hacer
strongctl verify falla en un puertoServicio detenido o certificado caducadojournalctl -u <unit>; caducidad del certificado (sección 7)
HTTP 401 entre servicios (p. ej.: Nova → Neutron)Usuario de servicio sin el rol service, o contraseña cambiada a manostrongctl deploy (restaura los roles y las contraseñas desde el almacén)
VM sin IP o sin metadataAgente OVN detenido en el nodo de cómputo, o chassis con nombre distinto al host de Novasystemctl status neutron-ovn-agent; ovs-vsctl get open . external-ids:hostname debe coincidir con host en nova.conf
La VM queda en ERROR al crearlaNo hay cómputo disponible, o un nodo nuevo no está registradoopenstack compute service list; ejecute strongctl deploy (hace el discover_hosts)
El volumen no se conectaiSCSI no disponible (p. ej.: en un contenedor) o tgt detenidosystemctl status tgt iscsid en los nodos de almacenamiento y cómputo
Too many connections en la base de datosDemasiados workers o max_connections bajostrongctl bootstrap vuelve a aplicar el max_connections de MariaDB (mariadb_max_connections en globals.yml)
Galera no arranca tras una caída totalSe detuvieron los tres controllersRecuperación en la guía de alta disponibilidad
Un servicio no arranca justo después de una actualizaciónDenegación de AppArmorjournalctl -k | grep DENIED (sección 8)

Si el problema continúa, abra un issue con la salida de strongctl verify y los registros del servicio (sin contraseñas). Consulte la página de soporte.