วิธีการกำหนดเวลาสแนปชอตอัตโนมัติ (รายวัน) ของ AWS EC2 Windows Instance


12

ฉันมีเซิร์ฟเวอร์ Windows บางโฮสต์ใน Amazon EC2 บางตัวใช้งาน Windows Server 2003 และบางตัวใช้งาน Windows Server 2008 นี่เป็นอินสแตนซ์ที่ได้รับการสนับสนุนจาก EBS อินสแตนซ์ส่วนใหญ่ยังมี EBS- ไดรฟ์เพิ่มเติมที่แนบมาด้วย

เราต้องการกำหนดเวลาสแน็ปช็อตรายวันของเครื่อง windows (และ EBS ที่แนบมาปริมาณ) เพื่อ S3 เพื่อให้เรามีการสำรองข้อมูลรายวัน

ใครจะคิดว่านี่เป็นข้อกำหนดที่พบบ่อยมากและจะให้บริการผ่าน AWS Management Console แต่ก็ไม่เป็นเช่นนั้น มีวิธีการอะไรบ้าง? ฉันจะกำหนดเวลาสแน็ปช็อตรายวันบนเซิร์ฟเวอร์ Windows ของเราได้อย่างไร

มีตัวอย่างสคริปต์หลายแบบออนไลน์สำหรับ Linux แต่ไม่มากสำหรับ Windows ฉันได้ดูhttp://sehmer.blogspot.com/2011/04/amazon-ec2-daily-snapshot-script-for.htmlเช่นเดียวกับhttps://github.com/ronmichael/aws-snapshot- จัดตารางเวลา มีใครใช้วิธีใดวิธีหนึ่งเหล่านี้และทำงานได้หรือไม่

ฉันได้พิจารณาบริการเช่นSkeddlyซึ่งดูเหมือนว่าราคาไม่แพงเมื่อแรกเห็น แต่เมื่อคุณดูที่ใช้สำหรับเซิร์ฟเวอร์หลายเครื่องราคาเร็ว ๆ นี้จะเพิ่มขึ้นจนถึงจุดที่ดูเหมือนเป็นตัวเลือกที่ดีกว่าในการสร้างโซลูชันของคุณเอง เซิร์ฟเวอร์ใหม่ในอนาคต ด้วย Skeddly เราจะจ่ายสำหรับแต่ละเซิร์ฟเวอร์

เราจะกำหนดเวลาสแน็ปช็อตรายวันของหน้าต่างอินสแตนซ์ของเราได้อย่างไร

คำตอบ:


9

Amazon Web Services เพิ่งประกาศ PowerShell เครื่องมือบรรทัดคำสั่งสำหรับ Windows และจะบรรจุพร้อมกับพวกเขาเครื่องมือ AWS สำหรับ NET SDK

เครื่องมือ AWS Powershell ทำให้การสร้างสแน็ปช็อตค่อนข้างง่าย:

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

และคุณสามารถค้นหาภาพรวมของคุณดังนี้:

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

ตรวจสอบให้แน่ใจว่าคุณติดตั้งเครื่องมือ AWS Powershell และเพียงแค่สร้างงานที่กำหนดเวลาที่ใช้สคริปต์ PowerShell คล้ายกับตัวอย่างด้านบนเพื่อกำหนดตารางเวลาสแนปชอตของคุณและคุณควรจะทำได้ดี

อัปเดตเพื่อสืบค้นปริมาณ EBS ที่แนบมา:

ในการสอบถามปริมาณ EBS ที่แนบมากับอินสแตนซ์ของคุณแล้วจับภาพแต่ละรายการคุณสามารถทำสิ่งนี้:

# 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"
}

ขอบคุณมาก. นี่ดูเหมือนจะเป็นสิ่งที่ฉันกำลังมองหา โปรดอธิบายให้ชัดเจน: ดูเหมือนว่าคำสั่ง New-EC2Snapshot จะถ่ายภาพของไดรฟ์ข้อมูลเฉพาะเท่านั้น ในกรณีของฉันฉันมีอินสแตนซ์และยังมี EBS- ไดรฟ์ข้อมูลที่แนบมา ฉันจะถ่ายภาพรวมของอินสแตนซ์ทั้งหมดรวมถึงอุปกรณ์รูทและโวลุ่ม EBS ที่แนบมาได้อย่างไร
สแตนลี่ย์

@Stanley อัปเดตเพื่อสอบถามปริมาณ EBS ที่แนบมากับอินสแตนซ์ของคุณและสแน็ปช็อตแต่ละรายการ
Ameer Deen

