Como agendar instantâneos automáticos (diários) da Instância do Windows da AWS EC2?

12

Eu tenho alguns servidores Windows hospedados no Amazon EC2. Alguns executam o Windows Server 2003 e outros executam o Windows Server 2008. Essas são instâncias suportadas pelo EBS. A maioria das instâncias também possui alguns volumes EBS adicionais anexados.

Queremos agendar um instantâneo diário das máquinas Windows (e também os volumes EBS anexados) para o S3, para que possamos ter backups diários disponíveis.

Alguém poderia pensar que esse é um requisito muito comum e seria disponibilizado pelo AWS Management Console, mas, infelizmente, não é. Quais abordagens estão disponíveis? Como agendar instantâneos diários em nossos servidores Windows?

Existem vários exemplos de scripts disponíveis online para Linux, mas não tanto para Windows. Observei http://sehmer.blogspot.com/2011/04/amazon-ec2-daily-snapshot-script-for.html , bem como https://github.com/ronmichael/aws-snapshot- agendador . Alguém já usou uma dessas abordagens e funciona?

Também considerei um serviço como o Skeddly, que parece barato à primeira vista, mas quando você olha para usá-lo em vários servidores, o preço logo aumenta para um ponto em que parece uma opção melhor criar sua própria solução, e então aplicá-lo a novos servidores no futuro. Com o Skeddly, pagaremos por cada servidor.

Como agendamos instantâneos diários de nossas instâncias do Windows?

Stanley
fonte

Respostas:

9

A Amazon Web Services anunciou recentemente as ferramentas de linha de comando do PowerShell para Windows e é fornecida com o AWS Tools for .NET SDK .

As ferramentas do AWS Powershell facilitam a criação de um instantâneo:

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

E você pode consultar seus instantâneos assim:

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         : {}

Verifique se você possui as ferramentas do AWS Powershell instaladas e crie uma tarefa agendada que use um script de PowerShell semelhante ao snippet acima para agendar seus snapshots e você deve ser bom.

Atualizado para consultar volumes EBS anexados:

Para consultar volumes EBS anexados à sua instância e capturar instantaneamente cada um deles, você pode fazer algo assim:

# 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
fonte
Muito obrigado. Parece ser o que estou procurando. Apenas esclareça: parece que o comando New-EC2Snapshot fará apenas uma captura instantânea de um volume específico. No meu caso, tenho a Instância e ela também possui alguns volumes EBS anexados. Como tirar um instantâneo completo de toda a instância, incluindo o dispositivo raiz e os volumes EBS anexados?
Stanley
@Stanley atualizado para consulta para os volumes EBS ligados a sua instância e instantâneo de cada
Ameer Deen
I ver obrigado. Isso significa que haverá instantâneos separados para cada volume. Eu só quero entender a implicação disso: em caso de falha, como eu abriria uma instância de substituição? As capturas instantâneas para o volume raiz do EBS e os volumes EBS montados individuais serão todos separados. Como abrir uma instância de substituição com as unidades montadas dos diferentes instantâneos?
Stanley
Por que você não pode configurá-lo através do painel do EC2? Para pessoas que não estão muito confiantes com os scripts?
Leon3o # 4/13
5

Atualização de 2018 No final de 2018, existem duas maneiras adicionais de automatizar os instantâneos do EBS. Eu ainda uso o método original dos eventos do CloudWatch, pois funcionou bem por anos e não vejo sentido em mudar.

Ops Automator (OA)

Ops Automator é um conjunto muito flexível de scripts lambda fornecidos pela AWS. Ele foi implantado com um modelo CloudWatch, que está na página acima.

Suas etapas de configuração são

  1. O modelo do AWS CloudFormation lança a estrutura principal, que inclui um conjunto de microsserviços (funções do AWS Lambda) que gerencia eventos de acionamento, seleção de recursos, execução de tarefas, controle de simultaneidade e conclusão.
  2. Os dados de configuração da tarefa, que definem o evento acionador, como a tarefa deve ser executada, quais recursos serão selecionados pelas ações e onde esses recursos estão localizados, são armazenados em uma tabela do Amazon DynamoDB.
  3. Os modelos do AWS CloudFormation gerados por solução configuram tarefas com base nos parâmetros definidos por você e nas funções necessárias para executar ações nas contas.
  4. A solução rastreia todas as etapas do processo, os recursos selecionados e os resultados das ações, incluindo possíveis erros, em uma tabela do DynamoDB.
  5. A solução também aproveita o Amazon CloudWatch Logs para registro. As mensagens de aviso e erro são publicadas em um tópico do Amazon Simple Notification Service (Amazon SNS) criado pela solução que envia mensagens para um endereço de email inscrito.

Gerenciador de ciclo de vida de dados (DLM)

Documentação DLM . Essa é uma solução mais simples, mas menos flexível, que pode fazer backup de volumes a cada 12 ou 24 horas. Estou confuso por que a AWS colocou essa limitação no DLM - semanal, mensal ou com uma frequência variável teria sido fácil de implementar.

O DLM está integrado ao console da AWS. Não vou copiar e colar a documentação, pois a AWS mantém as coisas bem atualizadas e os links raramente quebram.

A partir de 2019, o DLM permite especificar intervalos mais curtos até duas horas, mas ainda não permite especificar intervalos de mais de 24 horas.

Atualização de 2017

A partir de 2017, existe outra maneira de criar instantâneos regulares - usando o Cloudwatch Events .

