Důležité změny na Roští

Bohužel jsme se poslední dva měsíce setkávali s výpadky, které jsme neměli moc možnost ovlivnit. Vypadávaly nám servery ve Scaleway i naše fyzické servery v Master DC. Jsou to věci, kterým se nevyhneme, protože nemáme pod kontrolou každý článek řetězce mezi kód a jeho uživateli. Samozřejmě s tím ale nejsme spokojení a tak se chystáme udělat změny, které by nám mohli pomoci řešit problémy rychleji a nebo jim i kompletně předcházet.

Z pohledu moderních aplikací je Roští stále běžný hosting, i když trochu naboostovaný. Běží u nás totiž aplikace na jednoduchém setupu, kdy každá má jeden kontejner a ani v případě, že by zvládla běžet ve více kontejnerech, tak to aktuálně neumíme nabídnout. Zákonitě pak, když aplikace běží na jednom serveru, za jedním load balancerem a nad jednou databází, dřív nebo později se něco stane.

Řešení výpadků je pro nás extrémně drahé i psychicky náročné. Nemůžeme si vybrat hodinu ani den, musíme se postarat aby služba zase jela a u toho odepisovat lidem, kteří chtějí vědět, kdy budeme zase up. Je tedy v zájmu obou stran problémům předcházet.

Některým klientům, kteří u nás mají celý svůj business, nabízíme vysoce dostupný cluster, který je odolný vůči výpadkům jednoho či více kusů hardwaru a nebo se alespoň dají problémy řešit mnohem rychleji. Nicméně to vyžaduje spolupráci nás i programátorů, abychom připravili prostředí, které oni mohou využít. Vysoce dostupná aplikace musí umět pracovat s úložištěm statických dat a někdy i s více databázemi najednou.

Tímto bychom tedy rádi oznámili, že s další aktualizací administrace dostane Roští podporu pro běh aplikací ve více kontejnerech. Zatím půjde o nasměrování load balanceru na dva či více kontejnerů a budeme sbírat odezvu od uživatelů, ale hned v dalším kroku chceme nabídnout úložiště kompatibilní s S3 a replikované custom databáze.

Vysoká dostupnost našich služeb bude další roky naší největší prioritou. Chceme nabídnout standardizované prostředí, ve kterém půjde snadno rozjet aplikaci distribuovaně a tím usnadnit život jak nám tak našim klientům.

Naneštěstí není nic zadarmo a ani v tomto případě nevyhneme nějakým dalším změnám, které nám to umožní. Můžeme být nejlepší v hostování aplikací, ale zároveň nemůžeme být nejlepší v poskytování emailových služeb. Společně se změnou popsanou výše chceme také oznámit, že od března příštího roku přestaneme nabízet naše emailové služby a zároveň zrušíme staré Roští.

Emailové schránky nabízíme od začátku zdarma jako doplňkovou službu. V současné době se ale počet emailů rozrostl přes únosnou mez a to jak množstvím dat, tak co se týče podpory. Většina dotazů na podpoře se týká emailů a i kvůli tomu nás každá schránka stojí přibližně 30 Kč měsíčně.

Zrušení emailů proběhne v několika krocích.

  • V dokumentaci přidáme text popisující tři služby, na které je možné přejít a víme, že fungují spolehlivě.
  • Rozešleme informaci o rušení služby do každé schránky. (říjen 2017)
  • Zakážeme přidávat nové schránky. (listopad 2017)
  • Rozešleme znovu informaci o rušení služby do každé schránky. (leden 2018)
  • Poslední upozornění na rušení služby do každé schránky. (březen 2018)
  • Vypnutí emailových služeb. (31. březen 2018)
  • Smazání všech dat. (31. květen 2018)

Druhou službou, kterou ukončíme, je staré Roští. Aktuálně pracujeme na migračním nástroji, který ale nebude stoprocentní a bude vyžadovat změny v kódu vaší aplikace. Staré Roští tu s námi je šest let a je čas se s jeho prostředím rozloučit. Jeho servery nejsou nějak automatizované a navíc by bylo nutné je brzy aktualizovat na novější verzi Debianu a do toho se už pouštět nebudeme.

Vypnutí proběhne v těchto krocích:

  • Spuštění migračního nástroje. (prosinec 2017)
  • Upozornění že staré Roští končí. (prosinec 2017)
  • Další upozornění, že Roští končí. (1. březen 2018)
  • Vypnutí webů na load balanceru. (31. březen 2018)
  • Smazání dat (31. května 2018)