ฉันเห็นขอบคุณ นั่นหมายความว่าจะมีสแนปชอตแยกต่างหากสำหรับแต่ละโวลุ่ม ฉันแค่ต้องการเข้าใจความหมายของสิ่งนี้: ในกรณีที่เกิดความล้มเหลวฉันจะนำอินสแตนซ์ทดแทนมาใช้อย่างไร สแน็ปช็อตสำหรับโวลุ่มรูต EBS และโวลุ่ม EBS ที่เชื่อมต่อแต่ละรายการจะแยกกัน ฉันจะนำอินสแตนซ์ทดแทนมาใช้กับไดรฟ์ที่เมาท์จากสแน็ปช็อตที่แตกต่างกันได้อย่างไร
สแตนลี่ย์

ทำไมคุณไม่สามารถตั้งค่าผ่านแดชบอร์ด EC2 ได้ สำหรับคนที่ไม่มั่นใจกับสคริปต์มากเกินไป?
leen3o

5

2018 อัปเดต ณ ปลายปี 2561 มีสองวิธีเพิ่มเติมในการทำให้สแนปชอต EBS เป็นอัตโนมัติ ฉันยังคงใช้วิธีดั้งเดิมของเหตุการณ์ CloudWatch เนื่องจากใช้ได้ดีเป็นเวลาหลายปีและฉันไม่เห็นจุดเปลี่ยนเลย

Ops Automator (OA)

Ops Automatorเป็นชุดสคริปต์แลมบ์ดาที่ยืดหยุ่นโดย AWS มันถูกปรับใช้กับเทมเพลต CloudWatch ซึ่งอยู่ในหน้าข้างบน

มันเป็นขั้นตอนการตั้งค่า

  1. เทมเพลต AWS CloudFormation เปิดตัวเฟรมเวิร์กหลักซึ่งรวมถึงชุดของไมโครไซต์ (ฟังก์ชั่น AWS Lambda) ที่จัดการเหตุการณ์วิกฤติการเลือกทรัพยากรการดำเนินงานการควบคุมการทำงานพร้อมกันและการดำเนินการให้เสร็จสมบูรณ์
  2. ข้อมูลการกำหนดค่างานซึ่งกำหนดเหตุการณ์ที่เกิดขึ้นว่าควรดำเนินการอย่างไรทรัพยากรใดบ้างที่จะถูกเลือกโดยการกระทำและตำแหน่งที่เก็บทรัพยากรเหล่านี้จะถูกเก็บไว้ในตาราง Amazon DynamoDB
  3. เทมเพลต AWS CloudFormation ที่สร้างโดยโซลูชันจะกำหนดค่างานตามพารามิเตอร์ที่คุณกำหนดและบทบาทที่จำเป็นในการดำเนินการข้ามบัญชี
  4. โซลูชันติดตามทุกขั้นตอนในกระบวนการทรัพยากรที่เลือกและผลลัพธ์ของการดำเนินการรวมถึงข้อผิดพลาดที่อาจเกิดขึ้นในตาราง DynamoDB
  5. โซลูชันนี้ยังใช้ประโยชน์จาก Amazon CloudWatch Logs สำหรับการบันทึก ข้อความเตือนและข้อความแสดงข้อผิดพลาดถูกเผยแพร่ไปยังหัวข้อ Amazon Simple Notification Service (Amazon SNS) ที่สร้างขึ้นโดยโซลูชันซึ่งจะส่งข้อความไปยังที่อยู่อีเมลที่สมัครสมาชิก

Data Lifecycle Manager (DLM)

เอกสาร DLM นี่เป็นโซลูชันที่เรียบง่าย แต่มีความยืดหยุ่นน้อยกว่าซึ่งสามารถสำรองปริมาณได้ทุก 12 หรือ 24 ชั่วโมง ฉันงงว่าทำไม AWS วางข้อ จำกัด นี้ไว้ใน DLM - รายสัปดาห์รายเดือนหรือความถี่แปรปรวนจะทำได้ง่าย

DLM รวมอยู่ในคอนโซล AWS ฉันจะไม่คัดลอกและวางเอกสารในขณะที่ AWS ปรับปรุงสิ่งต่าง ๆ ให้ดีอยู่เสมอ

ตั้งแต่ 2019 DLM ให้คุณระบุช่วงเวลาที่สั้นลงเป็นสองชั่วโมง แต่ก็ยังไม่อนุญาตให้คุณระบุช่วงเวลามากกว่า 24 ชั่วโมง

2017 Update

ในฐานะของ 2017 มีวิธีการสร้างภาพรวมปกติอื่น - ใช้CloudWatch เหตุการณ์

