Procedimientos de actualización/upgrade y de rollback
Por qué es importante mantenerse actualizado
Menos cambios incompatibles que asumir de una sola vez. Varias versiones han modificado elementos de los que dependen los despliegues más antiguos:
- Rel-1.5 trasladó la configuración de los archivos a las variables de entorno y a docker-compose, y refactorizó los nombres de los campos de la base de datos.
- Rel-1.12 añadió el Customer (Network) ID.
LTI_customer_ides ahora un parámetro obligatorio del agente, y las preguntas frecuentes incluyen «customerID is required» como error de la API. - Rel-2.5 modificó la disposición de los datos del MCP, de modo que las carpetas certs y data se encuentran ahora en
mcp/. También introdujo las licencias acumuladas y una contraseña aleatoria opcional para el analyzer.
Un sitio que se salta varias versiones asume todo esto en una sola ventana de mantenimiento y tiene más que diagnosticar en caso de fallo.
Seguridad y licencias.
- Rel-2.1 ejecutó pruebas de vulnerabilidad, actualizó los componentes de código abierto y añadió API de descubrimiento seguras.
- Rel-2.5 añadió contraseñas aleatorias para el analyzer.
- Rel-2.5 añadió el mecanismo de caducidad de licencias de los agentes, con avisos en Grafana y un periodo de gracia antes de la detención de los datos.
- La stack incluye ahora Grafana 12.4.2, InfluxDB 2.8.0, Kafka 8.2.0 y Telegraf 1.38.
Precisión y fiabilidad de las mediciones. Las correcciones recientes afectan directamente a la calidad de los datos:
- Rel-2.4.1 corrigió sockets TCP persistentes que interrumpían las mediciones LIFBE durante aproximadamente una hora.
- Rel-2.4.2 corrigió la temporización de iPerf3 multiperfil.
- Rel-2.5 corrigió el registro de iPerf, que solo capturaba el caudal del primer agente cuando dos agentes enviaban al mismo tiempo.
- Rel-2.5 corrigió las mediciones iPerf UDP retrasadas.
- Rel-2.5 envía los valores PCI para 4G, y no solo para 5G.
Funcionalidades que llegan progresivamente.
- Rel-2.3: servidor MCP, nuevos endpoints OpenAPI, compatibilidad con IPv6 para las conexiones del agente al reflector.
- Rel-2.4: mapas de calor mejorados, herramientas de resolución de problemas, compatibilidad con XR-90.
- Rel-2.5: panel de control de interrupciones, percentiles en la vista de latencia detallada.
Cada versión aporta nuevos paneles de control, API y compatibilidad de hardware, y una diferencia mayor significa más trabajo de adopción de una sola vez.
Soporte. Los clientes con las versiones actuales son los más fáciles de diagnosticar y corregir, y la documentación siempre describe el comportamiento más reciente.
¿Cómo puedo actualizar mi versión del Analyzer, del Reflector y de los QoS Agents?
Cuando haya una nueva versión disponible (consulte las Notas de la versión), actualice los componentes en este orden:
- Analyzer
- Reflector
- QoS Agents
Verifique cada componente antes de pasar al siguiente. Si una verificación falla, siga el procedimiento de rollback de ese componente.
Si tiene paneles de control personalizados, póngase en contacto con su proveedor de LatenceTech antes de actualizar el Analyzer.
Antes de empezar
- Planifique una ventana de mantenimiento. Las mediciones no se almacenan durante la copia de seguridad o la actualización del Analyzer.
- Tenga a mano todas sus claves de licencia actuales.
- Ejecute la actualización del Analyzer como el usuario que instaló el Analyzer, desde el directorio home de ese usuario, que debe contener la carpeta
lti_analyzer/. InfluxDB y Grafana se ejecutan con el ID de ese usuario y sus carpetas de datos le pertenecen; otro usuario provocaría errores de permisos. - Si utiliza una contraseña aleatoria para el analyzer, debe tener al menos 8 caracteres. Está guardada en
~/.saved_lti_passworden el host del Analyzer y definida comoLTI_SERVICE_KEYen sus QoS Agents. - Anote los siguientes valores de
lti_analyzer/docker-compose.yml:ADMIN_KEY,MCP_TOKEN,LTI_license_key,LTI_passwordyLTI_PERCENTILE_FILTERoLTI_percentile_filter. El script de actualización en línea los restaura automáticamente, pero los necesita para el procedimiento sin conexión y para verificar el resultado. - Asegúrese de que cada host dispone de suficiente espacio libre en disco para la copia de seguridad. Los archivos de imágenes pueden ocupar varios GB.
1) Hacer una copia de seguridad de su sistema
La copia de seguridad se almacena en ~/lti-rollback/. No utilice ~/lti-backup/: el script de actualización del Analyzer escribe en esa carpeta y sobrescribe su contenido.
Una instantánea de la máquina virtual tomada antes de la actualización también constituye una copia de seguridad válida y permite un rollback más rápido.
Host del Analyzer
El Analyzer conserva sus datos en carpetas dentro de ~/lti_analyzer/ (influxdb/data, grafana/grafana, mcp/certs y mcp/data), por lo que la copia de seguridad siguiente las cubre todas. También guarda dos archivos de su directorio home: ~/.cached_lti_license_key, que está montado en el contenedor de la API, y ~/.saved_lti_password, que solo existe si utiliza una contraseña aleatoria.
Cree la copia de seguridad:
mkdir -p ~/lti-rollback/config
cp ~/.saved_lti_password ~/lti-rollback/config/ 2>/dev/null
cp ~/.cached_lti_license_key ~/lti-rollback/config/ 2>/dev/null
# Stop the whole Analyzer so that the InfluxDB and Grafana files are consistent
docker compose -f ~/lti_analyzer/docker-compose.yml stop
# Save the InfluxDB data
sudo tar -czf ~/lti-rollback/influxdb-data.tar.gz -C ~ lti_analyzer/influxdb/data
# Save the rest of the Analyzer folder (docker-compose.yml, Grafana data, mcp, certs, data, ...)
sudo tar -cf ~/lti-rollback/lti_analyzer-config.tar --exclude='lti_analyzer/influxdb/data' -C ~ lti_analyzer
# Start the Analyzer again
docker compose -f ~/lti_analyzer/docker-compose.yml start
# Save the current container images, to be able to roll back without downloading
docker images --format '{{.Repository}}:{{.Tag}}' | grep -v '<none>' | xargs docker save -o ~/lti-rollback/images-pre-upgrade.tar
Verifique la copia de seguridad antes de continuar:
ls -lhA ~/lti-rollback ~/lti-rollback/config
sudo tar -tzf ~/lti-rollback/influxdb-data.tar.gz | head -5
sudo tar -tf ~/lti-rollback/lti_analyzer-config.tar | grep -m3 'lti_analyzer/grafana/grafana'
Cada comando debe mostrar algo, y config/ debe contener .cached_lti_license_key (y .saved_lti_password si utiliza una contraseña aleatoria).
# The backup contains passwords and keys: restrict access to it
sudo chmod -R go-rwx ~/lti-rollback
Host del Reflector
Ejecute desde el directorio que contiene lti_reflector.yml:
mkdir -p ~/lti-rollback
cp lti_reflector.yml ~/lti-rollback/lti_reflector.yml.pre-upgrade
docker save -o ~/lti-rollback/reflector-image.tar registry.latence.ca/software/reflector
Hosts de los QoS Agents
Ejecute desde el directorio que contiene lti_qos-agent.yml:
mkdir -p ~/lti-rollback
cp lti_qos-agent.yml ~/lti-rollback/lti_qos-agent.yml.pre-upgrade
docker save -o ~/lti-rollback/qos-agent-image.tar registry.latence.ca/software/qos-agent
2) Actualizar el Analyzer
No tiene paneles de control personalizados (instalación en línea):
Vaya al directorio que contiene la carpeta lti_analyzer/ (su directorio home), descargue el script y ejecútelo con sudo:
cd ~
wget https://api.latence.ca/software/update.sh
sudo bash update.sh
El script pregunta si desea hacer una copia de seguridad de sus datos de InfluxDB. Responda y para conservar sus datos históricos. Si responde n, el Analyzer se reinstala con una base de datos vacía.
A continuación, el script detiene y elimina sus contenedores e imágenes actuales del Analyzer, reinstala el Analyzer más reciente, vuelve a colocar sus datos de InfluxDB y restaura automáticamente sus claves de licencia, el filtro de percentil, la contraseña del analyzer, ADMIN_KEY, MCP_TOKEN y los datos del MCP.
Como el script ejecuta el instalador estándar, también se le harán dos preguntas:
- Filtro de percentil 95 (
true/false): responda con su ajuste actual. - Contraseña aleatoria (
true/false): esta pregunta solo se hace si no utiliza ya una contraseña aleatoria (es decir, si~/.saved_lti_passwordno existe). Respondafalsepara conservar su contraseña actual. Si respondetrue, se genera y se aplica una nueva contraseña aleatoria, y deberá definirla comoLTI_SERVICE_KEYen cada QoS Agent; de lo contrario, dejarán de enviar datos.
El instalador no pide ninguna clave de licencia durante una actualización: reutiliza la clave guardada en ~/.cached_lti_license_key. Al final, espera a la verificación de la licencia, lo que puede tardar unos minutos.
Notas:
- No interrumpa el script. Si se interrumpe o falla a mitad de camino, no lo vuelva a ejecutar. Siga el procedimiento de rollback.
- Si el script se queda en «Waiting for License logs» durante más de unos minutos, consulte
docker logs lti_analyzer-influx-writer-1. Si la licencia indica 0 agentes autorizados, el script pide una clave de licencia válida. - La copia de seguridad realizada por el script (en
~/lti-backup/) solo contiene los datos de InfluxDB y dos archivos de configuración. No es una copia de seguridad para rollback: la copia de seguridad del paso 1 sigue siendo necesaria. - El script muestra «Update completed successfully» aunque haya fallado algún paso. Realice siempre las verificaciones que se indican a continuación.
Tiene paneles de control personalizados:
Póngase en contacto con su proveedor de LatenceTech antes de la actualización.
Instalación sin conexión:
Requisitos previos:
- Disponer del nuevo
Analyzer_offline.zip. Puede descargarse conwget https://api.latence.ca/software/Analyzer_offline.zipu obtenerse en una memoria USB a través de LatenceTech. - Ejecute todos los comandos desde el directorio que contiene tanto
lti_analyzer/comoAnalyzer_offline.zip. En este ejemplo,lti_analyzer/está en su directorio home (~/); adapte los comandos a su ubicación. - Paso 1 (copia de seguridad) completado.
2a) Eliminar los contenedores
Advertencia: este comando elimina todos los contenedores e imágenes del host. Ejecútelo solo en un host dedicado al Analyzer.
# Delete containers and images
docker stop $(docker ps -q) && docker rm $(docker ps -a -q) && docker rmi $(docker images -q) && docker system prune -af
# Cleaning up
sudo rm -rf ~/lti_analyzer/ ~/lti_analyzer.launch.log
2b) Reinstalación
# Unzip
unzip Analyzer_offline.zip 2>&1
# Go in the folder
cd Analyzer_offline/
# Execute script
bash install-run-analyzer-offline.sh
# Go back to the previous directory
cd ..
2c) Volver a colocar sus datos
# Stop containers influxdb and influx-writer
docker stop lti_analyzer-influxdb-1
docker stop lti_analyzer-influx-writer-1
# Extract influxdb data
sudo tar -xf ~/lti-rollback/influxdb-data.tar.gz -C ~
# Restarting influxdb and influx-writer
docker start lti_analyzer-influxdb-1
docker start lti_analyzer-influx-writer-1
# Place back the MCP server data, certs and data folders (the ones that exist in your backup)
for d in mcp certs data; do sudo tar -xf ~/lti-rollback/lti_analyzer-config.tar -C ~ lti_analyzer/$d 2>/dev/null; done
Si certs/ o data/ existen en la raíz de lti_analyzer/, muévalas a la nueva estructura de carpetas mcp/:
mkdir -p ~/lti_analyzer/mcp
sudo mv ~/lti_analyzer/certs ~/lti_analyzer/mcp/ 2>/dev/null
sudo mv ~/lti_analyzer/data ~/lti_analyzer/mcp/ 2>/dev/null
2d) Restaurar la configuración
# Restore home config files (if backed up)
cp ~/lti-rollback/config/.saved_lti_password ~/.saved_lti_password 2>/dev/null
chmod 600 ~/.saved_lti_password 2>/dev/null
cp ~/lti-rollback/config/.cached_lti_license_key ~/.cached_lti_license_key 2>/dev/null
Edite lti_analyzer/docker-compose.yml y vuelva a introducir los valores que anotó antes de la actualización (ADMIN_KEY, MCP_TOKEN, LTI_license_key, LTI_password, filtro de percentil).
Si tenía una contraseña para el analyzer, vuelva a aplicarla a Grafana e InfluxDB (sustituya YOUR_PASSWORD):
GRAFANA_ID=$(docker ps --format "{{.ID}} {{.Image}}" | grep grafana | awk '{print $1}')
INFLUX_ID=$(docker ps --format "{{.ID}} {{.Image}}" | grep influxdb | awk '{print $1}')
docker exec -u root $GRAFANA_ID grafana-cli admin reset-admin-password YOUR_PASSWORD
docker exec $INFLUX_ID influx user password --name LatenceTech --password YOUR_PASSWORD --host http://localhost:8086
2e) Reiniciar los servicios
# Restart influx-writer to apply license key
docker stop lti_analyzer-influx-writer-1
docker start lti_analyzer-influx-writer-1
Si ha restaurado una contraseña, vuelva a lanzar todos los servicios:
docker compose -f lti_analyzer/docker-compose.yml up -d
Si solo ha restaurado ADMIN_KEY o MCP_TOKEN, reinicie los servicios del MCP:
docker compose -f lti_analyzer/docker-compose.yml restart latencetech_mcp chatbot_api
Verificar el Analyzer antes de continuar
- Todos los contenedores del Analyzer están en ejecución (
docker ps). - Los paneles de control se cargan en
http://YOUR_ANALYZER_HOST_IP:12021. - Se muestran sus datos históricos.
- El estado de la licencia y la fecha de caducidad se muestran correctamente.
Si alguna de estas verificaciones falla, siga el procedimiento de rollback.
3) Actualizar el Reflector
Para el reflector, puede utilizar el script de actualización que se indica aquí:
wget https://api.latence.ca/software/update_reflector.sh
bash update_reflector.sh
O puede hacerlo manualmente siguiendo los pasos que se indican a continuación:
docker stop lti_reflector && docker rm lti_reflector && docker rmi registry.latence.ca/software/reflector
Elimine la versión anterior del archivo de instalación:
rm lti_reflector.yml
A continuación, puede volver a descargar el archivo yaml aquí y editarlo con su clave de licencia y su ID:
wget https://api.latence.ca/software/lti_reflector.yml
Vuelva a lanzar el Reflector:
docker compose -f lti_reflector.yml up -d
Instalación sin conexión: descargue Reflector_offline.zip (wget https://api.latence.ca/software/Reflector_offline.zip) u obténgalo de la memoria USB, detenga y elimine el contenedor anterior como se ha indicado, descomprima el archivo y ejecute el script de la carpeta con bash. El script crea la nueva imagen. A continuación, despliegue el contenedor rellenando lti_reflector.yml como se explica en la documentación.
Verificar el Reflector antes de continuar
docker compose -f lti_reflector.yml logs
Los registros no muestran ningún error.
4) Actualizar los QoS Agents
Recomendamos actualizar primero un agente, verificarlo y, después, actualizar los demás.
Para actualizar el QoS Agent a la última versión, debe detener y eliminar las imágenes de los dockers en ejecución con el siguiente comando:
docker stop lti_qos-agent && docker rm lti_qos-agent && docker rmi registry.latence.ca/software/qos-agent
Elimine la versión anterior del archivo de instalación:
rm lti_qos-agent.yml
A continuación, puede volver a descargar el archivo yaml aquí y editarlo con sus valores:
wget https://api.latence.ca/software/lti_qos-agent.yml
Si utiliza una contraseña aleatoria para el analyzer, defina LTI_SERVICE_KEY con la contraseña del analyzer. Para no olvidar ningún valor, compare el nuevo archivo con su copia de seguridad:
diff ~/lti-rollback/lti_qos-agent.yml.pre-upgrade lti_qos-agent.yml
Después, ejecute lo siguiente para descargar las nuevas imágenes.
docker compose -f lti_qos-agent.yml up -d
Otras formas de actualizar un agente:
- QoS Agent Management Dashboard: si está instalado en el host del agente, utilice Docker Management > Update para descargar las últimas imágenes de contenedor y reiniciar los servicios.
- Instalación sin conexión: descargue
Agent_offline.zip(wget https://api.latence.ca/software/Agent_offline.zip) u obténgalo de la memoria USB, detenga y elimine el contenedor anterior como se ha indicado, descomprima el archivo y ejecute el script de la carpeta conbash. El script crea la nueva imagen. A continuación, despliegue el contenedor rellenandolti_qos-agent.ymlcomo se explica en la documentación. - Agentes Cradlepoint y SDK: siga las páginas Despliegue en Cradlepoint y Despliegue del QoS Agent SDK.
Verificar el QoS Agent
docker compose -f lti_qos-agent.yml logs
Los registros no muestran ningún error y los datos del agente aparecen en los paneles de control con su ID de agente.
5) Verificación final
- Todos los agentes aparecen en los paneles de control y envían datos.
- El Analyzer informa del estado de licencia esperado.
- Conserve
~/lti-rollback/en cada host hasta que el sistema haya funcionado con normalidad durante un ciclo completo.
¿Cuál es el procedimiento de rollback en caso de fallo de la actualización?
Usted es responsable de mantener un procedimiento de rollback. Recomendamos encarecidamente hacer una copia de seguridad del sistema antes de la actualización, utilizando el paso 1 del procedimiento de actualización. El procedimiento siguiente restaura el sistema a partir de esa copia de seguridad y debe realizarse en el orden inverso al de la actualización: QoS Agents, después Reflector y, por último, Analyzer.
Cada componente puede revertirse de forma individual:
- Si falla la actualización del Analyzer, revierta solo el Analyzer (todavía no se ha actualizado nada más).
- Si falla la actualización del Reflector, revierta solo el Reflector.
- Si falla la actualización de un QoS Agent, revierta solo los agentes afectados.
- Si decide abandonar toda la actualización, revierta en este orden: QoS Agents, Reflector, Analyzer.
No ejecute docker compose pull, los scripts de actualización ni el botón Update del QoS Agent Management Dashboard durante un rollback. Volverían a descargar la nueva versión.
Si el script de actualización del Analyzer falló a mitad de camino, no lo vuelva a ejecutar. Haga primero el rollback.
Requisitos previos
- La carpeta
~/lti-rollback/creada en el paso 1 del procedimiento de actualización, en cada host. Esta carpeta es distinta de~/lti-backup/, que utiliza el script de actualización del Analyzer y que no se utiliza para el rollback. - Los archivos de imágenes guardados (
images-pre-upgrade.tar,reflector-image.tar,qos-agent-image.tar).
1) Rollback de los QoS Agents
En cada host de agente, desde el directorio que contiene lti_qos-agent.yml:
# Remove the new version
docker stop lti_qos-agent && docker rm lti_qos-agent
docker rmi registry.latence.ca/software/qos-agent
# Restore the previous image and configuration file
docker load -i ~/lti-rollback/qos-agent-image.tar
cp ~/lti-rollback/lti_qos-agent.yml.pre-upgrade lti_qos-agent.yml
# Start the previous version without downloading anything
docker compose -f lti_qos-agent.yml up -d --pull never
Si el QoS Agent Management Dashboard está instalado, también puede restaurar una versión de configuración anterior desde su Agent Configuration Editor. La imagen del contenedor en sí debe restaurarse siempre con los comandos anteriores.
2) Rollback del Reflector
En el host del reflector, desde el directorio que contiene lti_reflector.yml:
# Remove the new version
docker stop lti_reflector && docker rm lti_reflector
docker rmi registry.latence.ca/software/reflector
# Restore the previous image and configuration file
docker load -i ~/lti-rollback/reflector-image.tar
cp ~/lti-rollback/lti_reflector.yml.pre-upgrade lti_reflector.yml
# Start the previous version without downloading anything
docker compose -f lti_reflector.yml up -d --pull never
3) Rollback del Analyzer
La copia de seguridad contiene la totalidad de la carpeta lti_analyzer/ (configuración, datos de Grafana, datos del MCP, certificados) y los datos de InfluxDB. Si el script de actualización del Analyzer falló a mitad de camino, puede haber dejado copias de las carpetas mcp, certs y data en su directorio home. Ya forman parte de la copia de seguridad, y puede eliminarlas una vez verificado el rollback.
Ejecute los comandos docker compose que se indican a continuación como el usuario que instaló el Analyzer, sin sudo. El archivo compose monta ${HOME}/.cached_lti_license_key, y con otro directorio home Docker crearía una carpeta en lugar de ese archivo.
# Stop and remove the new version (skip the first command if the folder no longer exists)
docker compose -f ~/lti_analyzer/docker-compose.yml down
docker ps -a --filter name=lti_analyzer -q | xargs -r docker rm -f
sudo rm -rf ~/lti_analyzer ~/lti_analyzer.launch.log
# Restore the previous Analyzer folder (docker-compose.yml, Grafana data, mcp, certs, ...) and images
sudo tar -xf ~/lti-rollback/lti_analyzer-config.tar -C ~
docker load -i ~/lti-rollback/images-pre-upgrade.tar
# Restore the InfluxDB data saved before the upgrade
sudo tar -xf ~/lti-rollback/influxdb-data.tar.gz -C ~
# Restore home config files (before starting the Analyzer: the license key file is mounted into the API container)
cp ~/lti-rollback/config/.saved_lti_password ~/.saved_lti_password 2>/dev/null
chmod 600 ~/.saved_lti_password 2>/dev/null
cp ~/lti-rollback/config/.cached_lti_license_key ~/.cached_lti_license_key 2>/dev/null
# Start the previous version without downloading anything
docker compose -f ~/lti_analyzer/docker-compose.yml up -d --pull never
# Restart influx-writer to apply the license key
docker stop lti_analyzer-influx-writer-1
docker start lti_analyzer-influx-writer-1
Si no puede iniciar sesión con su contraseña anterior del analyzer, vuelva a aplicarla a Grafana e InfluxDB (sustituya YOUR_PASSWORD):
GRAFANA_ID=$(docker ps --format "{{.ID}} {{.Image}}" | grep grafana | awk '{print $1}')
INFLUX_ID=$(docker ps --format "{{.ID}} {{.Image}}" | grep influxdb | awk '{print $1}')
docker exec -u root $GRAFANA_ID grafana-cli admin reset-admin-password YOUR_PASSWORD
docker exec $INFLUX_ID influx user password --name LatenceTech --password YOUR_PASSWORD --host http://localhost:8086
Si no guardó las imágenes de los contenedores
Reinstale la versión anterior con el mismo método que utilizó para la instalación y, después, restaure sus datos y su configuración desde ~/lti-rollback/:
- Instalaciones sin conexión: utilice los
Analyzer_offline.zip,Reflector_offline.zipyAgent_offline.zipanteriores, y siga los pasos 2c a 2e de la actualización del Analyzer sin conexión. - Instalaciones en línea: los scripts en línea instalan siempre la última versión. Póngase en contacto con su proveedor de LatenceTech para obtener la versión anterior.
Después del rollback
- Abra los paneles de control en
http://YOUR_ANALYZER_HOST_IP:12021y confirme que se muestran los datos históricos y que sus paneles de control y usuarios están presentes. - Confirme que cada agente envía datos, mediante los paneles de control y
docker compose -f lti_qos-agent.yml logs. - Si utiliza una contraseña aleatoria para el analyzer, confirme que
LTI_SERVICE_KEYen cada agente corresponde a la contraseña restaurada. - Las mediciones recopiladas entre la actualización y el rollback no forman parte de la base de datos restaurada.
- Conserve
~/lti-rollback/hasta que el sistema haya funcionado con normalidad durante un ciclo completo.
Si el rollback no restaura un sistema operativo, envíe datos al soporte y abra un ticket con el equipo de soporte de LatenceTech.