Bagaimana cara menjadwalkan snapshots otomatis (harian) dari AWS EC2 Windows Instance?

12

Saya memiliki beberapa server Windows yang dihosting di Amazon EC2. Beberapa menjalankan Windows Server 2003 dan lainnya menjalankan Windows Server 2008. Ini adalah instance yang didukung EBS. Sebagian besar instance juga memiliki beberapa volume EBS tambahan yang terpasang.

Kami ingin menjadwalkan snapshot harian mesin windows (dan juga EBS-volume terlampir) ke S3 sehingga kami memiliki cadangan harian yang tersedia.

Orang akan berpikir bahwa ini adalah persyaratan yang sangat umum dan akan tersedia melalui Konsol Manajemen AWS, tetapi sayangnya, tidak. Pendekatan apa yang tersedia? Bagaimana cara menjadwalkan foto harian di Server Windows kami?

Ada beberapa contoh skrip yang tersedia online untuk Linux, tetapi tidak begitu banyak untuk windows. Saya telah melihat http://sehmer.blogspot.com/2011/04/amazon-ec2-daily-snapshot-script-for.html serta https://github.com/ronmichael/aws-snapshot- penjadwal . Adakah yang menggunakan salah satu pendekatan ini dan apakah itu berhasil?

Saya juga telah mempertimbangkan layanan seperti Skeddly yang tampaknya murah pada pandangan pertama tetapi ketika Anda melihat menggunakannya untuk beberapa server harga segera meningkat ke titik di mana tampaknya merupakan pilihan yang lebih baik untuk membuat solusi sendiri karena Anda kemudian dapat menerapkannya ke server baru di masa depan. Dengan Skeddly kami akan membayar untuk setiap server.

Bagaimana kita menjadwalkan snapshot harian dari instance windows kita?

Stanley
sumber

Jawaban:

9

Amazon Web Services baru-baru ini mengumumkan alat baris perintah PowerShell untuk Windows dan dikemas bersama dengan AWS Tools mereka untuk .NET SDK .

Alat AWS Powershell membuatnya cukup mudah untuk membuat snapshot:

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

Dan Anda dapat meminta snapshot Anda seperti ini:

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

Pastikan Anda memiliki alat AWS Powershell yang terinstal dan cukup buat tugas terjadwal yang menggunakan skrip PowerShell mirip dengan cuplikan di atas untuk menjadwalkan foto Anda dan Anda harus baik.

Diperbarui untuk permintaan volume EBS terlampir:

Untuk meminta volume EBS yang terlampir pada instance Anda dan kemudian snapshot masing-masing Anda dapat melakukan sesuatu seperti ini:

# 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
sumber
Terima kasih banyak. Sepertinya ini yang saya cari. Tolong hanya klarifikasi: sepertinya perintah New-EC2Snapshot hanya akan mengambil snapshot dari volume tertentu. Dalam kasus saya, saya memiliki Instance dan juga memiliki beberapa EBS-volume terlampir. Bagaimana saya mengambil snapshot penuh dari seluruh instance termasuk perangkat root dan volume EBS terlampir?
Stanley
@Stanley memperbarui kueri untuk volume EBS yang terlampir pada instance Anda dan snapshot masing
Ameer Deen
Saya mengerti terima kasih. Itu berarti akan ada foto-foto terpisah untuk setiap volume. Saya hanya ingin memahami implikasi dari hal ini: Jika terjadi kegagalan, bagaimana saya membuka contoh pengganti? Jepretan untuk volume root EBS dan volume individu yang dipasang EBS akan terpisah. Bagaimana saya memunculkan instance pengganti dengan drive yang dipasang dari snapshot yang berbeda?
Stanley
Mengapa Anda tidak dapat mengatur ini melalui dasbor EC2? Untuk orang yang tidak terlalu percaya diri dengan skrip?
leen3o
5

Pembaruan 2018 Pada akhir 2018 ada dua cara tambahan untuk mengotomatisasi snapshot EBS. Saya masih menggunakan metode asli acara CloudWatch karena ini berfungsi dengan baik selama bertahun-tahun dan saya tidak melihat ada gunanya berubah.

Ops Automator (OA)

Ops Automator adalah kumpulan skrip lambda yang sangat fleksibel yang disediakan oleh AWS. Ini digunakan dengan template CloudWatch yang ada di halaman di atas.

