AWS Fault Injection Simulator – Użyj Controlled Experiments aby zwiększyć niezawodność

12 kwietnia 2021

AWS zapewnia komponenty potrzebne do budowy wysoce niezawodnych systemów: wiele regionów (każdy z wieloma strefami dostępności), Amazon CloudWatch (metryki, monitorowanie i alarmy), Auto ScalingLoad Balancing, kilka form replikacji między regionami i wiele więcej.

 

Kiedy połączysz je razem zgodnie z wytycznymi zawartymi w Well-Architected Framework, twoje systemy powinny być w stanie działać, nawet jeśli zawiodą poszczególne komponenty.

Jednak nie będziesz o tym wiedział, dopóki nie wykonasz odpowiednich rodzajów testów. Stosunkowo nowa dziedzina Chaos Engineering  (oparta na pionierskiej pracy wykonanej przez „Master of Disaster” Jesse Robbins we wczesnych czasach Amazon.com, a następnie wprowadzona na wyższy poziom przez Netflix Chaos Monkey) koncentruje się na wywoływaniu problemów w aplikacji przez tworzenie destrukcyjnych wydarzeń, obserwowanie reakcji systemu i wdrażanie ulepszeń.

Oprócz wskazywania obszarów wymagających ulepszeń, Chaos Engineering pomaga odkryć martwe punkty, które zasługują na dodatkowe monitorowanie i alarmowanie, odkrywa niegdyś ukryte problemy z wdrożeniem i daje możliwość poprawy umiejętności operacyjnych z myślą o skróceniu czasu odzyskiwania. Aby dowiedzieć się więcej na ten temat, zacznij od Chaos Engineering – Part 1 autorstwa Adriana Hornsby.

Wprowadzenie do AWS Fault Injection Simulator (FIS)

AWS Fault Injection Simulator (FIS) to nowa usługa, która pomoże Ci przeprowadzać kontrolowane eksperymenty na workloadach AWS, wprowadzając awarie i pozwalając Ci zobaczyć, co się stanie. Dowiesz się, jak Twój system reaguje na różnego rodzaju problemy i będziesz miał lepsze zrozumienie trybów awarii. Możesz zacząć od przeprowadzania eksperymentów w środowiskach przedprodukcyjnych, a następnie przejść do uruchamiania ich w ramach przepływu pracy CI/CD, a ostatecznie w środowisku produkcyjnym.

Wprowadzenie do AWS Fault Injection Simulator (FIS)

Każdy eksperyment AWS Fault Injection Simulator (FIS) jest ukierunkowany na określony zestaw zasobów AWS i wykonuje na nich zestaw działań. Obecnie uruchomiono wsparcie dla Amazon Elastic Compute Cloud (EC2), Amazon Elastic Container Service (ECS)Amazon Elastic Kubernetes Service (EKS) i Amazon Relational Database Service (RDS), z dodatkowymi zasobami i działaniami w roadmapie na 2021 r. Zasoby docelowe można wybrać według typu, tagu, ARN lub poprzez zapytanie o określone atrybuty. Masz również możliwość zatrzymania eksperymentu, jeśli spełniony jest co najmniej jeden warunek zatrzymania (zgodnie z definicją w CloudWatch Alarms). Pozwala to szybko zakończyć eksperyment, jeśli ma nieoczekiwany wpływ na kluczową metrykę biznesową lub operacyjną.

Używanie AWS Fault Injection Simulator (FIS)

Stwórzmy szablon eksperymentu i przeprowadźmy go. Do tego eksperymentu użyto czterech instancji EC2, wszystkie oznaczono jako Test w kolumnie Mode:

Używanie AWS Fault Injection Simulator (FIS)

Aby rozpocząć, otwórz konsolę FIS oraz kliknij w Create experiment template:

Create experiment template:

Wprowadź opis oraz wybierz rolę uprawnień IAM. Rola przyznaje uprawienia potrzebne FIS do wykonywania działań na wybranych zasobach, aby mógł wykonać eksperyment:

Wprowadź opis oraz wybierz rolę uprawnień IAM

Następnie, zdefiniuj akcję(e), które obejmują eksperyment. Kliknij w Add action, aby rozpocząć:

Add action

