Sección anterior: Aprovisione recursos en la nube al migrar desde Amazon Web Services
Este escenario le muestra cómo migrar una aplicación Backbone.js, Node.js y MongoDB® desde Amazon Web Services (AWS) a Rackspace Cloud. Se tarda unos 30 minutos en completarse.
El siguiente diagrama muestra la topología de la aplicación:
Requisitos
Este escenario tiene los siguientes requisitos previos:
- Una pila de aplicaciones en AWS con acceso raíz o privilegios apropiados para instancias y servicios individuales.
- Una cuenta válida y habilitada en Rackspace Cloud.
Preparación
Complete los siguientes pasos antes de comenzar el escenario:
- 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 sus instancias de Amazon Elastic Compute Cloud (EC2) que no sean Backbone.js, Node.js y MongoDB.
- Cree una lista de todos los servicios adicionales de Amazon que utiliza su aplicación, como el Servicio de correo electrónico simple (SES) para correo electrónico o el 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
Esta sección proporciona instrucciones para instalar los paquetes de software requeridos y opcionales.
Instalar Git y cURL
Debe usar Git y cURL para obtener componentes dependientes como Node.js.
Ejecute el siguiente comando para instalar git y cURL:
sudo apt-get -y install git curl
Instalar Python (opcional)
Ubuntu® versión 12.0.4 Soporte a largo plazo (LTS) incluye Python® versión 2.7.2. Si necesita una versión diferente, puede instalarla desde la página de descargas de Python.
Instalar OpenJDK
Utilice los siguientes pasos para instalar OpenJDK™:
-
Usando Secure Shell (SSH), conéctese a la instancia de Cloud Servers usando la URL de PublicNet y la contraseña raíz.
-
Instale OpenJDK 7 ingresando el siguiente comando:
sudo apt-get -y install openjdk-7-jre
-
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-amd64
:/etc/alternatives/java -> /usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java*
Instalar Tomcat 7 en el servidor en la nube
Utilice los siguientes pasos para instalar Apache® Tomcat®:
-
Introduzca el siguiente comando para instalar Tomcat 7:
sudo apt-get -y install tomcat7
Si desea instalar una versión diferente de Tomcat o instalar Tomcat manualmente, seleccione la versión de la página de descargas de software de Tomcat 7.
-
Copie la URL del
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 ). -
Cambiar directorio a
/usr/share
(o el directorio que desea usar) y descargue el archivo binario ingresando los siguientes comandos: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, elimine el
tar.gz
archivos para ahorrar espacio ingresando el siguiente comando: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 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 con 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, asegúrese de que iptables no interfiera con la conectividad.
Para obtener más información sobre iptables, consulte Introducción a iptables.
-
Pruebe Tomcat buscando la dirección del Protocolo de Internet (IP) para el servidor en la nube desde el panel de control de la nube de Rackspace y abriendo la URL en un navegador (por ejemplo, https://
:8080/ ).Aparece la página de destino de Apache Tomcat.
Nota :Puede iniciar y detener Tomcat utilizando los siguientes comandos:
sudo /sbin/service tomcat stop sudo /sbin/service tomcat start
Instalar MongoDB en su servidor en la nube
Puede encontrar instrucciones para instalar MongoDB en Rackspace Cloud en el sitio web de documentación de MongoDB.
Para una implementación de producción, debe usar un conjunto de réplicas con al menos tres nodos.
Para una instalación de un solo nodo, realice los siguientes pasos:
-
Agregue la clave GNU Privacy Guard (GPG) a
apt-get
para crear un de confianza fuente ingresando el siguiente comando:sudo apt-key adv --keyserver keyserver.ubuntu.com --recv 7F0CEB10
-
Use los siguientes comandos para crear un
10gen
personalizado archivo de repositorio que contiene la ubicación de los archivos binarios de MongoDB:sudo sh -c 'echo "deb https://downloads-distro.mongodb.org/repo/ubuntu-upstart dist 10gen" | tee -a /etc/apt/sources.list.d/10gen.list'
-
Actualizar
apt-get
para recoger nuevos paquetes ingresando el siguiente comando:sudo apt-get -y update
-
Instale MongoDB ingresando el siguiente comando:
sudo apt-get -y install mongodb-10gen
-
Verifique que MongoDB se esté ejecutando ingresando el siguiente comando:
ps aux | grep mongo
Nota :MongoDB usa /var/lib/mongodb
como la ruta de datos predeterminada. Si desea cambiar esta ruta, puede cerrar la instancia de MongoDB y actualizar el archivo de configuración en /etc/mongodb.conf
.
Configurar un servidor Node.js
Si sus servicios están respaldados por Node.js en lugar de Python, siga los siguientes pasos para configurar un servidor Node.js en su instancia de nube:
-
Instale Node.js ingresando el siguiente comando:
sudo apt-get -y install nodejs npm
-
Pruebe la instalación usando el siguiente comando para obtener la versión de Node.js que está ejecutando:
node --version
Instalar OpenStack Swift (opcional)
Si planea usar Cloud Files para transferir sus datos, use los siguientes pasos para instalar el cliente OpenStack® Swift para habilitar el acceso desde su servidor:
-
Instale el cliente Swift ingresando el siguiente comando:
sudo apt-get install python-novaclient glance-client swift
-
Configure las variables de entorno necesarias ejecutando los siguientes comandos, sustituyendo su nombre de usuario y la clave de la interfaz de programación de aplicaciones (API):
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
.bashrc
o.bash\_profile
archivo, luego vuelva a cargar el archivo con la siguientesource
comando, sustituyendo.bash\_profile
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
Esta sección le muestra cómo hacer una copia de seguridad de los datos de AWS en Rackspace Cloud Files. El ejemplo usa un contenedor existente llamado AppData.
Primero, recupere sus datos de EC2. Puede transferir los datos directamente de una de las siguientes maneras:
-
Utilice el protocolo de transferencia de archivos SSH (SFTP) de rsyncor.
-
Utilice el cliente OpenStack Swift para transferir sus datos a Cloud Files y luego transfiéralos desde Cloud Files al servidor de la nube.
Para usar Cloud Files, siga estos pasos preparatorios:
-
Usando SSH, conéctese a su instancia EC2 ingresando el siguiente comando:
ssh -i your_private_key.pem [email protected]
-
Realice un volcado de MongoDB. Usa el
-host
y-port
opciones si MongoDB se está ejecutando en una instancia diferente, como se muestra en el siguiente ejemplo:mongodump --host mongodb1.yourdomain.com --port 3017 --username $USERNAME --password $PASSWORD --out ~/backup/mongodump-2013-05-03 tar czvf backbonedb-2013-05-03.tar.gz ~/backup/db/mongodump-2013-05-03/*
-
Utilice los siguientes comandos para hacer una copia de seguridad de su aplicación y cualquier recurso que necesite, incluidos los registros y otros directorios:
# Backup backbone resources sudo tar cvzf ~/backup/app/backhone.tar.gz /usr/share/tomcat/webapps/YOURAPP/* # Backup node.js resources sudo tar cvzf ~/backup/app/nodejs.tar.gz /usr/local/nodejs/YOURAPP/*
-
Si usa Cloud Files para transferir sus archivos, use uno de los siguientes métodos para realizar la transferencia. Si usa rsync o SFTP, complete la transferencia y pase a la sección final de este artículo.
-
Sube tus archivos al contenedor de Cloud Files usando el cliente Swift y los siguientes comandos:
swift upload AppData backbonedb-2013-05-03.tar.gz swift upload AppData backhone.tar.gz swift upload AppData nodejs.tar.gz
-
Use los siguientes pasos para cargar sus datos en Cloud Files usando el Panel de control de la nube:
-
Inicie sesión en el Panel de control de la nube.
-
En la barra de navegación superior, haga clic en Seleccione un producto> RackspaceCloud .
-
Seleccione Almacenamiento> Archivos> nombre del contenedor para abrir su contenedor.
-
Haz clic en Subir archivos .
-
Haz clic en Examinar y seleccione los archivos que desea cargar. Luego haga clic en Abrir o Seleccionar (dependiendo de su navegador y sistema).
-
Haz clic en Subir archivo .
-
-
Restaurar datos de archivos en la nube a servidores en la nube
Si cargó sus datos en Cloud Files, transfiéralos a CloudServers siguiendo los siguientes pasos:
-
Usando SSH, conéctese a la instancia de Cloud Servers usando la URL de PublicNet y la contraseña raíz.
-
Instale y configure la interfaz de línea de comandos (CLI) de Swift como se describe en la sección "Instalar paquetes de software".
-
Ejecute la
swift list
comando y asegúrese de ver el nuevo contenedor que creó en los resultados. -
Descargue 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 en los archivos en la nube de Rackspace" y restáurelo localmente mediante los siguientes comandos:
swift download AppData backbonedb-2013-05-03.tar.gz gunzip < backbonedb-2013-05-03.tar.gz | mongorestore --host mongodb1.yourdomain.com --port 3017 --username user --password pass
-
Descargue los datos (Backbone.js y Node.js) y restáurelos usando los siguientes comandos:
sudo service tomcat7 stop #stop tomcat server swift download AppData backbone.tar.gz # restore / deflate backbone cd /usr/share/tomcat/webapps sudo tar xvf backbone.tar.gz # restore node.js swift download AppData nodejs.tar.gz sudo mkdir -p /usr/local/nodejs/YOURAPP cd /usr/local/nodejs sudo tar xvf nodejs.tar.gz
-
Inicie los servicios de la aplicación utilizando los siguientes comandos:
sudo service tomcat7 start cd /usr/local/nodejs/YOURAPP/ sudo node server.js
Prueba tu aplicación
Vaya a https://
Siguiente paso
Consideraciones posteriores a la migración al migrar desde Amazon Web Services
Para otros escenarios de migración, consulte los siguientes artículos:
- Migrar una aplicación .NET desde Amazon Web Services
- Migrar una aplicación web Java desde Amazon Web Services