Mise à jour des services OSGi pour les plug-in eXtreme Scale avec xscmd

WebSphere eXtreme Scale prend en charge la mise à niveau des ensembles de plug-in de serveur de conteneur lorsque la grille est active. Ainsi, les administrateurs peuvent mettre à jour les applications et effectuer des ajouts sans avoir à démarrer les processus de la grille.

Avant de commencer

Procédez comme suit avant de mettre à jour les ensembles eXtreme Scale OSGi vers une nouvelle version :
  1. Démarrez les serveurs eXtreme Scale dans une infrastructure OSGi compatible.
  2. Divisez tous les plug-in eXtreme Scale en ensembles ; ils doivent utiliser les classements de service pour identifier chaque version des plug-in.
  3. Définissez les objets cache comme types primitifs Java, tels que byte[], Integer ou String ou bien ils doivent être stockés en utilisant un plug-in MapSerializerPlugin. Les objets données sont stockés dans l'ensemble eXtreme Scale et ne sont pas mis à niveau. Seuls les plug-in qui interagissent avec les données sont mis à jour.
  4. Créez des données d'objet cache compatibles avec la version. Les nouveaux plug-in doivent pouvoir interagir avec les données créées par les anciens plug-in.
  5. Créez des plug-in pour écouter les événements ObjectGridLifecycle et BackingMapLifecycle et pour régénérer les références aux autres plug-in ou métadonnées dans ces plug-in. Ainsi, les plug-in référencés sont régénérés lorsque le plug-in principal est mis à jour.
  6. Le processus de mise à jour OSGi eXtreme Scale affecte uniquement les serveurs. Vous devez mettre à jour de manière indépendante les clients qui utilisent les plug-in.

Pourquoi et quand exécuter cette tâche

Sans l'activation d'OSGi, si un administrateur doit mettre à jour les plug-in d'application ou les objets cache, chaque noeud de grille doit être mis à jour un par un, ce qui affecte le réseau, la mémoire et l'utilisation du processeur. Cette opération est nécessaire, car les plug-in et les objets Java cache sont directement stockés dans la grille. Lorsque les classes sont mises à jour sans redémarrer les processus, les plug-in de grille génèrent des conflits, car chaque classe un chargeur ClassLoader différent.

Le produit eXtreme Scale contient l'utilitaire xscmd et des beans gérés qui permettent aux administrateurs d'afficher tous les ensembles de plug-in installés dans l'infrastructure OSGi d'hébergement de chaque conteneur de la grille et de choisir la révision à utiliser. Lorsque vous utilisez l'utilitaire xscmd pour mettre à jour les plug-in vers un nouveau classement, la grille est mise au repos et toutes les transactions sont arrêtées, les plug-in sont mis à jour et la grille est réactivée. En cas d'erreur lors de la mise à jour, le processus est annulé et l'ancien classement est restauré.

Procédure

  1. Créez une version de l'ensemble en augmentant le numéro de version dans le manifeste de l'ensemble et le classement de chaque service de plug-in eXtreme Scale. Si la version de l'ensemble d'origine est Bundle-Version: 1.0.0, la version suivante peut être Bundle-Version: 1.1.0.

    Si le classement de service d'origine est ranking="1", le classement suivant peut être ranking="2".

    Important : Les classements de service OSGi doivent être des entiers.
  2. Copiez le nouvel ensemble vers chaque noeud de l'infrastructure OSGi qui héberge un serveur de conteneur eXtreme Scale.
  3. Installez le nouvel ensemble dans l'infrastructure OSGi. L'ensemble est affecté d'un identificateur, par exemple :
    osgi> install <URL to bundle>
  4. Démarrez le nouvel ensemble en utilisant l'identificateur affecté, par exemple :
    osgi> start <id>

    Une fois le nouvel ensemble démarré, le programme de suivi de service OSGi eXtreme Scale détecte l'ensemble et le rend disponible pour la mise à jour.

  5. Utilisez la commande xscmd -c osgiAll pour vérifier que chaque serveur de conteneur voit le nouvel ensemble. La commande osgiAll interroge tous les conteneurs dans la grille pour tous les services qui sont référencés dans le fichier XML descripteur ObjectGrid et affiche tous les classements disponibles, par exemple :
    xscmd -c osgiAll 
    
    Server: server1
       OSGi Service Name          Available Rankings
       -----------------          ------------------
       myLoaderServiceFactory     1, 2
       mySerializerServiceFactory 1, 2
    
    Server: server2
       OSGi Service Name          Available Rankings
       -----------------          ------------------
       myLoaderServiceFactory     1, 2
       mySerializerServiceFactory 1, 2
    
    Summary - All servers have the same service rankings.
  6. Utilisez la commande xscmd -c osgiCheck pour vérifier qu'un ou plusieurs classements de service sont des cibles de mise à jour valides. Par exemple :
    xscmd -c osgiCheck -sr 
    mySerializerServiceFactory;2,myLoaderServiceFactory;2
    
    CWXSI0040I: The command osgiCheck has completed successfully.
  7. Si la commande osgiCheck ne trouve pas des erreurs résultantes, suspendez l'équilibreur du service de placement pour éviter les mouvements de fragments en cas d'erreur lors de la mise à jour. Pour suspendre le placement, utilisez la commande xscmd -c suspendBalancing pour chaque grille d'objets et chaque groupe de mappes affectés par la mise à jour, par exemple :
    xscmd -c suspendBalancing -g MyGrid -ms MyMapSet
  8. Lorsque l'équilibrage a été suspendu pour chaque grille d'objets et groupe de mappes, utilisez la commande xscmd -c osgiCheck de nouveau pour vérifier qu'un ou plusieurs classements de service sont des cibles de mise à jour valides. Par exemple :
    xscmd -c osgiCheck -sr 
    mySerializerServiceFactory;2,myLoaderServiceFactory;2
    
    CWXSI0040I: The command osgiCheck has completed successfully.
  9. Lorsque l'équilibrage a été suspendu pour chaque grille d'objets et groupe de mappes, utilisez la commande osgiUpdate pour mettre à jour le service sur tous les serveurs pour une grille d'objets et un groupe de mappes. Par exemple :
    xscmd -c osgiUpdate  -sr 
    mySerializerServiceFactory;2,myLoaderServiceFactory;2 -g MyGrid -ms MyMapSet
  10. Vérifiez que la mise à niveau a abouti. Par exemple :
    La mise à jour abouti pour les classements de services suivants :
    Service                     Ranking
    -------                     -------
    mySerializerServiceFactory  2
    myLoaderServiceFactory      2
  11. Après avoir vérifié que le classement a été mis à jour, activez de nouveau l'équilibrage en utilisant la commande xscmd -c resumeBalancing. Par exemple, :
    xscmd -c resumeBalancing -g MyGrid -ms MyMapSet
  12. Arrêtez et désinstallez l'ancien ensemble dans chaque infrastructure OSGi qui héberge le conteneur eXtreme Scale. Par exemple, entrez le code suivant dans la console Eclipse Equinox :
    osgi> stop <id>
    osgi> uninstall <id>

Résultats

L'ensemble eXtreme Scale a été mis à jour vers une nouvelle version.