Haute disponibilité ThingWorx > Gestion des extensions ThingWorx dans la haute disponibilité ThingWorx
Gestion des extensions ThingWorx dans la haute disponibilité ThingWorx
Dans une configuration ThingWorx en mode HA, les extensions ThingWorx sont stockées dans la base de données et mises en cache dans le système de fichiers local. Cela permet de s'assurer qu'un nouveau serveur leader ThingWorx peut reprendre les opérations à l'aide des dernières extensions stockées dans la base de données.
Au moment de son démarrage, le serveur leader ThingWorx recherche dans la base de données les mises à jour apportées aux extensions et les applique localement. En cas de décalage entre les extensions de la base de données et celles du répertoire ThingworxStorage/extensions local, ThingWorx considère la version de la base de données comme la version la plus récente et la version du répertoire ThingworxStorage/extensions local comme obsolète.
Processus d'importation d'extensions
Lorsque les extensions sont importées, le système effectue les opérations suivantes :
1. Il effectue une somme de contrôle sur le fichier ZIP d'extension et l'enregistre dans le répertoire ThingworxStorage/extensions/<nom extension> sous la forme d'un fichier <nom extension>.chk.
2. Il décompresse le fichier ZIP dans le répertoire ThingworxStorage/extensions/<nom extension>.
3. Il crée, déploie et rend persistant une entité ExtensionPackage (et toutes les autres entités) dans la base de données.
4. Il conserve le fichier ZIP et la somme de contrôle dans la base de données.
En cas de défaillance du système pendant cette procédure, il tente d'annuler l'importation. Le fichier ZIP est rendu persistant en dernier lieu. Ainsi, en cas d'échec du déploiement de l'extension, celle-ci n'est pas déployée dans la base de données pour éviter toute récupération par les noeuds de secours et toute corruption.
Processus de validation des extensions leader ThingWorx
Lorsqu'un serveur leader ThingWorx démarre, les étapes suivantes sont exécutées pour chaque extension :
1. Le déploiement de l'extension est annulé.
2. Sa valeur de somme de contrôle est lue à partir du fichier de somme de contrôle nommé ThingworxStorage/extensions/<nom extension>/<nom extension>.chk.
3. La valeur de somme de contrôle de l'extension est lue à partir de la couche de persistance.
4. Ces deux valeurs de somme de contrôle sont comparées.
a. Si les valeurs de somme de contrôle sont identiques
a. ThingWorx estime que les extensions locales et de la base de données correspondent.
b. Aucune modification n'est apportée.
b. Si les valeurs de somme de contrôle sont différentes
a. La copie du fichier ZIP de l'extension est lue à partir de la couche de persistance.
b. Elle est extraite dans un répertoire temporaire, tel que ThingworxStorage/extensions/temp/<nom extension><aléatoire>.
c. L'ancienne version de l'extension est supprimée de ThingworxStorage/extensions/<nom extension>.
d. La copie du fichier ZIP extrait est copiée dans l'ancien répertoire d'extension ThingworxStorage/extensions/<nom extension>.
e. Un nouveau fichier de somme de contrôle est créé dans le répertoire d'extension ThingworxStorage/extensions/<nom extension>/<nom extension>.chk
f. L'extension est déployée.
En cas de défaillance du système au cours de l'une des étapes ci-dessus, il effectue un nettoyage dans la mesure du possible. Si l'ancienne copie de l'extension ne peut pas être remplacée par la copie de la couche de persistance, l'ancienne copie est chargée.
Processus de suppression des extensions
Lorsque les extensions sont supprimées, les actions suivantes se produisent :
1. Le déploiement de l'extension est annulé.
2. Le fichier ZIP est supprimé de la base de données.
3. L'entité ExtensionPackage est supprimée de la base de données.
4. Le répertoire ThingworxStorage/extensions/<nom extension> est supprimé, y compris la somme de contrôle.