Section précédente : Provisionnez les ressources cloud lors de la migration depuis AmazonWebServices
Cet article vous montre comment migrer une application Web Spring basée sur Apache® Tomcat® et Java™ d'Amazon® Web Services® (AWS) vers Rackspace Cloud. Cet exemple prend environ 30 minutes.
L'exemple utilise Spring PetClinic SampleApplication.
La figure suivante montre la topologie de l'application :
Prérequis
Les prérequis suivants sont requis pour suivre l'exemple de cet article :
- Une instance Amazon Elastic Compute Cloud (EC2) sur AWS avec un accès root qui exécute l'application Web Spring sur Apache Tomcat.
- Un compte valide et activé sur Rackspace Cloud.
Préparation
Effectuez les étapes suivantes avant d'essayer de suivre les étapes de l'exercice :
- Identifiez les ressources que vous souhaitez migrer, y compris les ressources d'application et de base de données.
- Créez une liste de tous les packages logiciels nécessaires installés sur votre instance EC2, autres que votre application Spring.
- Créez une liste de tous les serveurs Amazon supplémentaires utilisés par l'application (par exemple, Simple Email Server (SES) pour les e-mails ou Relational Database Service (RDS) pour les bases de données).
- Si vous ne l'avez pas déjà fait, créez une instance de serveur cloud et tous les services Rackspace Cloud compatibles.
Installer des packages logiciels
Installez les packages logiciels suivants :
- Kit de développement Oracle® Open Java (OpenJDK™)
- Apache Tomcat
- OpenStack® Swift (facultatif)
Installer OpenJDK sur le cloud
Effectuez les étapes suivantes pour installer OpenJDK sur le cloud :
-
À l'aide de Secure Shell (SSH), connectez-vous à l'instance Cloud Servers en utilisant l'URL RackspacePublicNet et le mot de passe root.
-
Entrez le mot de passe root pour vous connecter.
-
Installez OpenJDK 7 en saisissant la commande suivante :
sudo yum install java-1.7.0-openjdk-devel
-
Déterminer l'emplacement de
JAVA_HOME
en saisissant la commande suivante :ll /etc/alternatives/java
Dans l'exemple de sortie suivant,
JAVA_HOME
est situé à/usr/lib/jvm/jre-1.7.0-openjdk.x86_64
:/etc/alternatives/java -> /usr/lib/jvm/jre-1.7.0-openjdk.x86_64/bin/java
Installer Tomcat sur le serveur cloud
Suivez les étapes suivantes pour installer Tomcat sur le serveur cloud :
-
Cliquez avec le bouton droit sur la version de Tomcat que vous souhaitez utiliser à partir de la page de téléchargement de logiciels Tomcat 7 et copiez l'URL de
tar.gz
fichier (par exemple,https://www.us.apache.org/dist/tomcat/tomcat-7/v7.0.39/bin/apache-tomcat-7.0.39.tar.gz ). -
Entrez les commandes suivantes pour changer de répertoire en
/usr/share
(ou le répertoire que vous souhaitez utiliser) et téléchargez le fichier binaire :cd /usr/share sudo wget https://www.us.apache.org/dist/tomcat/tomcat-7/v7.0.39/bin/apache-tomcat-7.0.39.tar.gz
-
Modifiez les autorisations en saisissant la commande suivante :
sudo chmod 775 apache-tomcat-7.0.39.tar.gz
-
Extrayez le contenu du fichier en saisissant la commande suivante :
sudo tar zxvf apache-tomcat-7.0.39.tar.gz
-
Après avoir extrait Tomcat, utilisez la commande suivante pour supprimer le
tar.gz
fichier et libérer de l'espace :sudo rm apache-tomcat-7.0.39.tar.gz
-
Définissez les variables d'environnement dans le
catalina.sh
fichier en saisissant les commandes suivantes :cd /usr/share/apache-tomcat-7.0.39/bin sudo vi catalina.sh
-
Ajoutez la ligne suivante au
catalina.sh
fichier immédiatement après\#!/bin/sh
:JAVA_HOME=/usr/lib/jvm/jre-1.7.0-openjdk.x86_64
-
Enregistrez vos modifications et quittez le fichier.
-
Automatisez le démarrage de Tomcat en saisissant les commandes suivantes :
cd /etc/init.d sudo vi tomcat
-
Ajoutez les informations suivantes au fichier. Assurez-vous que
JAVA_HOME
,TOMCAT_HOME
,START_TOMCAT
, etSTOP_TOMCAT
reportez-vous aux bons répertoires :#!/bin/bash # chkconfig: 234 20 80 # description: Tomcat Server basic start/shutdown script # processname: tomcat JAVA_HOME=/usr/lib/jvm/jre-1.7.0-openjdk.x86_64 export JAVA_HOME TOMCAT_HOME=/usr/share/apache-tomcat-7.0.39/bin START_TOMCAT=/usr/share/apache-tomcat-7.0.39/bin/startup.sh STOP_TOMCAT=/usr/share/apache-tomcat-7.0.39/bin/shutdown.sh start() { echo -n "Starting tomcat: " cd $TOMCAT_HOME ${START_TOMCAT} echo "done." } stop() { echo -n "Shutting down tomcat: " cd $TOMCAT_HOME ${STOP_TOMCAT} echo "done." } case "$1" in start) start ;; stop) stop ;; restart) stop sleep 10 start ;; *) echo "Usage: $0 {start|stop|restart}" esac exit 0
-
Enregistrez vos modifications et quittez le fichier.
-
Définissez les autorisations de fichiers, configurez Tomcat en tant que service système et testez la configuration en saisissant les commandes suivantes :
sudo chmod 755 tomcat sudo /sbin/chkconfig --add tomcat sudo /sbin/chkconfig --level 234 tomcat on sudo /sbin/chkconfig --list tomcat
Le résultat doit ressembler à l'exemple suivant :
tomcat 0:off 1:off 2:on 3:on 4:on 5:off 6:off
-
Étant donné que Tomcat s'exécute sur le port 8080, vous devez vous assurer qu'iptables n'interfère pas avec la connectivité.
-
Pour tester Tomcat, recherchez l'adresse IP (Internet Protocol) du CloudServer dans le panneau de configuration Cloud et ouvrez l'URL dans un navigateur (par exemple,
https://<ipAddress>:8080/
). La page d'accueil d'Apache Tomcat devrait apparaître.Remarque :Vous pouvez arrêter et démarrer Tomcat à l'aide des commandes suivantes :
sudo /sbin/service tomcat stop sudo /sbin/service tomcat start
Installer OpenStack Swift (facultatif)
Si vous prévoyez d'utiliser Cloud Files pour transférer vos données, vous devez utiliser OpenStack Swift pour permettre l'accès depuis votre serveur. Suivez les étapes de cette section pour installer et configurer OpenStack Swift.
-
Utilisez la commande suivante pour installer le client OpenStack Swift :
sudo yum install python-novaclient python-glanceclient swift
-
Définissez les variables d'environnement nécessaires en exécutant les commandes suivantes, en remplaçant le nom d'utilisateur et la clé API de votre compte Rackspace Cloud :
export ST_USER=<yourLoginUsername> export ST_KEY=<yourApiKey> export ST_AUTH=https://identity.api.rackspacecloud.com/v1.0/
Vous voudrez peut-être définir ces variables dans votre
.bashrc
ou.bash\_profile
dossier. Si vous effectuez cette étape, vous devez recharger le fichier avec lesource
suivant commande, en remplaçant.bash\_profile
pour.bashrc
si nécessaire :source .bashrc
-
Tapez
swift list
et assurez-vous que vous pouvez voir le conteneur que vous avez créé pour contenir vos données.
Sauvegarder les données d'AWS vers Rackspace Cloud Files
Récupérez vos données depuis AWS EC2. Vous pouvez utiliser l'une des méthodes suivantes pour transférer les données :
- Transférez les données directement à l'aide de rsync ou du protocole de transfert de fichiers SSH (SFTP).
- Utilisez le client OpenStack Swift pour transférer vos données vers Cloud Files, puis transférez les données de Cloud Files vers le serveur Cloud.
Effectuez les étapes préparatoires suivantes pour utiliser Cloud Files :
-
Utilisez les commandes suivantes pour vous connecter à votre instance EC2 à l'aide de SSH :
ssh -i yourPrivateKey.pem [email protected]
-
Effectuez un vidage de la base de données à l'aide de la commande suivante :
mysqldump -h <rdsHostname> -u <rdsUsername> -p --triggers --routines --databases petclinic | gzip > ~/petclinic.sql.gz
-
Utilisez la commande suivante pour sauvegarder votre application et toutes les autres ressources dont l'application a besoin, y compris les journaux et autres répertoires :
# Ensure that you have the correct tomcat7 directory sudo tar cvzf ~/tomcat.tar.gz /usr/share/tomcat7/webapps/*
-
Si vous utilisez Cloud Files pour transférer vos fichiers, utilisez l'une des méthodes suivantes pour effectuer le transfert. Si vous transférez des fichiers directement à l'aide de rsync ou SFTP, passez à la dernière section de cet article.
-
Entrez les commandes suivantes pour télécharger vos archives dans le conteneur CloudFiles (
Tomcat
dans cet exemple) en utilisant le client Swift :swift upload Tomcat petclinic.sql.gz swift upload Tomcat tomcat.tar.gz
-
Utilisez les étapes suivantes pour télécharger vos données dans Cloud Files via le panneau de configuration Cloud :
-
À partir de Sélectionner un produit menu déroulant, sélectionnez RackspaceCloud> Stockage> Fichiers> containerName pour ouvrir votre conteneur.
-
Cliquez sur Télécharger des fichiers .
-
Cliquez sur Parcourir , sélectionnez le ou les fichiers que vous souhaitez télécharger, puis cliquez sur Ouvrir , Sélectionner , ou Choisir (selon le navigateur et le système que vous utilisez).
-
Cliquez sur Télécharger le fichier .
-
-
Restaurer les données des fichiers cloud vers les serveurs cloud
Si vous avez téléchargé vos données sur Cloud Files, procédez comme suit pour les transférer sur votre serveur Cloud :
-
À l'aide de SSH, connectez-vous à l'instance Cloud Servers à l'aide de PublicNetURL et du mot de passe root.
-
Installez et configurez l'interface de ligne de commande (CLI) Swift en suivant les étapes de la section "Installer les packages logiciels" de cet article.
-
Assurez-vous que vous pouvez exécuter la
swift list
commande et voir le nouveau conteneur que vous avez créé dans les résultats. -
Utilisez les commandes suivantes pour télécharger le vidage de la base de données à partir de la sauvegarde que vous avez effectuée dans la section « Sauvegarder les données d'AWS vers les fichiers Cloud Rackspace » de cet article et le restaurer localement :
swift download Tomcat petclinic.sql.gz gunzip < petclinic.sql.gz | mysql -u <cloudDatabaseUsername> -p -h <cloudDatabaseHostname>
-
Utilisez les commandes suivantes pour arrêter Tomcat et télécharger et extraire les fichiers d'application :
sudo /sbin/service tomcat stop swift download Tomcat tomcat.tar.gz tar -zxvf tomcat.tar.gz
-
Copiez le contenu de l'application Web extraite dans les
webapps
Tomcat locaux répertoire et modifiez les propriétés de l'application (y comprisjdbc.url
, le nom d'utilisateur de la base de données, le mot de passe de la base de données et d'autres propriétés). -
Dans l'exemple Spring Framework Petclinic, commentez les fichiers suivants :
petclinic/WEB-INF/classes/db/mysql/initDB.sql petclinic/WEB-INF/classes/db/mysql/populateDB.sql
-
Utilisez la commande suivante pour redémarrer Tomcat :
sudo /sbin/service tomcat start
Testez votre application
Accédez à l'application Web dans votre navigateur à l'adresse https://<cloudServerIPAddress>:8080/petclinic
.
Étape suivante
Considérations post-migration lors de la migration depuis Amazon WebServices
Pour d'autres scénarios de migration, consultez les articles suivants :
- Migrer une application .NET depuis Amazon WebServices
- Migration d'une application basée sur Backbone.js, Node.js et MongoDB depuis Amazon WebServices