Langkah-langkah pengaturannya

  1. Templat AWS CloudFormation meluncurkan kerangka inti, yang mencakup serangkaian layanan microser (fungsi AWS Lambda) yang mengelola peristiwa pemicu, pemilihan sumber daya, pelaksanaan tugas, kontrol konkurensi, dan penyelesaian.
  2. Data konfigurasi tugas, yang menentukan peristiwa pemicu, bagaimana tugas harus dilakukan, sumber daya mana yang akan dipilih oleh tindakan, dan di mana sumber daya ini berada, disimpan dalam tabel Amazon DynamoDB.
  3. Templat AWS CloudFormation yang dihasilkan solusi mengonfigurasikan tugas berdasarkan parameter yang Anda tetapkan, dan peran yang diperlukan untuk melakukan tindakan di seluruh akun.
  4. Solusi melacak semua langkah dalam proses, sumber daya yang dipilih, dan hasil tindakan, termasuk kemungkinan kesalahan, dalam tabel DynamoDB.
  5. Solusinya juga memanfaatkan Amazon CloudWatch Logs untuk logging. Pesan peringatan dan kesalahan dipublikasikan ke topik Layanan Pemberitahuan Sederhana Amazon (Amazon SNS) yang dibuat solusi yang mengirim pesan ke alamat email berlangganan.

Data Lifecycle Manager (DLM)

Dokumentasi DLM . Ini adalah solusi yang lebih sederhana namun kurang fleksibel yang dapat membuat cadangan volume setiap 12 atau 24 jam. Saya bingung mengapa AWS menempatkan batasan ini pada DLM - frekuensi mingguan, bulanan, atau variabel akan mudah diimplementasikan.

DLM terintegrasi ke dalam konsol AWS. Saya tidak akan menyalin dan menempelkan dokumentasinya karena AWS selalu memperbarui berbagai hal, dan tautan jarang putus.

Pada 2019 DLM memungkinkan Anda menentukan interval lebih pendek hingga dua jam, tetapi masih tidak memungkinkan Anda menentukan interval lebih dari 24 jam.

Pembaruan 2017

Pada 2017 ada cara lain untuk membuat foto-foto biasa - menggunakan Acara Cloudwatch .

Ini memungkinkan Anda menjadwalkan foto, tetapi itu tidak menyelesaikan masalah volume yang sedang digunakan, jadi itu hanya solusi parsial. Mungkin ada cara menggunakan Acara CloudWatch untuk memicu sesuatu yang tidak sesuai dengan volume.

  1. Buka konsol CloudWatch di https://console.aws.amazon.com/cloudwatch/ .

  2. Di panel navigasi, pilih Acara.

  3. Pilih Buat aturan.

  4. Untuk Sumber Acara, lakukan hal berikut:

    -> Pilih Jadwal.

    -> Pilih Tingkat tetap dan tentukan interval jadwal (misalnya, 5 menit). Atau, pilih ekspresi Cron dan tentukan ekspresi Cron (misalnya, setiap 15 menit Senin hingga Jumat, mulai dari waktu sekarang).

  5. Untuk Target, pilih Tambahkan target dan kemudian pilih EC2 Buat panggilan API Snapshot.

  6. Untuk Volume ID, pilih volume EBS.

  7. Pilih Konfigurasikan detail.

  8. Untuk definisi Aturan, ketikkan nama dan deskripsi untuk aturan tersebut.

  9. Untuk izin AWS, pilih opsi untuk membuat peran baru. Ini membuka konsol IAM di tab baru. Peran baru ini memberikan izin target bawaan untuk mengakses sumber daya atas nama Anda. Pilih Perbolehkan. Tab dengan jendela IAM ditutup.

  10. Pilih Buat aturan.

Tim
sumber
Solusi gratis, sederhana dan asli untuk aws.
Vlastimil Ovčáčík
1
Manajer siklus hidup sekarang memungkinkan frekuensi 2/3/4/6/8/12/24 jam.
Dan Pritts
3

Melompat pada jawaban lama yang memulai pencarian saya. Kudos to Ameer Deen di atas untuk skrip, btw.

Ditemukan pos ini yang menyelam lebih dalam ke skrip PowerShell untuk mengotomatisasi sepenuhnya proses pengumpulan data dan snapshot EBS:

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

Kemudian tentu saja menemukan bahwa semua itu ditulis untuk AWS SDK v1.0 yang sekarang didepresiasi, jadi saya menghabiskan hari terakhir memperbaikinya dan membuat semuanya bekerja dengan v2.0:

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

Nikmati!

nlh
sumber
3

