Finally the help of IT is here

Blog de soluciones informaticas.

Migrar servidor virtual hacia el Cloud con Amazon AWS

Escrito por Xavier Xaus Nadal on mayo 17th, 2014

Save pagePDF pageEmail pagePrint page

Realizar un converter de una máquina virtual de físico a virtual o de virtual a virtual es muy sencillo con Vmware Converter, ya hemos hablado de ello en otros artículos, pero ahora que muchos de vosotros estáis realizando el paso hacia el Cloud hemos de mostraros otras técnicas para poder migrar servidor virtual hacia el Cloud y viceversa, desde el Cloud hacia vuestros entornos on premise.

Pero no todos los sistemas operativos pueden ser migrados y deberemos cumplir unos prerequisitos que veremos en el siguiente enlace: http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/VMImportPrerequisites.html

En este post vamos a mostraros como migrar un servidor ubicado en una infraestructura virtual (On premise) es decir en nuestra infraestructura hacia un entorno en la nube (El cloud que hemos escogido es Amazon ya que nos gusta bastante y a alguno teníamos que ir). Cuando tengamos mucha experiencia en Amazon veremos otras opciones como Azure o volveremos a entornos on premise y seguramente nos quedaremos con Amazon, pero todo se verá con el tiempo y el dinero dirá en definitiva qué entorno es el que podremos pagar y mantener (Que hay que pensar en todo, aires acondicionados, cpd, pintura, limpieza, luz…), el servidor que vamos a migrar estará en un entorno virtual basado en Vmware pero también sirve con Citrix o Microsoft Hyper-V.

