v7 – Rsync + Ec2 + EBS backups en la nube para tus vServers

Después buscar alternativas y posibilidades para la estrategia de backup para la data y maquinas virtuales de vClouden al final encontré una solución simple, financieramente viable y rápida, la cual paso a detallar:

Donde almacenar ?

Aunque como mencione las maquinas EC2 no son precisamente baratas si las comparamos con otros servicios de VPS, lo cierto es que Amazon ofrece uno de las mejores y más económicas soluciones de almacenamiento disponibles (S3 y EBS), la primera para el almacenamiento de objetos y la segunda para el almacenamiento de volumenes para instancias de maquinas EC2, y particularmente importa la segunda por 2 razones:

1) precio:

  • $0.10 por cada GB/mes
  • $0.10 por 1 millón I/O requests

2) redundancia: cada unidad EBS es automáticamente replicada dentro de la zona de disponibilidad en la que se encuentre el datacenter, previniendo perdida de datos por problemas de hardware.

Que mecanismo ?

timemachine

Si se busca sobre backups en internet la respuesta es bastante unánime Rsync, rsync es la razón por la que la combinación EC2 + EBS tiene sentido, es un mecanismo de backup incremental que además puede funcionar en remoto, que lo hace perfecto para realizar backups de bases de datos las cuales van creciendo en tamaño a medida que pasa el tiempo y dada la sensibilidad de los datos empresariales lo ideal es tener los backups de datos en una infraestructura diferente a la que corren.

Como juega todo junto ?

En primera instancia necesitamos una instancia EC2 que será nuestro servidor de backups, solo necesitamos una simple máquina para esta tarea por lo que una “micro” estará más que bien, en la creación de la instancia debes de selecciona que tamaño deseas para el disco EBS asociado a esa maquina, aquí es donde viene lo importante:

Los discos EBS son redimencionables, por lo que puedes comenzar digamos con una instancias micro con un disco de 10Gb y posteriormente si tus backups crecen simplemente ampliar esa capacidad de almacenamiento.

Si bien el objetivo de este post no es servir de tutorial para Rsync existen excelentes tutoriales como este (http://goo.gl/Y6vwn), estos son los pasos que usé para backups de linux a linux:

1) genera una nueva ssh key para acceder al servidor remoto:

    ssh-keygen

2) de ser necesario añade la llave privada al sshd =>

eval `ssh-agent -s`
    ssh-add tu_llave_rsync

3) Crea una instancia EC2, aqui un tutorial => http://goo.gl/XjBDgO

4) En buena parte de las distribuciones Rsync viene instalado por defecto asi que este paso no se requiere.

5) Realizar la sincronizacion:

sudo rsync -avz –delete –rsync-path=”sudo rsync” /path_carpeta_compartida ubuntu@backup.profitsoft.co:/home/ubuntu/backup/

estamos diciendole a Rsync:

-a => Que el esquema de comparación sea por archivo mirando los timestamps y tamaño.

-z => Que realize compresión antes del envio remoto.

–delete => Que elimine archivos que están en el destino pero no en la carpeta de origen.

–rsync-path => Necesario si ejecutas el vServer en el puerto 690 con root, para que se puedan leer archivos y conservar permisos

ubuntu@backup.profitsoft.co:/home/ubuntu/backup/ => usuario, servidor y carpeta de destino para realizar la sincronización.

Costos:

Suponiendo que empezamos con una instancia Micro y una EBS de 10Gb los costos mensuales son:

costo = $0.020/hora + 720 horas + 10*Gb $0.1Gb/mes

costo: 15.4USD/mes

Ahora aqui estamos considerando que tenemos la instancia encendida todo el mes, pero realmente para el backup solo la necesitamos encendida 1 hora por día, asi que podemos encender la maquina sincronizar y apagarla, asi que replanteemos costos:

costo = $0.020/hora + 1hora/dia * 30 dias + 10*Gb $0.1Gb/mes

costo = 1.6 USD/mes

Asi que gracias a la nube y Rsync puedes tener backups remotos, incrementales y baratos.

Aparte – Automatización:

1) los backups => lo mejor es automatizar en un cron la generación de los backups cosa que es tan simple como añadir al /etc/crontab:

0    3    * * *   root    rsync -avz –delete –rsync-path=sudo rsync /path_carpeta_compartida ubuntu@backup.profitsoft.co:/home/ubuntu/backup/

esto quiere decir: realiza la sincronización todos los dias a las 3 am.

2) Encendido y apagado maquinas EC2: Aprovechando la API de amazon se puede programar un script que encienda la maquina de backups 15 mins antes antes del backup y que la apague 1 hora después, para los interesados lo anterior es bastante simple usando Ruby y la gema Fog, queda algo así:

 @connection ||= Fog::Compute.new( :provider => 'AWS',
                                   :aws_access_key_id => "xxxx",
                                   :aws_secret_access_key => "xxxx)

 @connection.servers.first.start
 @connection.servers.first.stop

Un saludo y espero que les sea útil.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s