
Soy Oscar Mas y hoy os quiero enseñar como migrar nuestra partición de Zimbra ( /opt ) a la plataforma de Amazon Web Services (AWS). Migrar nuestra plataforma de Zimbra a Amazon Web Services (AWS), se puede realizar de dos maneras:
- Migrar el equipo entero, con el sistema operativo
- Migrar la partición de datos ( /opt )
En este post, he escogido migrar la partición de datos a Amazon Web Services (AWS), ya que de esta manera migraremos todos los datos y empezaremos con un sistema operativo limpio. Todo el proceso de migración, se ha realizado en us-west-2 que corresponde al DataCenter de Amazon Web Services (AWS), que está ubicado en US West (Oregon).
Para realizar el procedimiento, necesitaremos dos equipos:
- zimbra.ilba.cat: es donde está ubicado nuestro servidor de Zimbra
- ec2clitools.ilba.cat: desde este servidor lanzaremos comandos al sistema de Amazon Web Services (AWS) y desde aquí migraremos nuestra partición de datos a Amazon Web Services (AWS).
Para hacer el proceso más ameno, he dividido el procedimiento en dos fases:
- FASE 1: Preparación
- FASE 2: Importación de un volumen
FASE 1: Preparación
Pasos previos a la importación
Antes de empezar a realizar ningún tipo de acción en el equipo, es importante verificar que no tenemos ningún tipo de SnapShot en el equipo y verificaremos el tipo de partición que hemos usado en el despliegue de nuestro equipo de Zimbra. En mi caso la partición OPT está en EXT4 con LVM. Y ya solamente nos queda apagar el equipo:
[root@zimbra ~]# poweroff
Exportación del equipo a OVF
Mediante la consola de vSphere, exportaremos nuestro equipo de Zimbra al formato OVF, para posteriormente importarlo a Amazon Web Services (AWS). Antes de realizar el procedimiento, es interesante quitar la partición Root del equipo virtual, ya que no lo vamos a usar. Una vez hecho esto, empezaremos la exportación:
Copiamos los ficheros que hemos creado, en nuestro servidor de Ubuntu ( ec2clitools.ilba.cat ), de los cuales, solamente usaremos el VMDK.
Instalación y configuración de Amazon EC2 CLI Tools
Para realizar la exportación de nuestra partición OPT, necesitamos instalar las herramientas de Amazon EC2 CLI Tools, para poder realizar el procedimientoi. Nos iremos a la consola de Amazon Web Services (AWS): https://console.aws.amazon.com/iam/home?#security_credential y nos crearemos el Access Key ID y el Secret Access Key, los cuales serán necesarios para poder operar desde la consola de Linux ( ec2clitools.ilba.cat ) de Amazon EC2:
Colocaremos el Access Key ID y el Secret Access Keyen nuestro bashrc, para que cada vez que hagamos login en nuestro sistema de Linux ( ec2clitools.ilba.cat ), podemos lanzar comandos a Amazon Web Services (AWS), sin necesidad de ir cargando las variables, cada vez que iniciemos sesión en nuestro servidor de Linux ( ec2clitools.ilba.cat ):
root@ec2clitools:~# echo "# Claves AWS" >> .bashrc
root@ec2clitools:~# echo "export AWS_ACCESS_KEY=AKIAIHQCI6PR57EWJSMQ" >> .bashrc
root@ec2clitools:~# echo "export AWS_SECRET_KEY=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" >> .bashrc
root@ec2clitools:~# apt-get -y install ec2-api-tools
Verificaremos que todo funciona correctamente, consultando las regiones que Amazon Web Services (AWS) tiene disponible:
root@ec2clitools:~# ec2-describe-regions
Os dejo una tabla de la relación de Nombres y códigos:
Importando el OVF a AWS
Durante el proceso de importación, Amazon Web Services (AWS) usará S3 para importar los datos a EC2. Para ello necesitaremos tener creado un Bucket antes de realizar la importación, al cual lo llamaremos: zimbrailba
Security Group
Amazon Web Services (AWS), dispone de dos niveles de Firewall: uno a nivel de red y otro a nivel de instancia ( virtual machine ). En nuestro caso, usaremos el firewall a nivel de instancia, para ello necesitamos instalar las herramientas de Amazon Web Services (AWS), para poder configurar el firewall. Estas herramientas, las instalaremos en nuestro servidor ec2clitools.ilba.cat.
root@ec2clitools:~# apt-get -y install awscli
Lanzaremos el wizard, en el cual le indicaremos nuestro Access Key ID, el Secret Access Keyen, la región donde vamos a trabajar y el formato que nos enseñará la consola, al lanzar los comandos. En nuestro caso hemos escogido JSON, al ser el más standard:
root@ec2clitools:~# aws configure
Crearemos el Security Group y le pondremos una descripción, para que sea más amena la gestión de las reglas:
root@ec2clitools:~# aws ec2 create-security-group --group-name SG_Zimbra --description "Security group de Zimbra"
Añadiremos reglas a nuestro security group, las cuales, nos perimirán el acceso a los diferentes servicios de nuestro sistema de Zimbra:
root@ec2clitools:~# aws ec2 authorize-security-group-ingress --group-name SG_Zimbra --protocol tcp --port 22 --cidr 0.0.0.0/0
root@ec2clitools:~# aws ec2 authorize-security-group-ingress --group-name SG_Zimbra --protocol tcp --port 25 --cidr 0.0.0.0/0
root@ec2clitools:~# aws ec2 authorize-security-group-ingress --group-name SG_Zimbra --protocol tcp --port 587 --cidr 0.0.0.0/0
root@ec2clitools:~# aws ec2 authorize-security-group-ingress --group-name SG_Zimbra --protocol tcp --port 7071 --cidr 0.0.0.0/0
root@ec2clitools:~# aws ec2 authorize-security-group-ingress --group-name SG_Zimbra --protocol tcp --port 110 --cidr 0.0.0.0/0
root@ec2clitools:~# aws ec2 authorize-security-group-ingress --group-name SG_Zimbra --protocol tcp --port 143 --cidr 0.0.0.0/0
etc.
Abriremos todos los puertos necesarios para el correcto funcionamiento de nuestro servidor de Zimbra. Cabe destacar que hemos abierto el puerto 22 de SSH, para todo el mundo.
FASE 2: Importación de un volumen
Importaremos nuestra partición de datos de Zimbra a la plataforma de Amazon Web Services (AWS), mediante el comando: ec2-import-volume. La velocidad irá en función de nuestro ancho de banda y del tamaño de nuestra partición de datos de Zimbra ( /opt ).
root@ec2clitools:/usr/local/src# ec2-import-volume Zimbra-disk1.vmdk -f vmdk -s 30 -z us-west-2a -b zimbrailba -o AKIAIHQCI6PR57EWJSMQ -w wQbv7YW4MG3rsiR2/dwz34GaEH45QeMrl/AYw9XH --region us-west-2
Mientras subimos nuestro equipo a Services (AWS), podremos observar que todo el tráfico viaja encriptado mediante el protocolo HTTPS:
Le pondremos un nombre a nuestro volumen, para hacer más amena la localización en las diferentes consolas:
root@ec2clitools:~# aws ec2 create-tags --resources vol-63bf3272 --tags Key=Name,Value=HD_Zimbra
root@ec2clitools:~# aws ec2 describe-volumes
Crearemos un nuevo equipo en Amazon Web Services (AWS) y enlazaremos el volumen que hemos subido, en el cual están todos los datos de nuestro sistema de Zimbra, al equipo que hemos creado:
Crearemos una nueva instancia y le enlazaremos el volumen que hemos subido:
Una vez realizado el procedimiento, montaremos la partición en nuestro sistema operativo y realizaremos la instalación de nuestro sistema de Zimbra. Cuando realicemos nuestra instalación de Zimbra, el sistema, se dará cuenta que existen datos en opt y el wizard nos permitirá realizar una instalación sin eliminar los datos.
Cabe destacar que antes de realizar el procedimiento de instalación de Zimbra en el equipo que nos ha entregado Amazon Web Services (AWS), es necesario instalar un sistema bind, cambiar el hostname del equipo y modificar el fichero de hosts, para que la instalación no nos de errores. Todos estos pasos, los podemos encontrar en los diferentes post que Jorge ha ido publicando.
Verificaremos que tenemos la partición que hemos subido Amazon Web Services (AWS), está disponible en nuestra instancia:
[centos@zcs ~]$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvda 202:0 0 8G 0 disk
└─xvda1 202:1 0 8G 0 part /
xvdf 202:80 0 30G 0 disk
├─xvdf1 202:81 0 500M 0 part
└─xvdf2 202:82 0 19,5G 0 part
Montaremos la partición de Zimbra en nuestra instancia:
[root@zcs centos]# yum -y install lvm2
[root@zcs centos]# echo “/dev/centos/opt /opt ext4 defaults 0 2” >> /etc/fstab
[root@zcs centos]# mount -a
Instalaremos nuestro sistema de Zimbra, preservando los datos que hemos importado. Recordar que durante el proceso de instalación, el sistema detectará la partición de Zimbra y se realizará una instalación “dummy”. Recordar que es importante, que la versión de Zimbra que instalemos sea la misma versión que había antes de subir el volumen a Amazon Web Services (AWS):
[root@zcs centos]# cd /usr/local/src/
[root@zcs src ]# wget https://files.zimbra.com/downloads/8.6.0_GA/zcs-NETWORK-8.6.0_GA_1153.RHEL7_64.20141215151204.tgz
[root@zcs src ]# tar xzvf zcs-NETWORK-8.6.0_GA_1153.RHEL7_64.20141215151204.tgz
[root@zcs src]# cd zcs-NETWORK-8.6.0_GA_1153.RHEL7_64.20141215151204
[root@zcs zcs-NETWORK-8.6.0_GA_1153.RHEL7_64.20141215151204] ]# ./install.sh
Una vez instalado nuestro sistema de Zimbra, ya podremos empezar a trabajar. Es importante asignarle una Elastic IP, ya que cada vez que reiniciemos el equipo, Amazon Web Services (AWS) nos asignará una nueva IP pública.
Espero que este post os sirva de ayuda.













Agradezco, si alguien tiene experiencia del costo de tener zimbra sobre amazon. Me interesa saber mas o menos el costo mensual de mover un email server de aproximadamente unos 100 usuarios.