สิ่งนี้ช่วยให้คุณกำหนดตารางเวลาสแนปชอต แต่ไม่สามารถแก้ปัญหาปริมาณการใช้งานได้ดังนั้นจึงเป็นเพียงวิธีแก้ปัญหาบางส่วนเท่านั้น อาจมีวิธีการใช้กิจกรรม CloudWatch เพื่อทริกเกอร์บางสิ่งที่ทำให้ระดับเสียงเงียบ

  1. เปิดคอนโซล CloudWatch ที่https://console.aws.amazon.com/cloudwatch/

  2. ในบานหน้าต่างนำทางเลือกกิจกรรม

  3. เลือกสร้างกฎ

  4. สำหรับแหล่งที่มาของเหตุการณ์ให้ทำดังต่อไปนี้:

    -> เลือกกำหนดการ

    -> เลือกอัตราคงที่และระบุช่วงเวลาที่กำหนด (เช่น 5 นาที) หรือเลือกนิพจน์ Cron และระบุนิพจน์ Cron (ตัวอย่างเช่นทุก ๆ 15 นาทีวันจันทร์ถึงวันศุกร์เริ่มตั้งแต่เวลาปัจจุบัน)

  5. สำหรับเป้าหมายเลือกเพิ่มเป้าหมายจากนั้นเลือกการเรียก Snapshot API ของ EC2

  6. สำหรับ Volume ID ให้เลือกปริมาณ EBS

  7. เลือกกำหนดค่ารายละเอียด

  8. สำหรับการกำหนดกฎให้พิมพ์ชื่อและคำอธิบายสำหรับกฎ

  9. สำหรับสิทธิ์ AWS เลือกตัวเลือกเพื่อสร้างบทบาทใหม่ สิ่งนี้จะเปิดคอนโซล IAM ในแท็บใหม่ บทบาทใหม่ให้สิทธิ์การใช้งานเป้าหมายในตัวเพื่อเข้าถึงทรัพยากรในนามของคุณ เลือกอนุญาต แท็บที่มีหน้าต่าง IAM ปิดลง

  10. เลือกสร้างกฎ


ฟรีวิธีการแก้ปัญหาที่ง่ายและพื้นเมืองสำหรับ aws
Vlastimil Ovčáčík

1
ตอนนี้ตัวจัดการวงจรช่วยให้มีความถี่ 2/3/4/6/8/12/24 ชั่วโมงใด ๆ
Dan Pritts

3

คำตอบเก่า ๆ ที่เข้ามาเริ่มจากการค้นหา รุ่งโรจน์ถึง Ameer Deen ด้านบนสำหรับสคริปต์ btw

พบโพสต์นี้ซึ่งดำลึกลงไปในสคริปต์ PowerShell เพื่อทำการรวบรวมข้อมูลและกระบวนการสแนปชอต EBS โดยอัตโนมัติ:

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

แน่นอนว่าค้นพบว่าสิ่งเหล่านั้นถูกเขียนขึ้นสำหรับ v1.0 ที่ไม่ได้คิดค่าไว้ในขณะนี้ของ AWS SDK ดังนั้นฉันจึงใช้เวลาในวันสุดท้ายในการแก้ไขและทำให้พวกเขาทำงานกับ v2.0 ทั้งหมด:

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

สนุก!


3

AutomatiCloud ทำสิ่งที่คุณต้องการอย่างแท้จริง มันเป็นเครื่องมือ windows ที่ใช้งานง่ายซึ่งคุณสามารถกำหนดเวลาสำรองข้อมูลสำหรับ EBS Volumes หรือ RDS ของคุณได้ที่: www.automaticoud.net

คุณสามารถ

  • สร้างสแนปชอตและ AMIs โดยยึดตามอินสแตนซ์ ID หรือแท็ก
  • สร้างแท็กไดนามิกโดยใช้มาโคร
  • กำหนดระยะเวลาการเก็บรักษา 3 ระดับ (การสำรองข้อมูล GFS)
  • ส่งอีเมลแจ้งเตือน
  • เพิ่มตัวแทน VSS สำหรับอินสแตนซ์ของ windows
  • เรียกใช้สคริปต์ก่อน / หลังการสำรองข้อมูล
  • และอีกมากมาย ...

มันดูดีจริงๆ! ฉันจะดาวน์โหลดและปล่อยมันไปในวันนี้
leen3o

1
Automaticloud ฟรีหรือไม่ มันจะขอเงินจากฉันหลังจากใช้ไปซักพักไหม
EricP

AutomatiCloud ฟรี คุณสมบัติขั้นสูงต้องลงทะเบียน
Stephan Buhre

1

