GlassFish, Application versioning et rolling upgrade en haute disponibilité

70
GlassFish : versioning d'applications et rolling upgrade @mullermarian, SERLI

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.

Transcript of GlassFish, Application versioning et rolling upgrade en haute disponibilité

Page 1: GlassFish, Application versioning et rolling upgrade en haute disponibilité

GlassFish : versioningd'applications et rolling

upgrade

@mullermarian, SERLI

Page 2: GlassFish, Application versioning et rolling upgrade en haute disponibilité

À propos de

Page 3: GlassFish, Application versioning et rolling upgrade en haute disponibilité

Société de conseil etd'ingénierie

65 personnes

www.serli.com @SerliFr

Page 4: GlassFish, Application versioning et rolling upgrade en haute disponibilité

80% de missions Java

Pour de grandessociétés

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

Page 5: GlassFish, Application versioning et rolling upgrade en haute disponibilité
Page 6: GlassFish, Application versioning et rolling upgrade en haute disponibilité
Page 7: GlassFish, Application versioning et rolling upgrade en haute disponibilité

À propos de GlassFish

Page 8: GlassFish, Application versioning et rolling upgrade en haute disponibilité

Implémentation deréférence de Java EE

Modulaire et léger

Clustering supportédepuis GF 3.1

glassfish.java.net

Page 9: GlassFish, Application versioning et rolling upgrade en haute disponibilité

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

Page 10: GlassFish, Application versioning et rolling upgrade en haute disponibilité

Mise à niveaud'applications

Le re-déploiement

Page 11: GlassFish, Application versioning et rolling upgrade en haute disponibilité

“Supprimer puis déployer”

Page 12: GlassFish, Application versioning et rolling upgrade en haute disponibilité
Page 13: GlassFish, Application versioning et rolling upgrade en haute disponibilité
Page 14: GlassFish, Application versioning et rolling upgrade en haute disponibilité
Page 15: GlassFish, Application versioning et rolling upgrade en haute disponibilité

Voici Robert !

Page 16: GlassFish, Application versioning et rolling upgrade en haute disponibilité

Re-déployer une application dansGlassFish

Page 17: GlassFish, Application versioning et rolling upgrade en haute disponibilité

Problèmes posés

Et comment GlassFish les résout...

Page 18: GlassFish, Application versioning et rolling upgrade en haute disponibilité

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

Quid du rollback ?

Page 19: GlassFish, Application versioning et rolling upgrade en haute disponibilité

Perte de disponibilité

Quid des requêtesentrantes ?

Page 20: GlassFish, Application versioning et rolling upgrade en haute disponibilité
Page 21: GlassFish, Application versioning et rolling upgrade en haute disponibilité

Versioning d'applicationsetRolling upgrade

Page 22: GlassFish, Application versioning et rolling upgrade en haute disponibilité
Page 23: GlassFish, Application versioning et rolling upgrade en haute disponibilité

Versioning d'applications

Gérer l'historique et simplifier le rollback

Page 24: GlassFish, Application versioning et rolling upgrade en haute disponibilité

Historique des versionsdéployées

1 version active à la fois

Nombre de versionsillimité

Page 25: GlassFish, Application versioning et rolling upgrade en haute disponibilité

Mise à niveau

et rollback

simplifiés

Page 26: GlassFish, Application versioning et rolling upgrade en haute disponibilité

Mise à niveau

Page 27: GlassFish, Application versioning et rolling upgrade en haute disponibilité

Mise à niveau

Page 28: GlassFish, Application versioning et rolling upgrade en haute disponibilité

Mise à niveau

Page 29: GlassFish, Application versioning et rolling upgrade en haute disponibilité

Mise à niveau

Page 30: GlassFish, Application versioning et rolling upgrade en haute disponibilité

Rollback

Page 31: GlassFish, Application versioning et rolling upgrade en haute disponibilité

Rollback

Page 32: GlassFish, Application versioning et rolling upgrade en haute disponibilité

Rollback

Page 33: GlassFish, Application versioning et rolling upgrade en haute disponibilité
Page 34: GlassFish, Application versioning et rolling upgrade en haute disponibilité

Le versioning d'applications dansGlassFish

Page 35: GlassFish, Application versioning et rolling upgrade en haute disponibilité

