Jak jsme si shazovali cloud a nevěděli o tom

Jak jsme si shazovali cloud a nevěděli o tom

22. 5. 2025 | Ing. Tomáš Hojgr, MBA | majitel

V posledních dnech jsme zaznamenali několik 2-4 minutových výpadků a netušili, co je způsobuje. Už to víme.

Máme aktivní ochranu proti dotěrným botům

Botů, kteří skenují weby je stále víc. S nástupem AI jsou schopni analyzovat větší data a tak jsou stále dotěrnější, způsobují stále větší parazitní zátěž. Ta je nežádoucí.

Google a Seznam u nás mají vyjímku, nějaké výjimky má i Meta. Ostatní boty necháme fungovat, ale když přehánějí limity slušnosti (doporučené v robots.txt), řekneme jim to a případně jim zamezíme přístup.

Jak funguje naše ochrana proti botům

Logujeme každého návštěvníka. A když několik minut po sobě stahuje více stránek za sekundu, než by zvládl člověk, na chvíli jej omezíme. Řekneme, že to přehání a necháme jej stahovat jen určitý počet stránek za sekundu.

Když si nedá říct, na chvíli jej zablokujeme. A když nepřestane, nebo se za chvíli zblázní znovu, zablokujeme jej na dýl.

S botem lze komunikovat několika způsoby:

  • Sdělit mu doporučený počet stránek za sekundu, který nám nevadí. To se dělá v robots.txt a slušní roboti to respektují.
  • HTTP hlavičkou 429 sdělující přílišnou zátěž ze strany návštěvníka
  • HTTP hlavičkou 503 sdělující dočasnou nedostupnost služby

Nově máme také loadbalancery

Loadbalancery jsou chytré servery, které rozdělují zátěž mezi jednotlivé aplikační servery (na těch běží e-eshopy).

Takže požadavek návštěvníka jde na loadbalancer. Ten má přehled o zbytku serverů a rozhodne, který aplikační server ten požadavek vyřídí.

A když je některý aplikační server loadbalancerem považován za přetížený, dočasně z něj provoz odkloní jinam a nechá mu čas na zotavenou. Za chvíli si jej osahá a provoz na něj případně vrátí.

Ochrana proti botům si nerozuměla s loadbalancery

A to byl kámen úrazu, který nebyl na první pohled jasný nám vývojářům, ani adminům serverů.

Když jsme botovi poslali robots.txt s našim doporučením o zátěži, loadbalanceru to nevadí.

Když jsme botovi poslali HTTP hlavičku 429, informující robota že to se zátěží přehání, loadbalanceru to taky nevadilo.

Když jsme ale botovi poslali HTTP hlavičku 503 s informací o dočasné nedostupnosti služby, byla to informace jen pro toho bota. Jenže loadbalancer ty hlavičky monitoruje a i podle nich se rozhoduje o zdraví každého z aplikačních serverů.

A tak nastala situace, že bot dostal informaci 503 a dostal ji mnohokrát po sobě - boti si umějí přijít pro stránku několiksetkrát za sekundu. A když loadbalancer viděl, že ten aplikační server návštěvníkům vrací chybu 503, odstavil jej. Obecně jsou chyby typu 500 považovány za chybu serveru. Loadbalancer se tedy choval zcela správně.

A bot byl obsluhován dalším aplikačním serverem, který se ale choval stejně a vracel botovi 503. Tak jej loadbalancer zablokoval také. A tak dál a dál, až byly zablokovány všechny aplikační servery.

Když byl aplikační server loadbalancerem odstaven, nevracel chyby typu 500 a tak mohl být loadbalancerem znovu aktivován, protože na kontrolním měřícím bodě pro loadbalancer odpovídal správně. A tak byl. A další servery postupně také. A celé to kolečko trvalo jak kdy, dvě až čtyři minuty.

Upravili jsme ochranu proti botům a vše nyní funguje jako na drátkách

Loadbalancery jsou pro nás nové. Nyní víme, že aplikace nesmí vracet chybu typu 500, a tak ji vracet nebudeme.

Ochrana bude botům vracet stále jen 429, když to budou přehánět, loadbalancery budou spokojené, aplikační servery zůstanou v provozu a vše bude fajn. A hlavně bez těch výpadků.

A my se můžeme jít po pár dnech trochu vyspat:)

O Autorovi: Ing. Tomáš Hojgr, MBA

Ing. Tomáš Hojgr, MBA

Podnikám od roku 2001 a celou dobu se věnuji tvorbě eshopů a jejich propagaci. Studoval jsem informatiku, podnikání, marketing, a baví mě pracovat na projektech, kde se technologie prolíná s obchodem. Mám rád čundry, četbu, technologii, cestování, offroady, motorky a víkendy trávím obvykle na chalupě v Nízkém Jeseníku, poblíž Libavé.

Facebook Twitter LinkedIn Google+