Až budeme mít tohle všechno za sebou, uvolní se nám ruce k posunování Roští o kousek dál trochu větším tempem a hlavně trochu jiným směrem. Změny jsou důležité hlavně kvůli uvolnění hardwaru a podpory, abychom mohli provozovat distribuované služby, potřebujeme trojnásobek serverů tak jsou oba kroky nezbytné k tomu, co jsem v prvních části tohoto článku nastínil.

Chápeme, že ne všichni uživatelé z toho budou nadšení, ale doufáme, že oceníte změny, které nám to umožní implementovat. Děkujeme za dosavadní podporu a budeme rádi, když nám napíšete, co si o chystaných novinkách myslíte.

Expirace CA certifikátů

Máme malý problém s administrací. U starších serverů dnes nepůjde provádět žádné změny u aplikací, protože nám expiroval CA certifikát. Pro komunikaci s Dockery používáme vlastní certifikační autoritu. Když jsme před dvěma lety generovaly CA certifikát pro tuto autoritu, nastavili jsme platnost pouze 2 roky místo běžných 10 a více. Proto jsme tento certifikát neřešili a starali se jen o certifikáty pro jednotlivé instance.

Nicméně nás to teď dohnalo a abychom to opravili, tak musíme restartovat docker na všech postižených serverech. To nemůžeme udělat bez výpadku, vyžaduje to totiž restart dockeru, proto prosím omluvte, že dnes nepůjde s aplikacemi na těchto serverech manipulovat. Jedná se pouze o problém v administraci, aplikace jako takové běží dál bez problémů. Opravíme to co nejdříve během dnešní noci.

Výpadek serveru alpha-node-7 v září

Někteří z vás si všimli, že jsme měli v září velký výpadek jednoho ze serverů, který máme u služby Scaleway. Šlo o alpha-node-7, původně Pluto. Mrzí nás že k tomuto došlo a snažili jsme se to vyřešit jak nejrychleji to šlo obnovou ze zálohy. Tu jsme měli shodou okolností jen 30 minut starou. Mrzí nás to i pohledu, že jsme u Scaleway více než rok a tohle se nám nikdy nestalo. S jejich podporou jsme měli vždy nejlepší zkušenosti, natož aby nám vypadávaly nějaké servery.

Tento stroj ani nebyl první, kterému se v září stal stejný problém, ale v předchozím případu se stal v mnohem vhodnější dobu – ve večerních hodinách.

Jak se ale ukázalo, tak na podpoře bohužel řeší primárně administrativní problémy a technické předávají někam dál, kde jsou striktně v pracovní dny od 9:00 do 17:00. Platili jsme jim za podporu a SLA 99.95 %. Po tomto problému jsme s nimi měli dlouhou diskusi nad tím, co to vlastně znamená, když tento konkrétní server spadl na 99.1 %. Stejně jako u mnoha jiných služeb, je to jen číslo na webu a žádná reálná statistika za tím bohužel není.

Investovali jsme do migrace spoustu času a od konce srpna celé nové Roští už běží na serverech Scaleway. Na našich fyzických serverech zůstala jen pošta a staré Roští. Byla to nepříjemná situace, ale bohužel k ní může dojít jak u Scaleway, tak u jiných providerů.

 

Proto jsme se rozhodli, že nabídneme možnost hostovat aplikace na více serverech najednou. Zatím půjde o oddělené kontejnery, ale až nasbíráme zpětnou vazbu od uživatelů, tak přidáme i synchronizaci dat mezi nimi. Na této funkci teď pracujeme a je to naší největší prioritou. Měla by být dostupná v následujících týdnech.

Děkujeme za pochopení a omlouváme se za způsobené komplikace.

Víkendový výpadek

V sobotu krátce po 22:00 došlo k výpadku serveru alpha-node-6. V době psaní tohoto příspěvku ještě netušíme co je za problémem. Zdroj je někde na infrastruktuře Scaleway a pravděpodobně souvisí s výpadkem minulý týden, kdy došlo k odpojení síťových disků.

Pár minut před výpadkem došlo k nárůstu I/O operací a loadu, ale podle nás nebyla důvodem žádná nečekaná zátěž, ale spíše hardwarový problém. Podle podpory se jedná o problém se sítí na konkrétním nodu. Bohužel to nedokázali ani po 24 hodinách vyřešit a tak považujeme server za ztracený.

Nicméně jsme server obnovili ze zálohy a už ráno byly v provozu. Zvládli bychom to mnohem dřív, ale využili jsme příznivé denní doby a čekali, zda se podpoře nepodaří problém vyřešit a my nemuseli zahodit data za celý pátek. Databází se problém nedotkl.