Isso permite que você agende instantâneos, mas não resolve o problema do volume em uso, por isso é apenas uma solução parcial. Pode haver uma maneira de usar o CloudWatch Events para acionar algo que inativa o volume.

  1. Abra o console do CloudWatch em https://console.aws.amazon.com/cloudwatch/ .

  2. No painel de navegação, escolha Eventos.

  3. Escolha Criar regra.

  4. Para Fonte de Eventos, faça o seguinte:

    -> Escolha Agenda.

    -> Escolha Taxa fixa de e especifique o intervalo de agendamento (por exemplo, 5 minutos). Como alternativa, escolha Expressão Cron e especifique uma expressão Cron (por exemplo, a cada 15 minutos de segunda a sexta-feira, começando no horário atual).

  5. Para Destinos, escolha Adicionar destino e selecione Chamada de API do EC2 Create Snapshot API.

  6. Para ID do volume, escolha um volume EBS.

  7. Escolha Configurar detalhes.

  8. Para definição de regra, digite um nome e uma descrição para a regra.

  9. Para permissões da AWS, escolha a opção para criar uma nova função. Isso abre o console do IAM em uma nova guia. A nova função concede ao destino interno permissão para acessar recursos em seu nome. Escolha Permitir. A guia com a janela do IAM é fechada.

  10. Escolha Criar regra.

Tim
fonte
Solução gratuita, simples e nativa para aws.
Vlastimil Ovčáčík 13/08/17
1
O gerenciador do ciclo de vida agora permite uma frequência de 2/3/4/6/8/12/24 horas.
Dan Pritts
3

Pulando em uma resposta antiga que me iniciou na minha pesquisa. Parabéns a Ameer Deen acima pelos scripts, btw.

Encontrei esta postagem que aborda muito mais profundamente os scripts do PowerShell para automatizar totalmente o processo de coleta de dados e de captura instantânea do EBS:

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

Então, é claro, descobri que tudo isso foi escrito para a v1.0 agora depreciada do AWS SDK, então passei o último dia corrigindo isso e fazendo com que todos trabalhassem com a v2.0:

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

Desfrutar!

nlh
fonte
3

O AutomatiCloud faz exatamente o que você precisa. É uma ferramenta do Windows fácil de usar, onde você pode agendar backups para suas instâncias de Volumes ou RDS do EBS: www.automaticoud.net

Você pode

  • crie capturas instantâneas e AMIs com base em IDs ou tags de instância
  • crie tags dinâmicas usando macros
  • definir 3 níveis de períodos de retenção (backup do GFS)
  • enviar notificações por email
  • adicionar agente VSS para instâncias do Windows
  • executar scripts antes / depois do backup
  • e muito mais...
Stephan Buhre
fonte
Isso parece muito bom! Vou baixar e testar hoje mais tarde.
leen3o
1
O automaticloud é gratuito? Será que vai me pedir dinheiro depois que eu usá-lo por um tempo?
EricP
O AutomatiCloud é gratuito. Recursos avançados requerem registro.
Stephan Buhre
1

Agora você pode usar o AWS Lambda para criar AMIs automaticamente . Toda a instalação deve ser concluída em cerca de 10 minutos, juntamente com a programação que você desejar. Veja o repo do Github para contribuir também. Execute o script sozinho e evite dar permissões a terceiros.

Romo P
fonte
0

Você pode escrever um script que fale com a API do EC2 para agendar esses instantâneos. Ele pode ser executado em uma de suas instâncias existentes ou você pode configurar uma pequena instância Linux para esse fim em um t1.micro cuja única função é iniciar os instantâneos para os hosts do Windows. O script pode ser colocado no host linux como um trabalho cron para ser executado diariamente na hora que você escolher.

O primeiro link é um exemplo de script que de um host do Windows e pode ser facilmente automatizado com Tarefas agendadas no Windows.

Eu não usei o aplicativo que você vinculou no seu segundo link.

Nathan V
fonte
Você poderia dar mais detalhes? Sei que provavelmente a solução seria escrever algum tipo de script, mas esse conhecimento por si só não é suficiente para resolver o problema, infelizmente. Você talvez tenha um link ou amostra dos scripts aos quais está se referindo?
Stanley
O que você vinculou da sua pergunta realmente funcionará bem. Você conhece as ferramentas de linha de comando da API da AWS?
Nathan V
0

Os recursos atuais do EBS Snapshot para instâncias do Windows são explicados aqui: http://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/ebs-creating-snapshot.html

Para obter um instantâneo consistente, é necessário pausar as gravações no volume tempo suficiente para que o instantâneo seja concluído. Normalmente, isso significa que você precisa desmontar o volume. O documento da AWS não discute como fazer isso via linha de comando no Windows, mas você pode descobrir sobre isso neste segmento de superusuário: /superuser/704870/mount-and-dismount-hard-drive-through -a-script-software

Para obter uma captura instantânea do volume de inicialização do sistema, é necessário parar sua instância.

Espero que ajude.

céu azul
fonte
0

Sei que essa é uma pergunta antiga, mas vou compartilhar nossa solução.

Usamos um serviço chamado Ylastic . O plano Pro (US $ 50 / mês) inclui agendamento de snapshots do EBS, sem limitar o número de servidores ou discos. Ele também removerá backups mais antigos, se você desejar. Você pode criar várias agendas (por exemplo, diariamente, semanalmente etc.), cada uma com suas próprias políticas de retenção.

A interface também permite criar novas instâncias a partir de backups.

Ele trabalhou de forma confiável para nós por anos, com cerca de vinte instâncias e quarenta volumes EBS. Provavelmente existem métodos mais baratos, mas o preço é baixo o suficiente para não termos nos preocupado em construir e manter algo.

Consulte http://blog.ylastic.com/post/148519929496/multi-region-ebs-instance-backup-management para obter detalhes sobre esse recurso.

Martijn Heemels
fonte