Sezione precedente: Effettua il provisioning delle risorse cloud durante la migrazione da AmazonWebServices
Questo articolo mostra come migrare un'applicazione Web Spring basata su Apache® Tomcat® e Java™ da Amazon® Web Services® (AWS) a Rackspace Cloud. Il completamento di questo esempio richiede circa 30 minuti.
L'esempio utilizza Spring PetClinic SampleApplication.
La figura seguente mostra la topologia dell'applicazione:
Prerequisiti
I seguenti prerequisiti sono necessari per seguire l'esempio in questo articolo:
- Un'istanza Amazon Elastic Compute Cloud (EC2) su AWS con accesso root che esegue l'applicazione Web Spring su Apache Tomcat.
- Un account valido e abilitato su Rackspace Cloud.
Preparazione
Esegui i seguenti passaggi prima di provare a seguire i passaggi dell'esercizio:
- Identifica le risorse di cui desideri migrare, comprese le risorse dell'applicazione e del database.
- Crea un elenco di tutti i pacchetti software necessari installati sull'istanza EC2, a parte l'applicazione Spring.
- Crea un elenco di tutti i server Amazon aggiuntivi utilizzati dall'applicazione (ad esempio Simple Email Server (SES) per e-mail o Relational Database Service (RDS) per database).
- Se non l'hai già fatto, crea un'istanza Cloud Server e tutti i servizi Rackspace Cloud di supporto.
Installa i pacchetti software
Installa i seguenti pacchetti software:
- Kit di sviluppo Oracle® Open Java (OpenJDK™)
- Apache Tomcat
- OpenStack® Swift (opzionale)
Installa OpenJDK sul cloud
Completa i seguenti passaggi per installare OpenJDK sul cloud:
-
Utilizzando Secure Shell (SSH), connettiti all'istanza Cloud Servers utilizzando l'URL RackspacePublicNet e la password di root.
-
Inserisci la password di root per accedere.
-
Installa OpenJDK 7 immettendo il seguente comando:
sudo yum install java-1.7.0-openjdk-devel
-
Determina la posizione di
JAVA_HOME
immettendo il seguente comando:ll /etc/alternatives/java
Nel seguente output di esempio,
JAVA_HOME
si trova in/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
Installa Tomcat sul Cloud Server
Utilizzare i seguenti passaggi per installare Tomcat sul Cloud Server:
-
Fare clic con il pulsante destro del mouse sulla versione di Tomcat che si desidera utilizzare dalla pagina Download del software Tomcat 7 e copiare l'URL del
tar.gz
file (ad esempio,https://www.us.apache.org/dist/tomcat/tomcat-7/v7.0.39/bin/apache-tomcat-7.0.39.tar.gz ). -
Inserisci i seguenti comandi per cambiare la directory in
/usr/share
(o la directory che vuoi usare) e scarica il file binario: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
-
Modifica i permessi immettendo il seguente comando:
sudo chmod 775 apache-tomcat-7.0.39.tar.gz
-
Estrarre il contenuto del file immettendo il seguente comando:
sudo tar zxvf apache-tomcat-7.0.39.tar.gz
-
Dopo aver estratto Tomcat, utilizzare il comando seguente per rimuovere
tar.gz
file e libera spazio:sudo rm apache-tomcat-7.0.39.tar.gz
-
Imposta le variabili di ambiente in
catalina.sh
file inserendo i seguenti comandi:cd /usr/share/apache-tomcat-7.0.39/bin sudo vi catalina.sh
-
Aggiungi la seguente riga a
catalina.sh
file immediatamente dopo\#!/bin/sh
:JAVA_HOME=/usr/lib/jvm/jre-1.7.0-openjdk.x86_64
-
Salva le modifiche ed esci dal file.
-
Automatizza l'avvio di Tomcat inserendo i seguenti comandi:
cd /etc/init.d sudo vi tomcat
-
Aggiungi le seguenti informazioni al file. Assicurati che
JAVA_HOME
,TOMCAT_HOME
,START_TOMCAT
eSTOP_TOMCAT
fare riferimento alle directory corrette:#!/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
-
Salva le modifiche ed esci dal file.
-
Imposta i permessi dei file, configura Tomcat come servizio di sistema e verifica la configurazione immettendo i seguenti comandi:
sudo chmod 755 tomcat sudo /sbin/chkconfig --add tomcat sudo /sbin/chkconfig --level 234 tomcat on sudo /sbin/chkconfig --list tomcat
L'output dovrebbe essere simile al seguente esempio:
tomcat 0:off 1:off 2:on 3:on 4:on 5:off 6:off
-
Poiché Tomcat è in esecuzione sulla porta 8080, devi assicurarti che iptables non interferisca con la connettività.
-
Per testare Tomcat, cerca l'indirizzo IP (Internet Protocol) per il CloudServer nel pannello di controllo del Cloud e apri l'URL in un browser (ad esempio,
https://<ipAddress>:8080/
). Dovrebbe apparire la landing page di Apache Tomcat.Nota :puoi interrompere e avviare Tomcat utilizzando i seguenti comandi:
sudo /sbin/service tomcat stop sudo /sbin/service tomcat start
Installa OpenStack Swift (opzionale)
Se prevedi di utilizzare Cloud Files per trasferire i tuoi dati, devi utilizzare OpenStack Swift per abilitare l'accesso dal tuo server. Segui i passaggi in questa sezione per installare e configurare OpenStack Swift.
-
Utilizzare il comando seguente per installare il client OpenStack Swift:
sudo yum install python-novaclient python-glanceclient swift
-
Imposta le variabili di ambiente necessarie eseguendo i seguenti comandi, sostituendo il nome utente e la chiave API del tuo account Rackspace Cloud:
export ST_USER=<yourLoginUsername> export ST_KEY=<yourApiKey> export ST_AUTH=https://identity.api.rackspacecloud.com/v1.0/
Potresti voler definire queste variabili nel tuo
.bashrc
o.bash\_profile
file. Se esegui questo passaggio, devi ricaricare il file con il seguentesource
comando, sostituendo.bash\_profile
per.bashrc
se necessario:source .bashrc
-
Digita
swift list
e assicurati di poter vedere il contenitore che hai creato per contenere i tuoi dati.
Backup dei dati da AWS a Rackspace Cloud Files
Recupera i tuoi dati da AWS EC2. È possibile utilizzare uno dei seguenti metodi per trasferire i dati:
- Trasferisci i dati direttamente utilizzando rsync o SSH File Transfer Protocol (SFTP).
- Utilizza il client OpenStack Swift per trasferire i tuoi dati su Cloud Files, quindi trasferisci i dati da Cloud Files al Cloud Server.
Completa i seguenti passaggi preparatori per utilizzare Cloud Files:
-
Utilizza i seguenti comandi per connetterti all'istanza EC2 tramite SSH:
ssh -i yourPrivateKey.pem [email protected]
-
Eseguire un dump del database utilizzando il comando seguente:
mysqldump -h <rdsHostname> -u <rdsUsername> -p --triggers --routines --databases petclinic | gzip > ~/petclinic.sql.gz
-
Utilizzare il comando seguente per eseguire il backup dell'applicazione e di qualsiasi altra risorsa necessaria all'applicazione, inclusi i registri e altre directory:
# Ensure that you have the correct tomcat7 directory sudo tar cvzf ~/tomcat.tar.gz /usr/share/tomcat7/webapps/*
-
Se stai utilizzando Cloud Files per trasferire i tuoi file, utilizza uno dei seguenti metodi per eseguire il trasferimento. Se stai trasferendo file direttamente utilizzando rsync o SFTP, vai alla sezione finale di questo articolo.
-
Inserisci i seguenti comandi per caricare i tuoi archivi nel contenitore CloudFiles (
Tomcat
in questo esempio) utilizzando il client Swift:swift upload Tomcat petclinic.sql.gz swift upload Tomcat tomcat.tar.gz
-
Utilizza i seguenti passaggi per caricare i tuoi dati su Cloud Files tramite il pannello di controllo di Cloud:
-
Da Seleziona un prodotto menu a discesa, seleziona RackspaceCloud> Storage> Files> containerName per aprire il tuo contenitore.
-
Fai clic su Carica file .
-
Fai clic su Sfoglia , seleziona il file o i file che desideri caricare e fai clic su Apri , Seleziona o Scegli (a seconda del browser e del sistema che stai utilizzando).
-
Fai clic su Carica file .
-
-
Ripristina i dati dai file cloud ai server cloud
Se hai caricato i tuoi dati su Cloud Files, utilizza i seguenti passaggi per trasferirli al tuo Cloud Server:
-
Utilizzando SSH, connettiti all'istanza dei Cloud Servers utilizzando PublicNetURL e la password di root.
-
Installa e configura l'interfaccia a riga di comando (CLI) Swift seguendo i passaggi nella sezione "Installazione dei pacchetti software" di questo articolo.
-
Assicurati di poter eseguire l'
swift list
comando e vedere il nuovo contenitore che hai creato nei risultati. -
Utilizzare i seguenti comandi per scaricare il dump del database dal backup eseguito nella sezione "Backup dei dati da AWS a Rackspace Cloud Files" di questo articolo e ripristinarlo in locale:
swift download Tomcat petclinic.sql.gz gunzip < petclinic.sql.gz | mysql -u <cloudDatabaseUsername> -p -h <cloudDatabaseHostname>
-
Utilizzare i seguenti comandi per interrompere Tomcat e scaricare ed estrarre i file dell'applicazione:
sudo /sbin/service tomcat stop swift download Tomcat tomcat.tar.gz tar -zxvf tomcat.tar.gz
-
Copia il contenuto dell'applicazione web estratta nelle Tomcat
webapps
locali directory e modificare le proprietà dell'applicazione (inclusojdbc.url
, il nome utente del database, la password del database e altre proprietà). -
Nell'esempio di Spring Framework Petclinic, commenta i seguenti file:
petclinic/WEB-INF/classes/db/mysql/initDB.sql petclinic/WEB-INF/classes/db/mysql/populateDB.sql
-
Utilizzare il comando seguente per riavviare Tomcat:
sudo /sbin/service tomcat start
Verifica la tua applicazione
Accedi all'applicazione web nel tuo browser suhttps://<cloudServerIPAddress>:8080/petclinic
.
Passaggio successivo
Considerazioni successive alla migrazione durante la migrazione da Amazon WebServices
Per altri scenari di migrazione, vedere i seguenti articoli:
- Migrare un'applicazione .NET da Amazon WebServices
- Migrare un'applicazione basata su Backbone.js, Node.js e MongoDB da Amazon WebServices