Jak zaplanować automatyczne (codzienne) migawki wystąpienia Windows AWS EC2?

12

Mam kilka serwerów Windows hostowanych na Amazon EC2. Niektóre działają w systemie Windows Server 2003, a inne w systemie Windows Server 2008. Są to wystąpienia wspierane przez EBS. Do większości instancji dołączono także dodatkowe woluminy EBS.

Chcemy zaplanować codzienną migawkę maszyn Windows (a także dołączonych woluminów EBS) do S3, abyśmy mieli codzienne kopie zapasowe.

Można by pomyśleć, że jest to bardzo powszechny wymóg i zostałby udostępniony za pośrednictwem konsoli zarządzania AWS, ale niestety tak nie jest. Jakie podejścia są dostępne? Jak zaplanować codzienne migawki na naszych serwerach Windows?

Istnieje kilka przykładów skryptów dostępnych online dla Linuksa, ale nie tak wiele dla systemu Windows. Spojrzałem na http://sehmer.blogspot.com/2011/04/amazon-ec2-daily-snapshot-script-for.html, a także https://github.com/ronmichael/aws-snapshot- harmonogram . Czy ktoś zastosował jedno z tych podejść i czy działa?

Rozważyłem również usługę taką jak Skeddly, która na pierwszy rzut oka wydaje się niedroga, ale gdy spojrzysz na korzystanie z niej na kilku serwerach, cena szybko wzrasta do takiego poziomu, że wydaje się lepszą opcją stworzenia własnego rozwiązania, ponieważ możesz je następnie zastosować nowe serwery w przyszłości. Z Skeddly zapłacimy za każdy serwer.

Jak zaplanować codzienne migawki naszych instancji systemu Windows?

Stanley
źródło

Odpowiedzi:

9

Amazon Web Services niedawno ogłosiło narzędzia wiersza polecenia PowerShell dla systemu Windows i jest ono dostarczane wraz z zestawem narzędzi AWS dla zestawu .NET SDK .

Narzędzia AWS Powershell ułatwiają tworzenie migawek:

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

I możesz wyszukiwać swoje migawki w ten sposób:

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

Upewnij się, że masz zainstalowane narzędzia AWS Powershell i po prostu utwórz zaplanowane zadanie, które używa skryptu PowerShell podobnego do powyższego fragmentu, aby zaplanować migawki i powinieneś być dobry.

Zaktualizowano do zapytania o dołączone woluminy EBS:

Aby wyszukać woluminy EBS dołączone do instancji, a następnie wykonać migawkę każdego z nich, możesz zrobić coś takiego:

# 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
źródło
Dziękuję Ci bardzo. Wydaje się, że tego właśnie szukam. Wyjaśnij: wydaje się, że polecenie New-EC2Snapshot wykona migawkę określonego woluminu. W moim przypadku mam Instancję, do której dołączone są również tomy EBS. Jak mam zrobić pełną migawkę całej instancji, w tym urządzenia root i dołączonych woluminów EBS?
Stanley
@Stanley zaktualizowano w celu zapytania o woluminy EBS dołączone do Twojej instancji i tworzenia migawek każdego z nich
Ameer Deen
Widzę, dziękuję. Oznacza to, że dla każdego woluminu będą dostępne osobne migawki. Chcę tylko zrozumieć konsekwencje tego: w razie niepowodzenia, w jaki sposób przywołałbym wystąpienie zastępcze? Migawki woluminu głównego EBS i poszczególnych zamontowanych woluminów EBS będą wszystkie osobne. Jak przywołać instancję zastępczą z zamontowanymi dyskami z różnych migawek?
Stanley
Dlaczego nie możesz tego ustawić za pomocą deski rozdzielczej EC2? Dla ludzi, którzy nie są zbyt pewni skryptów?
leen3o
5

Aktualizacja 2018 Pod koniec 2018 r. Istnieją dwa dodatkowe sposoby automatyzacji migawek EBS. Nadal używam oryginalnej metody zdarzeń CloudWatch, ponieważ działa ona dobrze przez lata i nie widzę sensu, aby się zmieniać.

Ops Automator (OA)

Ops Automator to bardzo elastyczny zestaw skryptów lambda dostarczanych przez AWS. Jest wdrażany z szablonem CloudWatch, który znajduje się na powyższej stronie.