Identifiant de versionlibre (qualifier)

appName:versionId

Page 36: GlassFish, Application versioning et rolling upgrade en haute disponibilité

Pas d'ordre

Version untagged

Wildcard (*) dans lesexpressions

Page 37: GlassFish, Application versioning et rolling upgrade en haute disponibilité

Commandes

Page 38: GlassFish, Application versioning et rolling upgrade en haute disponibilité

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

Page 39: GlassFish, Application versioning et rolling upgrade en haute disponibilité

Supprimer une ancienne versionundeploy --name appName:versionId

Page 40: GlassFish, Application versioning et rolling upgrade en haute disponibilité

Supprimer plusieurs versionsundeploy --name appName:alpha*

Page 41: GlassFish, Application versioning et rolling upgrade en haute disponibilité

Activer une versionenable appName:versionId

Page 42: GlassFish, Application versioning et rolling upgrade en haute disponibilité

Désactiver la version activedisable appName:versionId

disable appName:*

Page 43: GlassFish, Application versioning et rolling upgrade en haute disponibilité

Rolling upgrade

Éviter la perte de disponibilité

Page 44: GlassFish, Application versioning et rolling upgrade en haute disponibilité

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

Page 45: GlassFish, Application versioning et rolling upgrade en haute disponibilité

Approche #1 : dans uncluster

Page 46: GlassFish, Application versioning et rolling upgrade en haute disponibilité

Vue d'ensemble

Page 47: GlassFish, Application versioning et rolling upgrade en haute disponibilité

Vue d'ensemble

Page 48: GlassFish, Application versioning et rolling upgrade en haute disponibilité

Vue d'ensemble

Page 49: GlassFish, Application versioning et rolling upgrade en haute disponibilité

Vue d'ensemble

Page 50: GlassFish, Application versioning et rolling upgrade en haute disponibilité

Mettre en place uncluster

Configurer au moins 2instances

Processus manuel...

Page 51: GlassFish, Application versioning et rolling upgrade en haute disponibilité
Page 52: GlassFish, Application versioning et rolling upgrade en haute disponibilité
Page 53: GlassFish, Application versioning et rolling upgrade en haute disponibilité
Page 54: GlassFish, Application versioning et rolling upgrade en haute disponibilité

Approche #2 : dans uneinstance stand-alone

(EARLY PREVIEW)

Page 55: GlassFish, Application versioning et rolling upgrade en haute disponibilité
Page 56: GlassFish, Application versioning et rolling upgrade en haute disponibilité
Page 57: GlassFish, Application versioning et rolling upgrade en haute disponibilité
Page 58: GlassFish, Application versioning et rolling upgrade en haute disponibilité
Page 59: GlassFish, Application versioning et rolling upgrade en haute disponibilité
Page 60: GlassFish, Application versioning et rolling upgrade en haute disponibilité

Seulement 1 instance

Processus automatique

Processus configurable

Page 61: GlassFish, Application versioning et rolling upgrade en haute disponibilité
Page 62: GlassFish, Application versioning et rolling upgrade en haute disponibilité

Early preview du rolling upgradedans GlassFish

Page 63: GlassFish, Application versioning et rolling upgrade en haute disponibilité

Options de commandes

Page 64: GlassFish, Application versioning et rolling upgrade en haute disponibilité

Activer le rolling upgrade--rolling-upgrade

Conserver les sessions--keepstate

Page 65: GlassFish, Application versioning et rolling upgrade en haute disponibilité

Attendre un temps mort--when-no-requests

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

Page 66: GlassFish, Application versioning et rolling upgrade en haute disponibilité

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

--force-after 300

Page 67: GlassFish, Application versioning et rolling upgrade en haute disponibilité

Et ensuite ?

Évolution du rolling upgrade dans GlassFish

Page 68: GlassFish, Application versioning et rolling upgrade en haute disponibilité

Rolling upgrade basique

OnePager publiégoo.gl/IUc3m

Disponible pourexpérimentation dansquelques mois

Page 69: GlassFish, Application versioning et rolling upgrade en haute disponibilité

Rolling upgrade avancé

Deux versions en parallèle

Limitations nécessaires

Disponible avec GlassFish 4.0 (?)

Page 70: GlassFish, Application versioning et rolling upgrade en haute disponibilité

Questions ?