Alta disponibilidad de ThingWorx > Gestión de extensiones de ThingWorx en la alta disponibilidad de ThingWorx
Gestión de extensiones de ThingWorx en la alta disponibilidad de ThingWorx
En una configuración de alta disponibilidad de ThingWorx, las extensiones de ThingWorx se almacenan en la base de datos y en la caché del sistema de ficheros local. De este modo, se garantiza que un nuevo nodo principal de ThingWorx pueda reanudar las operaciones con las extensiones más recientes almacenadas en la base de datos.
Durante su inicio, el nodo principal de ThingWorx verifica si hay actualizaciones de las extensiones en la base de datos y las aplica localmente. Si existe una discrepancia entre las extensiones de la base de datos y las extensiones del directorio local ThingworxStorage/extensions, ThingWorx considerará la versión de la base de datos como la versión más reciente y la versión local de ThingworxStorage/extensions como obsoleta.
Proceso de importación de extensiones
Cuando se importan extensiones, el sistema realiza las siguientes acciones:
1. Realiza una suma de control en el fichero zip de extensión y la guarda en el directorio ThingworxStorage/extensions/<nombre de extensión> como fichero <nombre de extensión>.chk.
2. Descomprime el fichero zip en el directorio ThingworxStorage/extensions/<nombre de extensión>.
3. Crea, implementa y almacena una entidad ExtensionPackage (y cualquier otra entidad) en la base de datos.
4. El fichero zip y la suma de control persisten en la base de datos.
Si el sistema falla durante estos pasos, intentará deshacer la importación. El fichero zip persiste en último lugar, de modo que, si la extensión no se puede implementar, la extensión no se implementará en la base de datos para que otros nodos en espera puedan seleccionarla y provocar daños.
Proceso de revisión de la extensión de nodo principal de ThingWorx
Cuando se inicia un nodo principal de ThingWorx, se realizan los siguientes pasos para cada extensión:
1. Se anula la implementación de la extensión.
2. El valor de la suma de control se lee del fichero de suma de control denominado ThingworxStorage/extensions/<nombre de extensión>/<nombre de extensión>.chk.
3. El valor de la suma de control de la extensión se lee desde el nivel de persistencia.
4. Se comparan estos dos valores de suma de control.
a. Si los valores de suma de control son iguales
a. ThingWorx considera que las extensiones local y de base de datos coinciden.
b. No se realiza ningún cambio.
b. Si los valores de la suma de control no coinciden
a. La copia del fichero zip de la extensión se lee desde el nivel de persistencia.
b. Se extrae en un directorio temporal, como ThingworxStorage/extensions/temp/<nombre de extensión><aleatorio>
c. La versión anterior de la extensión se borra de ThingworxStorage/extensions/<nombre de extensión>
d. La copia del fichero zip extraído se copia en el directorio de extensión anterior ThingworxStorage/extensions/<nombre de extensión>
e. Se crea un nuevo fichero de suma de control en el directorio de extensiones ThingworxStorage/extensions/<nombre de extensión>/<nombre de extensión>.chk
f. Se implementa la extensión.
Si el sistema falla durante alguno de los pasos anteriores, intentará limpiar lo que pueda. Si la copia anterior de la extensión no se puede reemplazar por la copia del nivel de persistencia, se carga la copia anterior.
Proceso de eliminación de extensiones
Cuando se borran extensiones, sucede lo siguiente:
1. Se anula la implementación de la extensión.
2. El fichero zip se borra de la base de datos.
3. La entidad ExtensionPackage se borra de la base de datos.
4. Se borra el directorio ThingworxStorage/extensions/<nombre de extensión>, incluida la suma de control.