To są kroki konfiguracji

  1. Szablon AWS CloudFormation uruchamia podstawową strukturę, która obejmuje pakiet mikrousług (funkcje AWS Lambda), które zarządzają zdarzeniami wyzwalającymi, wyborem zasobów, wykonaniem zadania, kontrolą współbieżności i zakończeniem.
  2. Dane konfiguracji zadania, które definiują zdarzenie wyzwalające, sposób wykonania zadania, które zasoby zostaną wybrane przez akcje i gdzie te zasoby się znajdują, są przechowywane w tabeli Amazon DynamoDB.
  3. Wygenerowane przez rozwiązanie szablony AWF CloudFormation konfigurują zadania na podstawie zdefiniowanych przez Ciebie parametrów i ról niezbędnych do wykonywania działań na różnych kontach.
  4. Rozwiązanie śledzi wszystkie etapy procesu, wybrane zasoby i wyniki działań, w tym możliwe błędy, w tabeli DynamoDB.
  5. Rozwiązanie wykorzystuje również dzienniki Amazon CloudWatch do rejestrowania. Komunikaty ostrzegawcze i komunikaty o błędach są publikowane w utworzonym przez siebie temacie Amazon Simple Notification Service (Amazon SNS), który wysyła wiadomości na subskrybowany adres e-mail.

Data Lifecycle Manager (DLM)

Dokumentacja DLM . Jest to prostsze, ale mniej elastyczne rozwiązanie, które może tworzyć kopie zapasowe woluminów co 12 lub 24 godziny. Zastanawiam się, dlaczego AWS nałożyło to ograniczenie na DLM - tygodniowe, miesięczne lub zmienne częstotliwości byłyby łatwe do wdrożenia.

DLM jest zintegrowany z konsolą AWS. Nie zamierzam kopiować ani wklejać dokumentacji, ponieważ AWS aktualizuje wszystko dobrze, a linki rzadko się psują.

Począwszy od 2019 roku DLM pozwala określić krótsze odstępy czasu do dwóch godzin, ale nadal nie pozwala określić odstępów dłuższych niż 24 godziny.

Aktualizacja 2017

Od 2017 roku istnieje inny sposób tworzenia regularnych migawek - za pomocą Cloudwatch Events .

To pozwala zaplanować migawki, ale nie rozwiązuje problemu z używanym woluminem, więc jest to tylko częściowe rozwiązanie. Może istnieć sposób używania CloudWatch Events do wyzwalania czegoś, co powoduje wyciszenie woluminu.

  1. Otwórz konsolę CloudWatch pod adresem https://console.aws.amazon.com/cloudwatch/ .

  2. W okienku nawigacji wybierz Zdarzenia.

  3. Wybierz Utwórz regułę.

  4. W przypadku źródła zdarzenia wykonaj następujące czynności:

    -> Wybierz harmonogram.

    -> Wybierz Stała stawka i określ przedział harmonogramu (na przykład 5 minut). Alternatywnie wybierz wyrażenie Cron i określ wyrażenie Cron (na przykład co 15 minut od poniedziałku do piątku, zaczynając od bieżącej godziny).

  5. W polu Cele wybierz opcję Dodaj cel, a następnie wybierz wywołanie interfejsu API tworzenia migawki EC2.

  6. W przypadku identyfikatora woluminu wybierz wolumin EBS.

  7. Wybierz Konfiguruj szczegóły.

  8. Aby zdefiniować regułę, wpisz nazwę i opis reguły.

  9. W przypadku uprawnień AWS wybierz opcję utworzenia nowej roli. Spowoduje to otwarcie konsoli IAM w nowej karcie. Nowa rola przyznaje wbudowane uprawnienia do dostępu do zasobów w Twoim imieniu. Wybierz Zezwól. Karta z oknem IAM zostanie zamknięta.

  10. Wybierz Utwórz regułę.

Tim
źródło
Darmowe, proste i natywne rozwiązanie dla aws.
Vlastimil Ovčáčík
1
Menedżer cyklu życia pozwala teraz na dowolną częstotliwość 2/3/4/6/8/12/24 godzin.
Dan Pritts
3

Wskakując na starą odpowiedź, która zaczęła mnie od poszukiwań. Uznanie dla Ameer Deen powyżej za scenariusze, btw.

Znalazłem ten post, który zagłębia się znacznie głębiej w skrypty PowerShell, aby w pełni zautomatyzować proces gromadzenia danych i migawki EBS:

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

Potem oczywiście odkryłem, że wszystkie zostały napisane dla amortyzacji wersji 1.0 AWS SDK, więc ostatni dzień spędziłem na ich naprawianiu i przygotowaniu do pracy z wersją 2.0:

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

Cieszyć się!

nlh
źródło
3

