¿Cómo programar instantáneas automáticas (diarias) de la instancia de Windows AWS EC2?

12

Tengo algunos servidores de Windows alojados en Amazon EC2. Algunos ejecutan Windows Server 2003 y otros ejecutan Windows Server 2008. Estas son instancias respaldadas por EBS. La mayoría de las instancias también tienen algunos volúmenes EBS adicionales adjuntos.

Queremos programar una instantánea diaria de las máquinas Windows (y también los volúmenes EBS adjuntos) en S3 para que tengamos copias de seguridad diarias disponibles.

Uno pensaría que este es un requisito muy común y estaría disponible a través de la consola de administración de AWS, pero lamentablemente no lo es. ¿Qué enfoques hay disponibles? ¿Cómo programo instantáneas diarias en nuestros servidores de Windows?

Hay varios ejemplos de scripts disponibles en línea para Linux, pero no tanto para Windows. He echado un vistazo a http://sehmer.blogspot.com/2011/04/amazon-ec2-daily-snapshot-script-for.html , así como a https://github.com/ronmichael/aws-snapshot- planificador . ¿Alguien ha utilizado uno de estos enfoques y funciona?

También he considerado un servicio como Skeddly que parece económico a primera vista, pero cuando se considera usarlo para varios servidores, el precio pronto aumenta a tal punto que parece una mejor opción para crear su propia solución, ya que luego puede aplicarla a Nuevos servidores en el futuro. Con Skeddly pagaremos por cada servidor.

¿Cómo programamos instantáneas diarias de nuestras instancias de Windows?

Stanley
fuente

Respuestas:

9

Amazon Web Services anunció recientemente las herramientas de línea de comandos de PowerShell para Windows y está empaquetado junto con sus herramientas de AWS para .NET SDK .

Las herramientas de AWS Powershell hacen que sea bastante fácil crear una instantánea:

New-EC2Snapshot "vol-371acd04" -Description "My Snapshot"

Y puede consultar sus instantáneas de esta manera:

PS C:\Program Files (x86)\AWS Tools\PowerShell> Get-EC2Snapshot | more


SnapshotId  : snap-18be2b28
VolumeId    : vol-371acd04
Status      : completed
StartTime   : 2012-12-28T08:17:00.000Z
Progress    : 100%
OwnerId     : 383816850479
VolumeSize  : 30
Description : My Snapshot
OwnerAlias  :
Tag         : {}

Asegúrese de tener instaladas las herramientas de AWS Powershell y simplemente cree una tarea programada que utilice un script de PowerShell similar al fragmento anterior para programar sus instantáneas y debería ser bueno.

Actualizado para consultar los volúmenes EBS adjuntos:

Para consultar los volúmenes de EBS adjuntos a su instancia y luego tomar una instantánea de cada uno de ellos, puede hacer algo como esto:

# Find my instance ID from the EC2 metadata
$myInstanceID = (New-Object System.Net.WebClient).DownloadString("http://169.254.169.254/latest/meta-data/instance-id")

# Query for volumes that are attached to my Instance Id
$volumes = (Get-EC2Volume).Attachment | where {$_.InstanceId -eq $myInstanceID } | Select VolumeId

# Iterate through these volumes and snapshot each of them
foreach ($volume in $volumes)
{
    New-EC2Snapshot $volume.VolumeId -Description "My Snapshot"
}
Ameer Deen
fuente
Muchas gracias. Esto parece ser lo que estoy buscando. Solo aclare: parece que el comando New-EC2Snapshot solo tomará una instantánea de un volumen específico. En mi caso tengo la Instancia y también tiene algunos volúmenes EBS adjuntos. ¿Cómo tomaría una instantánea completa de toda la instancia, incluido el dispositivo raíz y los volúmenes EBS adjuntos?
Stanley
@Stanley se actualizó para consultar los volúmenes de EBS adjuntos a su instancia e instantánea cada uno
Ameer Deen
Ya entiendo, gracias. Eso significa que habrá instantáneas separadas para cada volumen. Solo quiero entender la implicación de esto: en caso de falla, ¿cómo mencionaría una instancia de reemplazo? Las instantáneas para el volumen raíz de EBS y los volúmenes de EBS montados individualmente estarán separados. ¿Cómo abriría una instancia de reemplazo con las unidades montadas de las diferentes instantáneas?
Stanley
¿Por qué no puede configurar esto a través del panel de control EC2? ¿Para las personas que no confían demasiado en los guiones?
leen3o
5