Las bondades que actualmente tienen los entornos Cloud como Amazon son que se pagan por meses y por uso, si tienes un servidor apagado no pagas por él (Bueno,.. más o menos (hay que tener en cuenta las Elastic IP, discos EBS, snapshots en S3, VPC, ….) Ya os lo explicaré más adelante como funcionan estos productos o mientras vayáis preguntando con comentarios o mediante correos os iremos solventado vuestras dudas. Otra de las bondades de estos sistemas en Cloud es que son altamente escalables, si necesitamos más recursos únicamente ampliamos el servidor y ya está en minutos tenemos más CPU, más RAM, más disco, incluso discos SSD, o incluso más IOPS en un disco específico, si por ejemplo queremos montar un sistema de video en streaming o un juego para móvil (app) y no sabemos la cantidad de usuarios que vamos a tener en el sistema y no podemos preveerlo podremos usar métodos como Auto-Scaling que arrancará instancias EC2 (Servidores) de las mismas características que harán Load Balancing entre ellos y tendremos recursos ilimitados para proveer a nuestros clientes del servicio deseado, pero lo mejor de todo es que cuando los clientes dejen de usar la aplicación, juego, o dejen de visionar el partido de futbol en streaming estos servidores se irán apagando / eliminando y el coste del producto será únicamente el usado.

Pero dejemonos de tanto texto y vamos a lo que realmente hemos venido a hacer.

 

Migrar servidor a Amazon AWS.

Lo primero que vamos a hacer es descargar las herramientas de linea de comandos para Windows para trabajar con Amazon AWS en este caso EC2 también las podemos encontrar para linux y Mac, la parte de Windows ya hablamos de ella en el artículo donde explicamos como apagar y arrancar instancias EC2 en Amazon, pero os vuelvo a poner los pasos para que el artículo sea un paso a paso como sé que os gusta.

1.- Descargar cliente EC2: http://aws.amazon.com/developertools/351

Ahora vamos a definir la variable de entorno JAVA_HOME con el siguiente proceso:

Pulsar sobre Inicio –> Botón derecho sobre Computer y pulsar sobre Propiedades

Pulsar sobre Configuración avanzada del sistema.

Pulsar sobre Variables de entorno

En el apartado Variables de sistema pulsar sobre Nueva.

Nombre del variable: JAVA_HOME

Valor de la variable: C:\Program Files\Java\jre7

Pulsar sobre Aceptar.

Ahora vamos a definir la variable de entorno EC2_HOME con el mismo proceso anterior:

Pulsar sobre Inicio –> Botón derecho sobre Computer y pulsar sobre Propiedades

Pulsar sobre Configuración avanzada del sistema.

Pulsar sobre Variables de entorno

En el apartado Variables de sistema pulsar sobre Nueva.

Nombre del variable: EC2_HOME

Valor de la variable: “Ubicación de la carpeta del cliente de EC2 que hemos descargado en el primer punto” por ejemplo C:\AWS\CLI

Pulsar sobre Aceptar.

Ahora vamos a añadir la nueva ruta al Path

Acceder de nuevo al configurador de administración de variables de entorno y en variables de sistema pulsamos sobre Path pulsamos sobre Editar y añadimos %EC2_HOME%\bin al valor de la variable.

Pulsar sobre Aceptar.

Ahora vamos a definir la variable de entorno AWS_ACCESS_KEY y AWS_SECRET_KEY con el mismo proceso que hemos usado anteriormente para que cada vez que ejecutamos un proceso no tengamos que estar poniendo la clave a mano.

Primero deberemos conocer las claves desde Amazon, seguid el siguiente enlace para averiguarlas:https://console.aws.amazon.com/iam/home?#security_credential y acceded a Access Keys (Access Key ID and Secret Access Key)

Pulsar sobre Inicio –> Botón derecho sobre Computer y pulsar sobre Propiedades

Pulsar sobre Configuración avanzada del sistema.

Pulsar sobre Variables de entorno

En el apartado Variables de sistema pulsar sobre Nueva.

Nombre de la variable: AWS_ACCESS_KEY

Valor de la variable: <access Key ID de vuestra conexión>

En el apartado Variables de sistema pulsar sobre Nueva.

Nombre de la variable: AWS_SECRET_KEY

Valor de la variable: <Secret Access Key de vuestra conexión>

Pulsar sobre Aceptar.

Si queremos comprobar que el sistema está funcionando correctamente y hemos seguido los puntos paso a paso deberíamos gracias a este comando

ec2-describe-regions

veremos un resultado parecido al siguiente:

REGION  us-east-1       ec2.us-east-1.amazonaws.com
REGION  eu-west-1       ec2.eu-west-1.amazonaws.com
REGION  sa-east-1       ec2.sa-east-1.amazonaws.com
REGION  ap-northeast-1  ec2.ap-northeast-1.amazonaws.com
REGION  us-west-2       ec2.us-west-2.amazonaws.com
REGION  us-west-1       ec2.us-west-1.amazonaws.com
REGION  ap-southeast-1  ec2.ap-southeast-1.amazonaws.com

La región por defecto cuando migremos o arranquemos o hagamos cualquier acción desde el CLI será us-east1 y si queremos por ejemplo crear la instancia EC2 (Servidor) en Europa (Irlanda) deberemos modificar la región por eu-west1 con el modificador –region eu-west-1 o creando una variable de entorno llamada EC2_URL con el siguiente valor: https://ec2.eu-west-1.amazonaws.com tal y como lo hemos hecho en los pasos anteriores.

De momento a fecha de este post Amazon AWS no soporta la migración de servidores con más de un disco virtual con el comando ec2-import-instance y deberemos usar para ello el comando ec2-import-volume y luego atacharemos el volumen EBS a la instancia EC2 que hayamos importado.

Os dejo un enlace donde se muestra la preparación previa de la máquina virtual a migrar http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/PreparingYourVirtualMachine.html, pero estos son los puntos clave.

El servidor virtual preferiblemente debería disponer de una IP por DHCP o nos deberemos asegurar que cuando se vaya a realizar la exportacion hacia Amazon la IP de destino esté disponible en el VPC para poder acceder a esta instancia EC2 remotamente y sin problemas.

 

Deberíamos apagar también el antivirus y cualquier Firewall e IPS que tengamos instalado en el servidor a migrar.

 

Desconectar cualquier unidad cd CD-ROM asignada a la máquina virtual

 

Apagar el servidor que vamos a migrar

Existe otro metodo para realizar la migración de la máquina virtual hacia Amazon os lo dejo por aquí para que lo tengáis en cuenta (No hace falta hacer ninguno de los procesos que hemos mencionado hasta este punto, es más intuitivo, pero tiene sus contras).

EC2 VM Import Connector mediante la instalación de una VirtualApp descargada de Amazon pero si el servidor virtual que queremos migrar a AWS dispone de más de un disco virtual asignado nos aparecerá el siguiente error: “This VM Has More Than One Disk. Cannot Export.”  y no podremos realizar la migración del servidor, pero como todo tiene solución deberemos desasignar los discos virtuales adicionales en el servidor y volver a realizar la exportación hacia Amazon AWS o seguir el procedimiento tal como lo estamos haciendo en este artículo.

Vamos allá.

Ahora deberemos realizar el export de la máquina virtual mediante un export a OVF, pero os dejo un enlace para que podáis ver como se debe hacer para Citrix y/o Hyper-V también; http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ExportingYourVM.html de esta forma cuando hagamos la migración el disco .vmdk estará comprimido y no deberemos transferir por la red todo el espacio usado por el .vmdk o similar.

Accedemos a nuestro virtual Center, seleccionamos el servidor que queremos migrar a Amazon y pulsamos sobre File –-> Export –> Export OVF Template…

Export-vmdk-to-Amazon_thumb

Dejamos marcado el formato OVF (Ya que de esta forma si tenemos más de un disco los tendremos separados y podremos usar un comando para cada tipo de disco).

Export VM to AWS

Pulsamos sobre OK y empezará el proceso, si tiene más de un disco veremos que en la pantalla de progreso pone exporting item 1/2 por ejemplo si tiene 2 discos.

Export VM to Amazon AWS

Cuando termine la exportación, Podremos arrancar el servidor, pero pensad que todos los cambios que realicemos en él no se migrarán al entorno en Amazon. Quizá en un futuro exista un proceso que realice una migración incremental de los cambios realizados después de la primera migración. A ver si alguien de Amazon me oye y lo implementan.

Mientras tanto vamos a crear un Bucket en S3 si no lo tenemos ya creado para poder enviar el disco virtual hacia S3 para posteriormente converitrlo en instancia EC2.

Accedemos a nuestro entorno de Amazon AWS y accedemos al servicio S3.

Crear Bucket en Amazon S3

Pulsamos sobre Create Bucket

Create a Bucket in S3

Escribimos un nombre descriptivo al bucket y pulsamos sobre Create. (Todo en minúsculas)

Ahora ya tenemos nuestro repositorio S3 creado y listo para ser usado.

Accedemos a la linea de comandos preparados para realizar la exportación de la máquina virtual hacia el entorno de Amazon

Para realizar la importación debemos tener claras algunas cosas. Región donde irá ubicada la instancia con el modificador –region eu-west-1 lo pondremos en Irlanda.

Saber en que VPC lo vamos a asignar si tuviéramos varios con el modificador –subnet subnet_id a mí por ejemplo me gusta disponer de varios VPC creados en Amazon, (Entorno de Desarrollo, Entorno de dominio, Entorno de Test) con estos 3 VPC consigo que los servidores no se vean entre sí a no ser que haga VPC Peering y que pueda por ejemplo en uno de ellos disponer de una VPN contra una delegación externa a Amazon.

Conocer el tipo de instancia que queremos para nuestro servidor a migrar (Podéis ver la tabla comparativa en el siguiente enlace:

Nomenclatura de instancias EC2 http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html

Definición de instancias EC2 http://aws.amazon.com/es/ec2/instance-types/

Precios por tipo de instancia EC2 http://aws.amazon.com/es/ec2/pricing/

Aunque yo siempre migro todas los servidores en instancias tipo t1.micro para que los costes sean los mínimos durante la fase de migración y puesta a punto (pensad que todavía nos quedará por migrar los discos adicionales, comprobar que todo funciona correctamente, configurar la ip fija, etc..)

Comentado lo anterior vamos a importar la instancia EC2 a Amazon con el siguiente comando ec2-import-instance si pulsáis en el veréis todas las opciones disponibles.

ec2-import-instance DISK_IMAGE_FILENAME -t INSTANCETYPE -f FORMAT -a ARCHITECTURE-SYSTEM -b S3_BUCKET_NAME -o OWNER -w SECRETKEY -p PLATFORM_NAME

Para nuestro caso que vamos a migrar una máquina virtual VMware de 32 bits que lo vamos a hacer con un tipo de instancia Micro para ahorro de costes el comando que usamos es el siguiente:

ec2-import-instance TEST2-disk1.vmdk -region eu-west-1 -t t1.micro -f VMDK -a i386 –b migracionvmtoaws–o %AWS_ACCESS_KEY% –w %AWS_SECRET_KEY%

El tiempo estimado de migracion depende del ancho de banda que tengáis, cuanto más mejor ya que recordad que el servidor está apagado o al menos si lo habéis arrancado, pensad que los cambios que hagan los usuarios no estarán en el sistema migrado.

AWS migration from VMDK

Si accedemos mientras se realiza el proceso a nuestro Bucket en S3 veremos que se van creando los ficheros.

Bucket S3 importing VM from VMDK

Migrar VM a EC2

En el caso que por algún motivo se interrumpiera la migración, con el siguiente comando podríamos volverlo a reanudar.

ec2-resume-import

Cuando finalice la importación ya podremos arrancar la instancia ec2 y eliminar los datos temporales de s3 mediante el siguiente comando o desde el servicio EC2 accediendo al Bucket creado:

ec2-delete-disk-image

En el caso que el servidor virtual tenga 2 discos o más deberemos usar el comando siguiente:

c2-import-volume disk_image -f file_format -z availability_zone -b s3_bucket_name -o access_key -w secret_key

Y luego atachar los discos EBS a la instancia EC2.

Lo que siempre hago y recomiendo a mis clientes es nombrar a cada disco (EBS) con el nombre del servidor_C y _D como si de unidades se tratara, igual que cada instancia EC2 le pongo un nombre de servidor como Server0001 – <Descripcion>, en Amazon es muy fácil crear servidores pero si no tienes una rutina de creación y una nomenclatura establecida puede convertirse en algo muy desordenado que lleva a confusiones y puedes llegar a eliminar discos o incluso servidores que creías que eran otros.

Si tenéis alguna duda por favor dejad un comentario o enviadme un email y os intentaré ayudar en todo lo que pueda.

Por cierto, si en el proceso de migración habéis hecho alguna prueba y se os han quedado los procesos a medias, mirad el siguiente artículo para solventar los problemas (Se me ha quedado una instancia creada y no la puedo borrar, no puedo terminar una instancia, …) http://www.megacrack.es/2014/05/18/como-cancelar-tareas-de-importacion-en-amazon-aws/

Saludos y hasta pronto.

Related Posts Plugin for WordPress, Blogger...
Etiquetas: , , , , ,


One Response to “Migrar servidor virtual hacia el Cloud con Amazon AWS”

  1. CHRISTIAN GALLEGOS Says:

    Hola, necesito migrar mi web a los servicios de amazon, me puede dar presupuesto por favor.

Leave a Reply

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>