GlassFish, Application versioning et rolling upgrade en haute disponibilité

Preview:

DESCRIPTION

LyonJUG du mardi 21 février 2012 (2° partie)http://www.lyonjug.org/evenements/ssii--open-sourceUne fois qu'une application est en production, réaliser une montée de version sans perte de service est délicat et peut rapidement vous donner la migraine. Il faut en général le faire manuellement en montant un cluster, en répliquant l'application et ses sessions, et en jonglant avec le répartiteur de charge et les instances de serveur à chaque montée en version.La fonctionnalité de versioning présente dans GlassFish, combinée avec le rolling upgrade (en early preview) permet de réaliser cette montée en version sans perte de service sur une instance stand-alone de GlassFish.Dans cette session, Marian présente ces fonctionnalités et comment les utiliser pour réaliser une montée en version d'application en production sans perte de service, en utilisant exclusivement les services offerts par GlassFish.

Citation preview

GlassFish : versioningd'applications et rolling

upgrade

@mullermarian, SERLI

À propos de

Société de conseil etd'ingénierie

65 personnes

www.serli.com @SerliFr

80% de missions Java

Pour de grandessociétés

OSS : 10% de lacapacité de travail(~1200 jours-hommes)

À propos de GlassFish

Implémentation deréférence de Java EE

Modulaire et léger

Clustering supportédepuis GF 3.1

glassfish.java.net

AgendaMise à niveau d'applicationsProblèmes posésVersioning d'applicationsRolling upgrade

Mise à niveaud'applications

Le re-déploiement

“Supprimer puis déployer”

Voici Robert !

Re-déployer une application dansGlassFish

Problèmes posés

Et comment GlassFish les résout...

Perte de la versionprécédemmentdéployée

Quid du rollback ?

Perte de disponibilité

Quid des requêtesentrantes ?

Versioning d'applicationsetRolling upgrade

Versioning d'applications

Gérer l'historique et simplifier le rollback

Historique des versionsdéployées

1 version active à la fois

Nombre de versionsillimité

Mise à niveau

et rollback

simplifiés

Mise à niveau

Mise à niveau

Mise à niveau

Mise à niveau

Rollback

Rollback

Rollback

Le versioning d'applications dansGlassFish

Identifiant de versionlibre (qualifier)

appName:versionId

Pas d'ordre

Version untagged

Wildcard (*) dans lesexpressions

Commandes

Deployer une nouvelle versiondeploy --name appName:versionId [--enabled=(true/false)] app.war

Supprimer une ancienne versionundeploy --name appName:versionId

Supprimer plusieurs versionsundeploy --name appName:alpha*

Activer une versionenable appName:versionId

Désactiver la version activedisable appName:versionId

disable appName:*

Rolling upgrade

Éviter la perte de disponibilité

“Mise à jour en douceurpour éviter la perte dedisponibilité”

Approche #1 : dans uncluster

Vue d'ensemble

Vue d'ensemble

Vue d'ensemble

Vue d'ensemble

Mettre en place uncluster

Configurer au moins 2instances

Processus manuel...

Approche #2 : dans uneinstance stand-alone

(EARLY PREVIEW)

Seulement 1 instance

Processus automatique

Processus configurable

Early preview du rolling upgradedans GlassFish

Options de commandes

Activer le rolling upgrade--rolling-upgrade

Conserver les sessions--keepstate

Attendre un temps mort--when-no-requests

Attendre l'expiration des sessions--when-no-sessions

Mettre fin à l'attente--cancel-after 60

--force-after 300

Et ensuite ?

Évolution du rolling upgrade dans GlassFish

Rolling upgrade basique

OnePager publiégoo.gl/IUc3m

Disponible pourexpérimentation dansquelques mois

Rolling upgrade avancé

Deux versions en parallèle

Limitations nécessaires

Disponible avec GlassFish 4.0 (?)

Questions ?