Actualización de 2018 A fines de 2018, hay dos formas adicionales de automatizar las instantáneas de EBS. Todavía uso el método original de los eventos de CloudWatch, ya que funcionó bien durante años y no veo ningún cambio.

Ops Automator (OA)

Ops Automator es un conjunto muy flexible de scripts lambda proporcionados por AWS. Se implementa con una plantilla de CloudWatch que se encuentra en la página anterior.

Sus pasos de configuración son

  1. La plantilla de AWS CloudFormation lanza el marco central, que incluye un conjunto de microservicios (funciones de AWS Lambda) que administran eventos de activación, selección de recursos, ejecución de tareas, control de concurrencia y finalización.
  2. Los datos de configuración de la tarea, que definen el evento desencadenante, cómo se debe realizar la tarea, qué recursos serán seleccionados por las acciones y dónde se encuentran estos recursos, se almacenan en una tabla de Amazon DynamoDB.
  3. Las plantillas de AWS CloudFormation generadas por la solución configuran tareas en función de los parámetros que defina y los roles necesarios para realizar acciones en todas las cuentas.
  4. La solución rastrea todos los pasos del proceso, los recursos seleccionados y los resultados de las acciones, incluidos los posibles errores, en una tabla de DynamoDB.
  5. La solución también aprovecha los registros de Amazon CloudWatch para el registro. Los mensajes de advertencia y error se publican en un tema creado por la solución de Amazon Simple Notification Service (Amazon SNS) que envía mensajes a una dirección de correo electrónico suscrita.

Administrador de ciclo de vida de datos (DLM)

Documentación de DLM . Esta es una solución más simple pero menos flexible que puede realizar copias de seguridad de los volúmenes cada 12 o 24 horas. Estoy desconcertado por qué AWS puso esta limitación en DLM: semanal, mensual o una frecuencia variable hubiera sido fácil de implementar.

DLM está integrado en la consola de AWS. No voy a copiar y pegar la documentación, ya que AWS mantiene las cosas bien actualizadas y los enlaces rara vez se rompen.

A partir de 2019, DLM le permite especificar intervalos más cortos de hasta dos horas, pero aún no le permite especificar intervalos de más de 24 horas.

Actualización 2017

A partir de 2017, hay otra forma de crear instantáneas regulares: usando Cloudwatch Events .

Esto le permite programar instantáneas, pero no resuelve el problema del volumen en uso, por lo que es solo una solución parcial. Puede haber una forma de usar CloudWatch Events para activar algo que inmovilice el volumen.

  1. Abra la consola de CloudWatch en https://console.aws.amazon.com/cloudwatch/ .

  2. En el panel de navegación, elija Eventos.

  3. Elija Crear regla.

  4. Para el origen del evento, haga lo siguiente:

    -> Elija Horario.

    -> Elija Tasa fija de y especifique el intervalo de programación (por ejemplo, 5 minutos). Alternativamente, elija la expresión Cron y especifique una expresión Cron (por ejemplo, cada 15 minutos de lunes a viernes, comenzando a la hora actual).

  5. Para los objetivos, elija Agregar destino y luego seleccione Crear llamada a la API EC2 Crear instantánea.

  6. Para la identificación del volumen, elija un volumen EBS.

  7. Elija Configurar detalles.

  8. Para la definición de la regla, escriba un nombre y una descripción para la regla.

  9. Para los permisos de AWS, elija la opción para crear un nuevo rol. Esto abre la consola de IAM en una nueva pestaña. El nuevo rol otorga al objetivo incorporado permiso para acceder a los recursos en su nombre. Elija Permitir. La pestaña con la ventana IAM se cierra.

  10. Elija Crear regla.

Tim
fuente
Solución gratuita, simple y nativa para aws.
Vlastimil Ovčáčík
1
El administrador del ciclo de vida ahora permite cualquiera de las frecuencias de 2/3/4/6/8/12/24 horas.
Dan Pritts
3

Saltando sobre una vieja respuesta que me inició en mi búsqueda. Felicitaciones a Ameer Deen arriba por los guiones, por cierto.

Encontré esta publicación que profundiza mucho más en los scripts de PowerShell para automatizar completamente el proceso de recopilación de datos y la instantánea EBS:

