Miliony osób bez internetu. Tak doprowadziła do tego jedna pomyłka
Niedawna awaria infrastruktury sieciowej AWS odcięła znaczną część świata od kluczowych aplikacji i usług. Teraz, jeden z inżynierów Amazon postanowił zmierzyć się z tym przestojem i wytłumaczył, co doprowadziło do tej sytuacji.
Jedna usterka uruchomiła globalny efekt domina
Globalny paraliż internetu
Seria awarii trwała ponad 15 godzin, a w tym czasie portal DownDetector otrzymał aż 17 milionów zgłoszeń dotyczących przestojów w dostępie do usług. Dotkniętych zostało aż 3500 różnych firm z 60 różnych krajów. Najwięcej zgłoszeń napłynęło z USA, UK i Niemiec, a najbardziej ucierpiały usługi chmury AWS, Snapchat oraz Roblox. Firma Ookla, właściciel witryny Downdetector, przyznała, że to jeden z największych internetowych przestojów, jakie zostały zarejestrowała.
A wszystko zaczęło się od jednej usterki, która pociągnęła za sobą całą lawinę problemów. Oczywiście sprawa rozchodzi się o DNS-y, czyli łączniki pomiędzy stronami internetowymi a ich adresami IP oraz błąd, w wyniku którego dwa różne procesy żądały dostępu do tych samych danych.
W infrastrukturze Amazon Web Service znajdują się dwa moduły: DNS Enactor i DNS Planner. Enactor na bieżąco aktualizuje tablice adresów (DNS) w poszczególnych punktach AWS. Dzięki temu ruch sieciowy jest kierowany tam, gdzie serwery są dostępne i najmniej obciążone. Z kolei Planner tworzy nowe "plany" aktualizacji, czyli zestawy instrukcji, jak mają wyglądać tablice DNS w danym momencie.
Normalnie Planner generuje plan, a Enactor go wdraża. Jeśli pojawi się nowy plan, powinien on zastąpić starszy – zawsze w logicznej kolejności. Starsze plany są później usuwane, żeby nie zaśmiecały systemu.
Jeden z Enactorów miał duże opóźnienia – musiał wielokrotnie próbować zaktualizować niektóre punkty DNS i przez to "został w tyle". W tym czasie Planner nie czekał – generował kolejne, nowsze plany. Drugi Enactor (działający normalnie) zaczął wdrażać te świeże plany. Stworzyło to konflikt dostępu do zasobów. Drugi Enactor zakończył wdrażanie i uruchomił proces sprzątania - usunął wszystkie stare plany, które są już nieaktualne. Dokładnie w tym samym czasie pierwszy, opóźniony Enactor w końcu wdrożył swój stary plan. System miał mechanizm sprawdzania, czy plan jest nowszy niż poprzedni – ale ta weryfikacja była już "przeterminowana" (czyli nie do zastosowania), bo opóźnienie było zbyt duże. W efekcie stary plan został nadpisany przez nowy plan, a wraz ze starym planem zniknęły wszystkie przypisane do niego adresy IP. Doprowadziło to do niespójnego stanu, w którym nie było aktywnego planu i nie można było zastosować kolejnych aktualizacji. W tej sytuacji musiał zainterweniować jeden z inżynierów Amazona.
Niestety nawet po rozwiązaniu usterki, problemy nie zniknęły natychmiast, gdyż były ogromne zaległości w przetwarzaniu dotychczasowych żądań sieciowych. Przez to infrastruktura sieciowa nadal była przeciążona (szczególnie EC2 - usługa wirtualnych serwerów Amazona), pomimo przywrócenia jej do stanu poprzedniego.
Firma Ookla uważa, że przyszłością w podejściu do tego typu sytuacji jest większa kontrola nad zarządzaniem kryzysowym. Ookla jest zdania, że trzeba wprowadzać rozwiązania, które kierują ruch sieciowy przez wiele regionów (zamiast jednego US-EAST-1 obsługującego niemal cały świat). Ponadto, w opinii Ookli należy tworzyć infrastrukturę z wieloma dostawcami i różnymi typami technologii oraz wprowadzić zmiany w prawie, które traktowałyby chmurę sieciową jako infrastrukturę krytyczną dla bezpieczeństwa narodowego i ekonomicznego.