Nový a rychlejší server, změny v zálohování

Dostali jsme se opět do bodu, kdy potřebujeme nový node do naší infrastruktury. Normálně o tom nepíšeme, protože to je pro nás otázka několika kliknutí, ale s node-10.rosti.cz přijdou i nějaké změny. Tak se na ně pojďme kouknout.

Než přejdeme k serveru samotnému, máme ještě jednu novinku k zálohování. Všechny servery s [alpha-]node-[X] v názvu jsou zálohovány jednou za tři hodiny s historií až jednoho týdne. Dřívější stav byl jednou denně s historií tři dny. Navýšení nám pomůže se lépe vypořádat s problémy, které jsme měli se Scaleway v září minulého roku. Pokud k takovým problémům znovu dojde, nebudeme se pokoušet stroj vůbec zachránit ale použijeme data ze záloh. Pracujeme ještě na automatizaci obnovy jednotlivých serverů.

Teď k hlavnímu tématu. Nový Node běží na intense instanci s Intel Xeon D-1531, takže je až 3x rychlejší než předchozí stroje se serverovými Atomy. Rozdíl bude znát hlavně u aplikací s většími frameworky jako je RubyOnRails nebo Django. I u ostatních ale dojde ke zlepšení odezvy. Změna se týká pouze nových aplikací a cenu hostingu to neovlivní.

Nový server už nebude mít v názvu alpha. Používali jsme ho pro oddělení názvů serverů od starého Roští, ale protože staré Roští bude letos končit a navíc běží na úplně jiném hardwaru s jinými adresami, postrádá označení smysl. Původ slova alpha je v administraci, které jsme několik let takto říkali, dokud jsme ji po čase nezačali označovat pouze admin.

Společně s touto změnou nebude mít nový stroj ani FTP server. Už jsme to určitě psali, ale raději zopakujeme. FTP je na Roští implementované jako hack. Je to místo, ze kterého je přístup do všech kontejnerů na serveru a vyžaduje přidělenou veřejnou IP adresu. I když to bude znít všelijak, tak kromě load balanceru nechceme mít servery dostupné veřejně.

Důvodů je hned několik. Dá se na ně útočit ať už DDOS útokem či přímo zneužíváním nějakých chyb. Druhým důvodem je nedostatek IPv4 adres, který se bude dále prohlubovat. A nakonec třetí důvod je bezpečnost. Všechno na našich serverech odděluje Docker a jeho mechanismy. FTP tyto mechanismy obchází.

Za pomoci našeho load balanceru v Master DC jsme schopni DDOS útoky potlačovat, ale je to drahá technologie, abychom ji mohli nasazovat u každého serveru.

Zároveň nám to pomůže udělat další krok a to jednotný SSH server. Bez ohledu na jakém serveru bude vaše aplikace umístěna, bude na ní přístup přes ssh.rosti.cz. Port zůstane, změní se pouze hostname. O tomto ale ještě napíšeme.

FTP na starých serverech zůstane prozatím beze změny minimálně do konce tohoto roku. Uvidíme, jak dopadne vypnutí na tomto.

 

Bezpečnostní chyba v procesorech Intel

Světem serverů otřásá bezpečnostní problém procesorů Intel, kvůli kterému může útočník v extrémním případě přistupovat do libovolné části paměti serveru bez ohledu na to, pod jakými právy běží. Jde tedy o problém, který se musí opravit i za cenu výpadku v méně vhodných časech.

Většina provozovatelů moderních cloudů aktuálně bojuje s tím, jak systém ve svých serverech záplatovat a restartovat, což bohužel ovlivní i Roští. Většina nového Roští je hostována ve službě Scaleway, kde problém berou vážně a v příštích dvou dnech budou restartovat všechny servery. Bohužel k tomu nevydali žádný konkrétní plán a pojedou jeden po druhém. Rizika při zneužití jsou, prakticky je možné získat jakákoli data uložená na napadeném serveru.