AutomatiCloud robi dokładnie to, czego potrzebujesz. Jest to łatwe w użyciu narzędzie systemu Windows, w którym można zaplanować tworzenie kopii zapasowych dla woluminów EBS lub instancji RDS: www.automaticoud.net

Możesz

  • tworzyć migawki i AMI na podstawie identyfikatorów instancji lub tagów
  • tworzyć tagi dynamiczne za pomocą makr
  • zdefiniuj 3 poziomy okresów przechowywania (kopia zapasowa GFS)
  • wysyłać powiadomienia e-mail
  • dodaj agenta VSS dla instancji Windows
  • uruchamiaj skrypty przed / po utworzeniu kopii zapasowej
  • i wiele więcej...
Stephan Buhre
źródło
To wygląda naprawdę dobrze! Mam zamiar pobrać i spróbować później dzisiaj.
leen3o,
1
Czy AutomaticLoud jest bezpłatny? Czy poprosi mnie o pieniądze po dłuższym użyciu?
EricP
AutomatiCloud jest bezpłatny. Zaawansowane funkcje wymagają rejestracji.
Stephan Buhre,
1

Możesz teraz używać AWS Lambda do automatycznego tworzenia AMI . Cała konfiguracja powinna zostać ukończona w ciągu około 10 minut zgodnie z harmonogramem, który Ci się podoba. Zobacz ich repozytorium Github, aby również wnieść swój wkład. Uruchom skrypt samodzielnie i unikaj udzielania uprawnień stronom trzecim.

Romo P.
źródło
0

Możesz napisać skrypt komunikujący się z interfejsem API EC2, aby zaplanować te migawki. Można go uruchomić na jednej z istniejących instancji lub w tym celu można skonfigurować małą instancję Linuksa na t1.micro, którego wyłączną funkcją jest uruchamianie migawek dla hostów Windows. Skrypt można umieścić na hoście Linux jako zadanie cron do codziennego uruchamiania w wybranym przez Ciebie czasie.

Pierwszy link jest przykładem skryptu, który pochodzi z hosta systemu Windows i można go łatwo zautomatyzować za pomocą Zaplanowanych zadań w systemie Windows.

Nie korzystałem z aplikacji, którą podłączyłeś na drugim linku.

Nathan V.
źródło
Czy mógłbyś podać więcej szczegółów? Zdaję sobie sprawę, że rozwiązaniem byłoby prawdopodobnie napisanie przeze mnie jakiegoś skryptu, ale sama ta wiedza nie jest wystarczająca, aby rozwiązać problem, niestety. Czy może masz link lub próbkę skryptów, o których mowa?
Stanley
Ten, który podałeś w swoim pytaniu, faktycznie będzie działał dobrze. Czy w ogóle znasz narzędzia wiersza polecenia interfejsu AWS API?
Nathan V
0

Bieżące możliwości migawki EBS dla instancji Windows są wyjaśnione tutaj: http://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/ebs-creating-snapshot.html

Aby uzyskać spójną migawkę, musisz wstrzymać zapisy do woluminu na wystarczająco długo, aby migawka mogła się zakończyć. Zazwyczaj oznacza to, że musisz odmontować wolumin. Dokument AWS nie omawia, jak to zrobić za pomocą wiersza polecenia w systemie Windows, ale można się o tym dowiedzieć w tym wątku superużytkownika: /superuser/704870/mount-and-dismount-hard-drive-through -a-oprogramowanie-skryptowe

Aby uzyskać migawkę woluminu rozruchowego systemu, musisz zatrzymać instancję.

Mam nadzieję, że to pomaga.

pochmurno
źródło
0

Zdaję sobie sprawę, że to stare pytanie, ale podzielę się naszym rozwiązaniem.

Korzystamy z usługi o nazwie Ylastic . Ich plan Pro (50 USD / mc) obejmuje planowanie migawek EBS, nie ograniczając liczby serwerów ani dysków. Jeśli chcesz, usuniesz również starsze kopie zapasowe. Możesz utworzyć wiele harmonogramów (np. Codziennie, co tydzień itp.), Każdy z własnymi zasadami przechowywania.

Interfejs pozwala także tworzyć nowe wystąpienia z kopii zapasowych.

Działa dla nas niezawodnie od lat, z około dwudziestoma instancjami i czterdziestoma wolumenami EBS. Są prawdopodobnie tańsze metody, ale cena jest na tyle niska, że ​​nie zadaliśmy sobie trudu budowy i utrzymania czegoś sami.

Szczegółowe informacje na temat tej funkcji można znaleźć na stronie http://blog.ylastic.com/post/148519929496/multi-region-ebs-instance-backup-management .

Martijn Heemels
źródło