ตอนนี้คุณสามารถใช้AWS แลมบ์ดาเพื่อสร้าง Amis โดยอัตโนมัติ การตั้งค่าทั้งหมดจะเสร็จสมบูรณ์ในเวลาประมาณ 10 นาทีพร้อมกับตารางเวลาที่คุณต้องการ ดู repo Github ของพวกเขาเพื่อมีส่วนร่วมด้วย รันสคริปต์ด้วยตัวเองและหลีกเลี่ยงการให้สิทธิ์แก่บุคคลที่สาม


0

คุณสามารถเขียนสคริปต์ที่คุยกับ EC2 API เพื่อกำหนดเวลาสแนปชอตเหล่านั้น มันสามารถทำงานบนหนึ่งในอินสแตนซ์ที่มีอยู่ของคุณหรือคุณสามารถตั้งค่าอินสแตนซ์ลินุกซ์ขนาดเล็กเพื่อจุดประสงค์นี้ใน t1.micro ที่มีฟังก์ชั่น แต่เพียงผู้เดียวที่จะเตะสแนปชอตสำหรับโฮสต์ Windows สคริปต์สามารถวางบนโฮสต์ linux เป็นงาน cron ให้ทำงานทุกวันในเวลาที่คุณเลือก

ลิงค์แรกเป็นตัวอย่างของการเขียนสคริปต์ที่มาจากโฮสต์ Windows และสามารถทำงานอัตโนมัติด้วย Scheduled Tasks ใน Windows ได้อย่างง่ายดาย

ฉันไม่ได้ใช้แอปพลิเคชันที่คุณเชื่อมโยงกับลิงก์ที่สองของคุณ


คุณอาจให้รายละเอียดเพิ่มเติมได้ไหม ฉันรู้ว่าวิธีแก้อาจจะให้ฉันเขียนสคริปต์บางอย่าง แต่ความรู้เกี่ยวกับตัวมันเองนั้นไม่เพียงพอสำหรับฉันที่จะแก้ปัญหา แต่น่าเสียดายที่ คุณอาจมีลิงค์หรือตัวอย่างของสคริปต์ที่คุณอ้างถึงหรือไม่?
สแตนลี่ย์

คำถามที่คุณเชื่อมโยงจากคำถามของคุณจะใช้ได้จริง คุณคุ้นเคยกับเครื่องมือ Command-Line ของ AWS API หรือไม่?
นาธาน V

0

ความสามารถของ EBS Snapshot ในปัจจุบันสำหรับ Windows Instances มีการอธิบายไว้ที่นี่: http://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/ebs-creating-snapshot.html

เพื่อให้ได้สแนปชอตที่สอดคล้องกันคุณจะต้องหยุดเขียนลงในโวลุ่มที่ยาวพอเพื่อให้สแนปชอตนั้นสมบูรณ์ โดยทั่วไปหมายความว่าคุณต้องยกเลิกการต่อเชื่อมวอลุ่ม เอกสาร AWS ไม่ได้กล่าวถึงวิธีการทำเช่นนี้ผ่าน commandline บน Windows แต่คุณสามารถหาข้อมูลเกี่ยวกับสิ่งนั้นได้ในเธรด superuser นี้: /superuser/704870/mount-and-dismount-hard-drive-through -a สคริปต์ซอฟแวร์

ในการรับภาพรวมของโวลุ่มการบูตระบบคุณต้องหยุดอินสแตนซ์ของคุณ

หวังว่าจะช่วย


0

ฉันรู้ว่านี่เป็นคำถามเก่า แต่ฉันจะแบ่งปันวิธีแก้ปัญหาของเรา

เราใช้บริการที่เรียกว่าYlastic แผน Pro ของพวกเขา ($ 50 / mo) รวมถึงการกำหนดตารางเวลาของ EBS snapshots โดยไม่ จำกัด จำนวนเซิร์ฟเวอร์หรือดิสก์ มันจะลบข้อมูลสำรองที่เก่ากว่าด้วยถ้าคุณต้องการ คุณสามารถสร้างตารางเวลาหลายรายการ (เช่นรายวันรายสัปดาห์ ฯลฯ ) แต่ละรายการได้ด้วยนโยบายการเก็บข้อมูลของตนเอง

อินเทอร์เฟซยังช่วยให้คุณสร้างอินสแตนซ์ใหม่จากการสำรองข้อมูล

มันทำงานได้อย่างน่าเชื่อถือสำหรับเรามานานหลายปีมีประมาณยี่สิบกรณีและปริมาณ EBS สี่สิบ อาจมีวิธีการที่ถูกกว่า แต่ราคาต่ำพอที่เราไม่ได้ใส่ใจในการสร้างและดูแลรักษาตัวเอง

ดูhttp://blog.ylastic.com/post/148519929496/multi-region-ebs-instance-backup-managementสำหรับรายละเอียดเกี่ยวกับคุณสมบัตินี้

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.