Cloudflare - V začetku meseca so imele številne popularne spletne strani težave z dosegljivostjo. Nevšečnosti je zakuhal Cloudflare, ki ponuja gostovanje številnim stranem in skrbi za njihovo zaščito pred napadi DDoS. Toda če se zalomi Cloudflaru, so posledice globalne. Ko je 2. julija Cloudflare napravil napako, smo to občutili po vsem svetu. John Graham-Cumming iz Cloudflara v odkritem opisu pojasnjuje, kaj je šlo napak in kako so se odzvali. To je bil prvi globalni Cloudflarov izpad v zadnjih šestih letih.
Težave so se začele, ko so 2. julija ob 13.42 v svoj WAF (Web Application Firewall) dodali novo pravilo, ki ni bilo pravilno zapisano. Zaradi nepravilno zapisanega pravila v obliki regex (regular expression)
so preobremenili procesorje, ki so dosegli 100-odstotno obremenjenost. Šlo je za napako backtrack. To pomeni, da je Cloudflare izgubil sposobnost streči strani prek HTTP/HTTPS, kar od njega pričakujejo stranke. Ob obisku spletnih strani so zato obiskovalci dobili le obvestilo o napaki 502 Bad Gateway. Toda čeprav je bil to sprožilec, je celotna zgodba bistveno kompleksnejša.
Tri minute pozneje je prva stran PagerDuty, ki predstavlja sintetični test za WAF, že klecnila. Kasneje je klecnila še vrsta drugih strani, ki so povezani z ostalimi testi. Kmalu so začele padati tudi strani strank in ob 14.00 je bilo jasno, da ima WAF težavo. Ob 14.07 so globalno ugasnili WAF (global WAF kill). Ob 14.52 so imeli pripravljen in distribuiran popravek.
Izpad je povzročilo zaporedje več dogodkov. Napačni izraz regex, ki se mu je pridružil po naključju izključen sistem za preprečevanje preobremenitve procesorjev, test, ki ni meril preobremenitev CPU, globalna sprovedba spremembe namesto stopenjske ipd. Več podrobnosti pa je v izčrpnem opisu, ki ga je pripravil Cloudflare.
Khm... ne vem, kakšna so ponavadi opravičila drugih ponudnikov, ampak, ko sem to prebral, sem si rekel, uf uf, hvala bogu, da je še nekdo, ki napiše opravičilo lepo, jasno in razločno. Kolikor se spomnim velikih konglomeratov, kjer v dveh stavkih opišejo, da so imeli "notranje težave"... no, jaz bi jih tudi imel, če bi pojedel kozarec pekočih čilijev...
Ko ne gre več, ko se ustavi, RESET Vas spet v ritem spravi.
Težav s katastrofalnim backtrackingom ne bi bilo, če bi uporabljali regex engine, ki regex prevede v končni avtomat... Te imajo seveda svoje omejitve, npr. ne morejo podpirati backreferences, ampak v praksi zadoščajo za skoraj vse regexe.
Enostavni test, ki bi rule temeljito pretestiral, preden gre v produkcijo, bi problem preprečil. Me čudi, da ne uporabljajo t.i. canary releases ali kaj podobnega.
Se mi zdi čudno, da so delali popravke direkt na produkcijo. Kaj ni nobenega testiranja? Je pa lepo, da so tako transparetno pojasnili izpad in napako.
Gott ist tot! Gott bleibt tot! Und wir haben ihn getötet!
Se mi zdi čudno, da so delali popravke direkt na produkcijo. Kaj ni nobenega testiranja? Je pa lepo, da so tako transparetno pojasnili izpad in napako.
včasih na testnem okolju vse špila, treba je pa vedeti da na testnem okolju ni toliko obremenitve, ker tam ni "obiskovalcev" in seveda tudi toliko strani
Convictions are more dangerous foes of truth than lies.
Kakšen internet? Kot bi rekli, da je zaradi padca Google search storitve padel internet. Kar nekaj.
Antifašizem je danes poslednje pribežališče ničvredneža, je ideologija ničesar
in neizprosen boj proti neobstoječemu sovražniku - v zameno za državni denar
in neprofitno najemno stanovanje v središču Ljubljane. -- Tomaž Štih, 2021
Tudi jaz sem presenecen da na obremenjenih obmocjih uporabljajo regex engine ki podpirajo backreferences in so implementirani z backtrackingom. Cista neumnost.