Ainult 1 viga Amazoni võrgus põhjustas ülemaailmse teenusehäire
Laialdast Amazon Web Services (AWS) teenusehäiret põhjustas üksik süsteemiviga, mis kandus ahelreaktsioonina üle kogu Amazoni globaalse võrgustiku. Häire kestis ligi 15 ja pool tundi ja pani kokkuvõttes seisma tuhandeid organisatsioone üle maailma.
Häire ulatus ja mõju
Võrgustikulabori Ookla andmetel registreeris nende teenus DownDetector üle 17 miljoni teate 3500 erineva organisatsiooni teenuste tööseisakute kohta. Kolm enimmõjutatud riiki olid USA, Suurbritannia ja Saksamaa. Enim teateid saadi populaarsete platvormide nagu Snapchat, AWS ise ja Roblox kohta. Ookla nimetas seda üritist „üheks suurimaks internetikatkestuseks DownDetectori ajaloo jooksul”.
Põhjus: DNS-süsteemi tarkvaraviga
Amazoni inseneride järelanalüüs tuvastas probleemi põhjuseks tarkvaravea DynamoDB andmebaasi DNS-haldussüsteemis. See süsteem vastutab koormuse tasakaalustajate tervise jälgimise ja uute DNS-seadistuste loomise eest. Probleemi tuumaks oli nn võidujooks (race condition). See on olukord, kus süsteemi käitumine sõltub juhuslikest ja kontrollimatutest sündmuste ajastustest, mis võib põhjustada ootamatut ja kahjulikku riket.
Tehniline mehhanism: kuidas viga levima hakkas
- Viga tekkis komponendis nimega DNS Enactor, mis uuendab DNS-tabeleid. See komponent koges ebatavalisi viivitusi, mis sundisid seda uuenduskatseid korrama.
- Samaaegselt jätkas teine komponent, DNS Planner, vigast Enactorit teadmatuna uute seadistusplaanide genereerimist.
- Kui esimene Enactor viivitusega maadles, hakkas teine Enactor neid uusi, plaanijalt saabunud käske rakendama.
See kahe protsessi sünkroonimatus ja ülekoormus lõi ahelreaktsiooni, mis viis laialdase DNS-i rikkeni, muutes paljud AWS-i teenused kättesaamatuks.
"Kui teine Enactor (mis rakendas uusimat plaani) lõpetas oma lõpppunkti uuendused, käivitas ta plaani puhastamisprotsessi, mis tuvastab plaanid, mis on oluliselt vanemad kui äsja rakendatud plaan, ja kustutab need. Samal ajal, kui see puhastamisprotsess käivitati, rakendas esimene Enactor (mis oli ebatavaliselt viivitatud) oma palju vanema plaani piirkondlikule DDB lõpppunktile, kirjutades üle uuema plaani. Kava rakendamise protsessi alguses tehtud kontroll, mis tagab, et kava on uuem kui eelmine rakendatud kava, oli selleks ajaks aegunud Enactori töötlemise ebatavaliselt suure viivituse tõttu. Seetõttu ei takistanud see vanemat kava uuema kava ülekirjutamist. Teise Enactori puhastamisprotsess kustutas seejärel selle vanema plaani, kuna see oli palju põlvkondi vanem kui äsja rakendatud plaan. Kuna see plaan kustutati, eemaldati kohe kõik piirkondliku lõpppunkti IP-aadressid. Lisaks, kuna aktiivne plaan kustutati, jäi süsteem ebajärjekindlasse seisundisse, mis takistas järgnevate plaanide uuenduste rakendamist mis tahes DNS Enactori poolt. Selle olukorra parandamiseks oli lõpuks vaja operaatori käsitsi sekkumist."