AutomatiCloud melakukan apa yang Anda butuhkan. Ini adalah alat windows yang mudah digunakan tempat Anda dapat menjadwalkan pencadangan untuk volume EBS atau instance RDS Anda: www.automaticoud.net

Kamu bisa

  • buat snapshot dan AMI berdasarkan pada instance-ID atau tag
  • buat tag dinamis menggunakan makro
  • tentukan 3 level periode retensi (cadangan GFS)
  • kirim pemberitahuan email
  • tambahkan agen VSS untuk instance windows
  • jalankan skrip sebelum / sesudah pencadangan
  • dan banyak lagi...
Stephan Buhre
sumber
Ini terlihat sangat bagus! Saya akan mengunduh dan mencobanya hari ini.
leen3o
1
Apakah otomatis keras gratis? Apakah akan meminta saya uang setelah saya menggunakannya sebentar?
EricP
AutomatiCloud gratis. Fitur lanjutan memerlukan registrasi.
Stephan Buhre
1

Anda sekarang dapat menggunakan AWS Lambda untuk membuat AMI secara otomatis . Seluruh pengaturan harus diselesaikan dalam waktu sekitar 10 menit bersama dengan jadwal yang Anda suka. Lihatlah repo Github mereka untuk berkontribusi juga. Jalankan skrip sendiri dan hindari memberikan izin kepada pihak ketiga.

Romo P
sumber
0

Anda dapat menulis skrip yang berbicara dengan API EC2 untuk menjadwalkan foto-foto itu. Ini dapat dijalankan pada salah satu instance yang ada atau Anda dapat mengatur instance linux kecil untuk keperluan ini pada t1.micro yang fungsi utamanya adalah untuk memulai snapshot untuk host Windows. Script dapat diletakkan di host linux sebagai tugas cron untuk dijalankan setiap hari pada waktu yang Anda pilih.

Tautan pertama adalah contoh skrip yang berasal dari host Windows dan dapat dengan mudah diotomatiskan dengan Tugas Terjadwal di Windows.

Saya belum menggunakan aplikasi yang Anda tautkan pada tautan kedua Anda.

Nathan V
sumber
Bisakah Anda memberi lebih banyak detail? Saya menyadari bahwa solusinya mungkin bagi saya untuk menulis beberapa jenis skrip tetapi pengetahuan ini sendiri tidak cukup bagi saya untuk menyelesaikan masalah, sayangnya. Apakah Anda mungkin memiliki tautan atau sampel skrip yang Anda maksud?
Stanley
Pertanyaan yang Anda tautkan dari pertanyaan Anda sebenarnya akan berfungsi dengan baik. Apakah Anda akrab dengan alat-alat Command-Line AWS API sama sekali?
Nathan V
0

Kemampuan Snapshot EBS saat ini untuk Windows Instans dijelaskan di sini: http://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/ebs-creating-snapshot.html

Untuk mendapatkan snapshot yang konsisten, Anda harus berhenti menulis ke volume cukup lama untuk menyelesaikan snapshot. Biasanya, ini berarti Anda harus melepas volume. AWS doc tidak membahas cara melakukan ini melalui commandline pada Windows, tetapi Anda dapat mengetahuinya di thread superuser ini: /superuser/704870/mount-and-dismount-hard-drive-through -a-script-software

Untuk mendapatkan snapshot dari volume boot sistem, Anda harus menghentikan instance Anda.

Semoga itu bisa membantu.

berawanBlues
sumber
0

Saya menyadari ini adalah pertanyaan lama, tetapi saya akan membagikan solusi kami.

Kami menggunakan layanan yang disebut Ylastic . Paket Pro mereka ($ 50 / bln) termasuk penjadwalan snapshot EBS, tidak membatasi jumlah server atau disk. Ini juga akan menghapus cadangan yang lebih lama jika Anda mau. Anda dapat membuat beberapa jadwal (misalnya harian, mingguan, dll.) Masing-masing dengan kebijakan penyimpanannya sendiri.

Antarmuka juga memungkinkan Anda membuat instance baru dari cadangan.

Ini berfungsi dengan baik bagi kami selama bertahun-tahun, dengan sekitar dua puluh contoh dan empat puluh volume EBS. Mungkin ada metode yang lebih murah tetapi harganya cukup rendah sehingga kita tidak repot-repot membangun dan memelihara sesuatu sendiri.

Lihat http://blog.ylastic.com/post/148519929496/multi-region-ebs-instance-backup-management untuk perincian tentang fitur ini.

Martijn Heemels
sumber