http://messor.com/aws-disaster-recovery-automation-w-powershell/

Luego, por supuesto, descubrí que todos estaban escritos para la v1.0 ahora depreciada del SDK de AWS, así que pasé el último día arreglando eso y haciendo que todos trabajen con la v2.0:

https://github.com/noahlh/aws-automated-backup-powershell

¡Disfrutar!

nlh
fuente
3

AutomatiCloud hace exactamente lo que necesita. Es una herramienta de Windows fácil de usar donde puede programar copias de seguridad para sus volúmenes EBS o instancias RDS: www.automaticoud.net

Usted puede

  • crear instantáneas y AMI basadas en ID de instancia o etiquetas
  • crear etiquetas dinámicas usando macros
  • definir 3 niveles de períodos de retención (respaldo GFS)
  • enviar notificaciones por correo electrónico
  • agregar agente VSS para instancias de Windows
  • ejecutar scripts antes / después de la copia de seguridad
  • y mucho más...
Stephan Buhre
fuente
¡Esto se ve muy bien! Voy a descargar y probarlo más tarde hoy.
leen3o
1
¿Automaticloud es gratis? ¿Me pedirá dinero después de usarlo por un tiempo?
EricP
AutomatiCloud es gratis. Las funciones avanzadas requieren registro.
Stephan Buhre
1

Ahora puede usar AWS Lambda para crear AMI automáticamente . Toda la configuración debe completarse en unos 10 minutos junto con el horario que desee. Mira su repositorio de Github para contribuir también. Ejecute el script usted mismo y evite otorgar permisos a terceros.

Romo P
fuente
0

Puede escribir un script que hable con la API EC2 para programar esas instantáneas. Se puede ejecutar en una de sus instancias existentes o puede configurar una pequeña instancia de Linux para este propósito en un t1.micro cuya única función es iniciar las instantáneas para los hosts de Windows. El script podría colocarse en el host de Linux como un trabajo cron para ejecutarse diariamente a la hora que elija.

El primer enlace es un ejemplo de secuencias de comandos que provienen de un host de Windows y podría automatizarse fácilmente con las tareas programadas en Windows.

No he usado la aplicación que vinculaste en tu segundo enlace.

Nathan V
fuente
¿Podrías darnos más detalles? Me doy cuenta de que la solución probablemente sería escribir algún tipo de script, pero este conocimiento por sí solo no es suficiente para resolver el problema, desafortunadamente. ¿Quizás tiene un enlace o una muestra de los scripts a los que se refiere?
Stanley
El que vinculó desde su pregunta realmente funcionará bien. ¿Está familiarizado con las herramientas de línea de comandos de la API de AWS?
Nathan V
0

Las capacidades actuales de EBS Snapshot para instancias de Windows se explican aquí: http://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/ebs-creating-snapshot.html

Para obtener una instantánea coherente, debe pausar las escrituras en el volumen el tiempo suficiente para que se complete la instantánea. Por lo general, esto significa que debe desmontar el volumen. El documento de AWS no analiza cómo hacerlo a través de la línea de comandos en Windows, pero puede averiguarlo en este hilo de superusuario: /superuser/704870/mount-and-dismount-hard-drive-through -a-script-software

Para obtener una instantánea del volumen de arranque del sistema, debe detener su instancia.

Espero que ayude.

nublado
fuente
0

Me doy cuenta de que esta es una vieja pregunta, pero compartiré nuestra solución.

Usamos un servicio llamado Ylastic . Su plan Pro ($ 50 / mes) incluye la programación de instantáneas de EBS, sin limitar la cantidad de servidores o discos. También eliminará las copias de seguridad anteriores si lo desea. Puede crear múltiples programaciones (por ejemplo, diariamente, semanalmente, etc.) cada una con sus propias políticas de retención.

La interfaz también le permite crear nuevas instancias a partir de copias de seguridad.

Ha funcionado de manera confiable para nosotros durante años, con aproximadamente veinte instancias y cuarenta volúmenes de EBS. Probablemente hay métodos más baratos, pero el precio es lo suficientemente bajo como para que no nos hayamos molestado en construir y mantener algo nosotros mismos.

Consulte http://blog.ylastic.com/post/148519929496/multi-region-ebs-instance-backup-management para obtener detalles sobre esta función.

Martijn Heemels
fuente