Scaleway začne s restarty svých clusterů dnes  kolem 8:00 ráno a skončí v sobotu ve stejný čas. Neměly by být problémy s databází a adminem. V minulosti jsme měli problémy s automatickým startem kontejnerů v Dockeru. Jde o dva roky starou zkušenost a od té doby jsme tuto funkci nevyzkoušeli. Tohle tedy bude ostrý test.

Držte nám palce. Pokud vše půjde jak má, bude výpadek pouze několik minut a nebude při něm potřeba zásah lidské ruky.

Servery pošty a starého Roští máme na vlastním hardwaru a ten budeme restartovat zítra v noci.

Update 1: Scaleway nám zatím servery nerestartovalo a důvodem je, že nabízejí bare metal servery a na své straně mohou opravit jen microcode procesoru, který ještě nemají a možná ani nebyl uvolněn Intelem. Zatím tedy opravujeme jádra ručně. Dnes budeme restartovat servery alpha-node-{4,5,8 a 9}. Servery 6 a 7 jsou větší a necháváme se je na zítra. Staré Roští přijde až poté, co bude vyřešeno nové. Exploity zatím nebyly zveřejněny, takže se nemusíme bát masivního zneužívání. Administrace nám běží na ARM jádře, které je podle posledních informací v bezpečí.

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.

Aktualizace: Kvůli průtahům aktualizujeme plán celého postupu. Původní termíny prodloužíme o dva měsíce, abychom vám dali dost času se na změny připravit. Bohužel se nám zatím nepodařilo připravit dostatečně univerzální a funkční nástroj na migraci aplikací ze starého Roští na nové. Na tom ještě pracujeme. V článku najdete aktualizovaný harmonogram.

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. (leden 2017)
  • Zakážeme přidávat nové schránky. (leden 2017) – už je hotovo
  • Rozešleme znovu informaci o rušení služby do každé schránky. (březen 2018)
  • Poslední upozornění na rušení služby do každé schránky. (květen 2018)
  • Vypnutí emailových služeb. (31. května 2018)
  • Smazání všech dat. (30. června 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:

  • Upozornění že staré Roští končí. (leden 2017)
  • Další upozornění, že staré Roští končí. (duben 2018)
  • Vypnutí webů na load balanceru. (květen 2018)
  • Smazání dat (31. června 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.

Čtvrteční výpadek

Ve čtvrtečních ranních hodinách došlo k výpadku napájení v datacentru Master DC vinou selhání jednoho z aktivních prvků. Šlo o výpadek webů, které stále používají starý load balancer (83.167.253.87) a také naší administrace. Nové Roští jako takové nebylo ovlivněno, protože běží v jiném datacentru. Pošta a staré Roští vypadlo zhruba na hodinu a půl zhruba mezi 5:00 a 6:30.

K problému došlo kvůli změnám na napájení, které v Master DC prováděli. Byli jsme o změně informováni s dostatečným předstihem a protože máme dva zdroje, poprosili jsme Master, zda by nám alespoň ten nejdůležitější stroj, kde je DNS server, pošta a staré Roští, nepřipojili na dobu změny ke větvi, která nevypadne. Druhý, kde je administrace a starý load balancer, jsme vypnuli a poprosili technika, aby ho po provedení změny zapnul. Pro tento server mělo jít o výpadek mezi 2:00 a 7:00 maximálně.

Bohužel ale jedna z UPSek nepracovala správně a vypnuly se nám všechny čtyři servery. Servery jsou po dvou ve dvou místnostech, takže bylo jasné, že výpadek napájení byl mnohem větší, než v Masteru čekali a technici neměli čas náš server, který nenaběhl, zapnout. Ostatní tři naběhly v pořádku. Nakonec jsme se do datacentra dostali sami a stroj zapnuli ručně přibližně kolem osmé hodiny ranní. Pak vše naběhlo.

Všem zákazníkům se omlouváme za potíže.