Výpadkům se jen tak nevyhneme ať už používáme jakoukoli platformu. Díky přechodu do cloudu se nám otevírají nové možnosti, jak případné problémy řešit. Příští týden budeme hledat způsob, jak se zajistit rychlejší archivaci aplikací a jejich nahození na jiné servery, ideálně automaticky. Když ztratíme server, chceme se dostat s jeho obnovením pod hodinu. I když používáme Ansible, tak stále zůstává hodně manuálním úkonů, ve kterých máme ještě mezery.

Hodina se může zdát možná hodně, ale pracujeme s více než 100 GB dat na každém serveru, někde i více a jejich přenesení chvíli trvá. Není tedy problém spustit další server do pár minut, ale dostat na něj rychle data ze zálohy.

Stěhování do cloudu

Roští se už několikrát stěhovalo a když to bylo naposled, nešlo to úplně dobře. Nyní ho čeká další stěhování, ale z jiných důvodů, chceme totiž omezit počet vlastních serverů. Důvodem je, že nikdo z nás už se nežije v Praze a dostat se k serverům nám tak zabere minimálně hodinu a půl. Jdeme tedy do Cloudu.

Poslední rok testujeme službu Scaleway. Jedná se o poskytovatele cloudových serverů ať už baremetal nebo virtuálních. Nejedná se o nic luxusního jako je třeba Azure nebo AWS, ale tomu také odpovídá cena, která je velmi podobná vlastnímu hardware s housingem. Scaleway toho dosáhlo tím, že dostali přes 700 serverů do jednoho racku.

Testování probíhalo na ostro, server alpha-node-4, alpha-node-5 a alpha-node-6 běží ve Scaleway. Bylo pro nás důležité jak to budou vnímat naši zákazníci, protože servery v Paříži jsou od nás asi 20ms, ale žádné negativní reakce nedorazily. Mimo odezvy nás zajímala spolehlivost, Scaleway je totiž hodně levné, ale stojí za ním velká korporace (Online.net), takže úplně špatně spočítané být nemůže. Začala nás tedy zajímat spolehlivost. Celkem provozujeme ve Scaleway jedenáct serverů a během roku došlo k jednomu problému se sítí, kdy byl jeden z nich odpojen na hodinu a půl a pak k druhému problému, kdy se odpojilo síťové úložiště.

V prvním případě podpora zareagovala rychleji než jsme si toho všimli my a celou věc s námi komunikovali. Druhý případ se týkal jen našeho serveru a tam se nepodařilo najít příčinu.

Výkonově servery nejsou žádné hvězdy, ale ukázalo se, že pro potřeby naší služby máme ještě velké rezervy. Pro jistotu jsme ale implementovali omezení na dvě jádra u nejmenšího balíčku a postupné zvyšování u vyšších balíčků. Od té doby nemáme problém s tím, že by jedna aplikace „sežrala“ výkon celého serveru.

A teď to důležité, v příštích dvou týdnech se bude zbytek nového Roští stěhovat do Scaleway. Jedná se o tři aplikační servery a jeden databázový a všechny čtyři se musejí přenést najednou, resp. přepnout ze starého na nový v jednom okamžiku.

Tento víkend budeme připravovat nové prostředí, což bude vyžadovat přenos přibližně 500 GB dat. Kdy dojde k přepnutí ještě netušíme, ale v plánu máme příští nebo ten další víkend, tedy 26. až 27. srpna nebo 2. až 3. září.

Nemělo by dojít k velkým výpadkům. Je možné, že budete mít během víkendu problémy připojit se na SSH a během noci se mohou weby na pár hodin odmlčet. Důvodem je, že chceme udržet přenos konzistentní a to se nejlépe dělá, když služba neběží. Výpadek se bude týkat všech čtyř serverů najednou. Pokusíme se to provést mezi půlnoci a třetí ráno v noci z pátka na sobotu.

Díky tomuto kroku budeme schopni řešit problémy rychleji. Nebude pro nás ani problém spustit nový server a nasadit na něj zálohu, takže v případě fatálního selhání pronajatého hardwaru budeme schopni zprovoznit službu hned jak se zkopírují data na nový server.

Na fyzických serverech zůstává zatím pošta, staré Roští a zálohování. Výhledově chceme nechat dva fyzické servery. Jeden je velmi výkonný 1U Dell s SSD disky. Druhý je slabý stroj s prostorem 8 TB určený k zálohování.