Następnie zdefiniuj swoją pierwszą akcję – w tym przypadku chciano zatrzymać niektóre z instancji EC2 (oznaczonych w tym przykładzie trybem testu) na pięć minut i upewnić się, że system nadal działa. Dokonaj wyborów i kliknij w Save:

Dokonaj wyborów i kliknij w Save:

Następnie wybierz zasoby docelowe (w tym przypadku instancje EC2) do eksperymentu. Klikaj w Add target, nadaj swojemu celowi nazwę i wskaż, że składa się on ze wszystkich instancji EC2 (w bieżącym regionie), które mają tag Mode z wartością Test. Możesz również wybrać losową instancję lub procent wszystkich instancji, które pasują do tagu lub filtru zasobów. Ponownie dokonaj wyborów i klikaj Save:

Możesz wybrać jeden lub więcej warunków zatrzymania (CloudWatch Alarms) dla eksperymentu. Jeśli alarm zostanie wywołany, eksperyment zostanie przerwany. Ten mechanizm bezpieczeństwa pozwala upewnić się, że lokalna awaria nie przerodzi się w awarię na pełną skalę.

Na koniec otaguj eksperyment i kliknij Create experiment template:

WS Fault Injection Simulator – Użyj Controlled Experiments aby zwiększyć niezawodność

Szablon jest gotowy do użycia jako podstawa do eksperymentu:

Szablon jest gotowy do użycia jako podstawa do eksperymentu:

Aby przeprowadzić eksperyment, wybierz szablon, a następnie opcję Start experiment z menu Actions:

Aby przeprowadzić eksperyment, wybierz szablon, a następnie opcję Start experiment z menu Actions:

Następnie kliknij w Start experiment (możesz dodać tag jak w przykładzie):

Następnie kliknij w Start experiment (możesz dodać tag jak w przykładzie):

Musisz potwierdzić swój zamiar, ponieważ może to wpłynąć na zasoby AWS:

Musisz potwierdzić swój zamiar, ponieważ może to wpłynąć na zasoby AWS:

Eksperyment zaczyna działać i możesz obserwować działania:

AWS Fault Injection Simulator – Użyj Controlled Experiments aby zwiększyć niezawodność

Zgodnie z oczekiwaniami instancje docelowe są zatrzymywane:

AWS Fault Injection Simulator – Użyj Controlled Experiments aby zwiększyć niezawodność

Przykładowy eksperyment dobiega końca i wiadomo już, że system może kontynuować pracę, jeśli te wystąpienia zostaną zatrzymane:

AWS Fault Injection Simulator – Użyj Controlled Experiments aby zwiększyć niezawodność

Możesz również tworzyć, uruchamiać i przeglądać eksperymenty przy użyciu FIS API i FIS CLI. Możesz na przykład przeprowadzić różne eksperymenty z tym samym celem lub ten sam eksperyment z różnymi celami.

Dostępny już teraz

AWS Fault Injection Simulator (FIS) jest dostępny i można go używać do przeprowadzania kontrolowanych eksperymentów. Jest obecnie dostępny we wszystkich komercyjnych regionach AWS z wyjątkiem Azji i Pacyfiku (Osaka) oraz dwóch regionów w Chinach. Pozostałe trzy regiony handlowe znajdują się na roadmapie.

Ceny są oparte na liczbie minut wykonywanych przez Twoje działania. Przeczytaj stronę z cenami FIS Pricing, aby dowiedzieć się więcej.

źródło: AWS

 

Case Studies
Referencje

Firma Hostersi pozwoliła nam osadzić ogólne zagadnienia programu Well Architected Framework w kontekście naszej firmy. Oszczędziło nam to wiele czasu i pozwoliło znaleźć lepiej dopasowane rozwiązania do specyfiki naszego biznesu. WAF był świetnym katalizatorem do wprowadzenie szeregu zmian w obszarze niezawodności, szybkości i bezpieczeństwa edrone. 

Piotr Stachowicz
CTO
W skrócie o nas
Specjalizujemy się w dostarczaniu rozwiązań IT w obszarach projektowania infrastruktury serwerowej, wdrażania chmury obliczeniowej, opieki administracyjnej i bezpieczeństwa danych.