Sección anterior: Aprovisione recursos en la nube al migrar desde AmazonWebServices
Este artículo le muestra cómo migrar una aplicación web Spring basada en Apache® Tomcat® y Java™ de Amazon® Web Services®(AWS) a Rackspace Cloud. Este ejemplo tarda unos 30 minutos en completarse.
El ejemplo utiliza la aplicación de muestra Spring PetClinic.
La siguiente figura muestra la topología de la aplicación:
Requisitos
Se requieren los siguientes requisitos previos para seguir el ejemplo de este artículo:
- Una instancia de Amazon Elastic Compute Cloud (EC2) en AWS con acceso raíz que ejecuta la aplicación web Spring en Apache Tomcat.
- Una cuenta válida y habilitada en Rackspace Cloud.
Preparación
Realice los siguientes pasos antes de intentar seguir los pasos del ejercicio:
- Identifique los recursos que desea migrar, incluidos los recursos de aplicaciones y bases de datos.
- Cree una lista de todos los paquetes de software necesarios que están instalados en su instancia EC2, además de su aplicación Spring.
- Cree una lista de todos los servidores de Amazon adicionales que utiliza la aplicación (por ejemplo, Servidor de correo electrónico simple (SES) para correo electrónico o Servicio de base de datos relacional (RDS) para bases de datos).
- Si aún no lo ha hecho, cree una instancia de Cloud Server y cualquier servicio de Rackspace Cloud compatible.
Instalar paquetes de software
Instale los siguientes paquetes de software:
- Kit de desarrollo Java abierto de Oracle® (OpenJDK™)
- Apache Tomcat
- OpenStack® Swift (opcional)
Instalar OpenJDK en la nube
Complete los siguientes pasos para instalar OpenJDK en la nube:
-
Usando Secure Shell (SSH), conéctese a la instancia de Cloud Servers usando la URL de RackspacePublicNet y la contraseña raíz.
-
Introduzca la contraseña raíz para iniciar sesión.
-
Instale OpenJDK 7 ingresando el siguiente comando:
sudo yum install java-1.7.0-openjdk-devel
-
Determinar la ubicación de
JAVA_HOME
ingresando el siguiente comando:ll /etc/alternatives/java
En el siguiente resultado de ejemplo,
JAVA_HOME
se encuentra en/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
Instalar Tomcat en el servidor en la nube
Utilice los siguientes pasos para instalar Tomcat en el servidor en la nube:
-
Haga clic con el botón derecho en la versión de Tomcat que desee utilizar desde la página de descargas de software de Tomcat 7 y copie la URL de
tar.gz
archivo (por ejemplo, https://www.us.apache.org/dist/tomcat/tomcat-7/v7.0.39/bin/apache-tomcat-7.0.39.tar.gz ). -
Ingrese los siguientes comandos para cambiar el directorio a
/usr/share
(o el directorio que desea usar) y descargue el archivo 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
-
Cambie los permisos ingresando el siguiente comando:
sudo chmod 775 apache-tomcat-7.0.39.tar.gz
-
Extraiga el contenido del archivo ingresando el siguiente comando:
sudo tar zxvf apache-tomcat-7.0.39.tar.gz
-
Después de extraer Tomcat, use el siguiente comando para eliminar el
tar.gz
archivo y liberar espacio:sudo rm apache-tomcat-7.0.39.tar.gz
-
Establezca las variables de entorno en
catalina.sh
archivo ingresando los siguientes comandos:cd /usr/share/apache-tomcat-7.0.39/bin sudo vi catalina.sh
-
Agregue la siguiente línea a
catalina.sh
archivo inmediatamente después de\#!/bin/sh
:JAVA_HOME=/usr/lib/jvm/jre-1.7.0-openjdk.x86_64
-
Guarde sus cambios y salga del archivo.
-
Automatice el inicio de Tomcat ingresando los siguientes comandos:
cd /etc/init.d sudo vi tomcat
-
Agregue la siguiente información al archivo. Asegúrese de que
JAVA_HOME
,TOMCAT_HOME
,START_TOMCAT
ySTOP_TOMCAT
consulte los directorios correctos:#!/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
-
Guarde sus cambios y salga del archivo.
-
Establezca permisos de archivo, configure Tomcat como un servicio del sistema y pruebe esta configuración ingresando los siguientes comandos:
sudo chmod 755 tomcat sudo /sbin/chkconfig --add tomcat sudo /sbin/chkconfig --level 234 tomcat on sudo /sbin/chkconfig --list tomcat
El resultado debe ser similar al siguiente ejemplo:
tomcat 0:off 1:off 2:on 3:on 4:on 5:off 6:off
-
Debido a que Tomcat se ejecuta en el puerto 8080, debe asegurarse de que iptables no interfiera con la conectividad.
-
Para probar Tomcat, busque la dirección del Protocolo de Internet (IP) para CloudServer en el Panel de control de la nube y abra la URL en un navegador (por ejemplo,
https://<ipAddress>:8080/
). Debería aparecer la página de aterrizaje de Apache Tomcat.Nota :Puede detener e iniciar Tomcat utilizando los siguientes comandos:
sudo /sbin/service tomcat stop sudo /sbin/service tomcat start
Instalar OpenStack Swift (opcional)
Si planea usar Cloud Files para transferir sus datos, debe usar OpenStack Swift para habilitar el acceso desde su servidor. Siga los pasos de esta sección para instalar y configurar OpenStack Swift.
-
Use el siguiente comando para instalar el cliente de OpenStack Swift:
sudo yum install python-novaclient python-glanceclient swift
-
Establezca las variables de entorno necesarias ejecutando los siguientes comandos, sustituyendo el nombre de usuario y la clave API de su cuenta de Rackspace Cloud:
export ST_USER=<yourLoginUsername> export ST_KEY=<yourApiKey> export ST_AUTH=https://identity.api.rackspacecloud.com/v1.0/
Es posible que desee definir estas variables en su
.bashrc
o.bash\_profile
expediente. Si realiza este paso, debe volver a cargar el archivo con la siguientesource
comando, sustituyendo.bash\_profile
para.bashrc
si es necesario:source .bashrc
-
Escriba
swift list
y asegúrese de que puede ver el contenedor que creó para guardar sus datos.
Copia de seguridad de datos de AWS a Rackspace Cloud Files
Recupere sus datos de AWS EC2. Puede utilizar uno de los siguientes métodos para transferir los datos:
- Transfiera los datos directamente mediante rsync o el protocolo de transferencia de archivos SSH (SFTP).
- Utilice el cliente OpenStack Swift para transferir sus datos a Cloud Files y, a continuación, transfiera los datos de Cloud Files al servidor de Cloud.
Complete los siguientes pasos preparatorios para usar Cloud Files:
-
Utilice los siguientes comandos para conectarse a su instancia EC2 mediante SSH:
ssh -i yourPrivateKey.pem [email protected]
-
Realice un volcado de la base de datos utilizando el siguiente comando:
mysqldump -h <rdsHostname> -u <rdsUsername> -p --triggers --routines --databases petclinic | gzip > ~/petclinic.sql.gz
-
Use el siguiente comando para hacer una copia de seguridad de su aplicación y cualquier otro recurso que necesite la aplicación, incluidos los registros y otros directorios:
# Ensure that you have the correct tomcat7 directory sudo tar cvzf ~/tomcat.tar.gz /usr/share/tomcat7/webapps/*
-
Si usa Cloud Files para transferir sus archivos, use uno de los siguientes métodos para realizar la transferencia. Si está transfiriendo archivos directamente mediante rsync o SFTP, salte a la sección final de este artículo.
-
Ingrese los siguientes comandos para cargar sus archivos en el contenedor de CloudFiles (
Tomcat
en este ejemplo) usando el cliente Swift:swift upload Tomcat petclinic.sql.gz swift upload Tomcat tomcat.tar.gz
-
Utilice los siguientes pasos para cargar sus datos en Cloud Files a través del Panel de control en la nube:
-
Desde Seleccione un producto menú desplegable, seleccione RackspaceCloud> Almacenamiento> Archivos> containerName para abrir su contenedor.
-
Haz clic en Subir archivos .
-
Haz clic en Examinar , seleccione el archivo o los archivos que desea cargar y haga clic en Abrir , Seleccionar , o Elegir (según el navegador y el sistema que esté utilizando).
-
Haz clic en Subir archivo .
-
-
Restaurar datos de archivos en la nube a servidores en la nube
Si cargó sus datos en Cloud Files, siga los siguientes pasos para transferirlos a su servidor en la nube:
-
Usando SSH, conéctese a la instancia de Cloud Servers usando PublicNetURL y la contraseña raíz.
-
Instale y configure la interfaz de línea de comandos (CLI) de Swift siguiendo los pasos de la sección "Instalar paquetes de software" de este artículo.
-
Asegúrese de que puede ejecutar la
swift list
y vea el nuevo contenedor que creó en los resultados. -
Utilice los siguientes comandos para descargar el volcado de la base de datos de la copia de seguridad que realizó en la sección "Copia de seguridad de los datos de AWS a los archivos en la nube de Rackspace" de este artículo y restaurarlo localmente:
swift download Tomcat petclinic.sql.gz gunzip < petclinic.sql.gz | mysql -u <cloudDatabaseUsername> -p -h <cloudDatabaseHostname>
-
Utilice los siguientes comandos para detener Tomcat y descargar y extraer los archivos de la aplicación:
sudo /sbin/service tomcat stop swift download Tomcat tomcat.tar.gz tar -zxvf tomcat.tar.gz
-
Copie los contenidos de la aplicación web extraídos en Tomcat
webapps
locales. directorio y modificar las propiedades de la aplicación (incluyendojdbc.url
, el nombre de usuario de la base de datos, la contraseña de la base de datos y otras propiedades). -
En la muestra Spring Framework Petclinic, comente los siguientes archivos:
petclinic/WEB-INF/classes/db/mysql/initDB.sql petclinic/WEB-INF/classes/db/mysql/populateDB.sql
-
Use el siguiente comando para reiniciar Tomcat:
sudo /sbin/service tomcat start
Prueba tu aplicación
Acceda a la aplicación web en su navegador en https://<cloudServerIPAddress>:8080/petclinic
.
Siguiente paso
Consideraciones posteriores a la migración al migrar desde Amazon WebServices
Para otros escenarios de migración, consulte los siguientes artículos:
- Migrar una aplicación .NET desde Amazon WebServices
- Migrar una aplicación basada en Backbone.js, Node.js y MongoDB desde Amazon WebServices