/ Development

Jak Wake zbořil základ serveru! (část 3.)

V tomto díle si probereme vše nové, jak vše funguje a co se vše změnilo za poslední dva až čtyři měsíce. Bude toho opravdu hodně!

Téma navazuje na dva předchozí díly:

  • Jak Wake zbořil základ serveru (1. část)
  • Jak Wake zbořil základ serveru (2. část)

Na začátku ti ukažu toto schéma, je to schéma nové podoby serveru, my si zde spolu vše popíšeme dopodrobna a zároveň ti to také ukážu.

1_PxXRhp5AvPIw8OpA9odCGA

Proč tak rozsáhlé změny?

Jak jsem již popisoval v předchozích tématech, server byl značně omezován hostigem. Nemějme jim to zazlé, limity jsou důležité avšak pokuď jsou opakující a znepříjemňující (hraní hráčů), tak je potřeba s tím něco udělat. No a tak nastal čas. Od 1.8. až do 30.11.2017 se postupně přesunoval server na tzv. vlastní servery — dedikovaný server.

Dedikovaný server je takový server, na kterém mám jakožto já plný přístup tzv. root. Mohu na něm dělat cokoliv, jakkoliv ho přeinstalovat, cokoliv tam nainstalovat ale garanci a udržbu stále řeší hosting, samozřejmě jiný než ten od koho jsme odešli.

Jak jsem uvedl v druhé části této série, celá novodobá Minecraft sekce serveru pojede na nejnovějších AMD Ryzenech 7. To, že tyto procesory dosahují nepředstavitelného výkonu mi v prvních týdnech již dokázalo vyrazit dech. Jelikož po převodu prvních serverů (těch nejnáročnějších a největších) se celkový výkon DS (Dedikovaný server) nepřekročí celkové vytížení za den 30%. V rozpočítání jader, kterých je 8 (8 fyzických, 8 virtuálních) dojdeme k závěru, že Ryzeny mají tak velký výkon, že by prakticky na celý server stačily dva servery. Jenom za zmínku stojí, že minulý hosting bojoval s každým serverem zvlášť na zatížení 400% (což odpovídá 4 jádrům). Teď cítíš ten výkon?

1_yipVldfxWZTs5qWCQUEEJQ

Pomohlo tomu také to, že všechny servery běží v tzv. Dockerech. Vše o Dockerech jsem popsal v první části. Ovšem říkáš si, když to celkově žere 30%, tak musí ty servery švihat jak blázen ne? No pravda je jinde…

Problém je u základu hry. Minecraft je celkově stavěný jako jedno-jádrová hra. Tzn. že nedokáže využít celkový výkon procesoru. Maximum, je totiž 1 CPU. Když jich tedy máš 16, tak 15 leží v posteli a spinká. Ovšem nebudu zasahovat moc do této logiky, jelikož sám se v tom moc nevyznám ovšem doufám, že s tím něco Mojang v příštích letech udělá. Jinak je to v celku na prd mít X jader a server vám pojede stejně rychle jako na 2 jádrovým.

Cloudflare

No ale přejdeme k hlavním částem, jako první je Cloudflare. O co jde? Jedná se prakticky o DDoS ochranu pro weby, avšak server to využívá i jako DNS (převody textu -> IP, kdo by nevěděl co to je). Jelikož Cloudflare DNS jsou tak rychlý, že prakticky jakákoliv změna se projeví instantně. Lze pak například v případě problémů, že jeden server nepůjde okamžitě přesměrovávat hráče na jinou “IP” přitom oni stále budou mít “play.xxxx”.

Samozřejmě Cloudflare toho má víc, například pro weby nám optimalizuje obrázky, v případě problémů dokáže i upozornit. Nebo také v případě výpadku, může hráčům poskytovat stále web z vlastní Cache.

1_kGXR59nqpuef-sA-h1KaBQ1_l18OvCpqpAVR70Xusyn7Eg

Hlavní web a banlist

Web je nemyslitelnou stránkou serveru, najdeš tam vše. Proto musí být vždy a za jakýkoliv problémů vždy online. Mnoho českých serverů web ovšem opomíjí a mají ho pouze jako, aby se neřeklo. Ovšem u nás ne, proto se pyšní jedním z největších Minecraft CZ/SK fór pro servery a pár věcí okolo.

Samozřejmě takový web potřebuje již nějakou kapacitu a nějaké zabezpečení. My se hlavně nyní podíváme na to zabezpečení. Jelikož pod sekci webu spadají všechny weby od CraftManie, Waked až po Corgiho.

Dle základních pravidel na serveru, je bezbečnost vždy až na prvním místě.

Proto veškeré weby mají již víc než 3 roky https. Co to znamená? Znamená to to, že veškeré připojení mezi tebou a naším serverem je šifrované, nemůže ho tedy nikdo sledovat a nebo luštit, co kde napíšeš. Samozřejmě k HTTPS se vztahují také SSL certifikáty. Pro hlavní web jej spravuje Cloudflare, jelikož hlavní web jde extra ještě přes speciální “tunel” s extra šiforváním. Nikdo tedy nemůže i kdyby se snažil zjistit z našeho webu (kdyby se tam někdo někdy dostal) něčí IP. Jelikož k tomu potřebuje speciální připojení na Cloudflare.

Redis & PosgreSQL

Ačkoliv jsou tyto dva “servery” oddělené prakticky slouží již dnes k budoucímu testování a přípravám na rok 2018.

Redis — je typ databáze, který je opravdu rychlý. Prakticky se jedná o cache.
PosgreSQL — je nástupce MySQL, jeho hlavní výhodou je velká rychlost a bezpečnost a hlavně, vše je v objektu (prostě “krabičky :D).

Jelikož server musí jít s dobou, musí jít i vše ostatní. Na rok 2018 je proto jedním z hlavních plánů přejít kompletně na Redis & PosgreSQL.

Vím, že jsem toho moc o této části nenapsal, avšak věřte že ono vysvětlit to, by bylo na samotný téma.

Hlavní MySQL + záložní

Jak jsem zmínil již dříve, MySQL je databáze ve které se ukládají data — statistiky, ip adresy, práva atd. Jedná se opravdu stovky až sta miliony dat řazených v tabulkách.

Na serveru máme mnoho MySQL databází avšak nejdůležitější je ta Hlavní, logicky když je hlavní. Ta je šifrovaná od hlavy až k patě. Veškeré připojení jak je zvykem kontrolováno a šifrováno speciálnímu SSL klíči. Samotná správa přes panel, je také samozřejmě šifrována. Ovšem je zde ještě něco extra, a to to záložní. Říkáš si, proč máme záložní?

Nu pro takto velký server jako je CraftMania.cz je důležité mít data vždy dostupné. Před několika měsíci několikrát denně vypadávala MySQL, problém nastává né potom ale hned. Na MySQL je napojený celý server… opět od hlavy až k patě. Cokoliv na co si pomyslíš, se tam ukládá, načítá a opět ukládá. Je tedy nemyslitelné mít na tak důležitém serveru výpadek delší jak 2 hodiny natož přijít o všechna data. Proto existuje záložní MySQL, do který nemá nikdo přístup. Jedná se o speciální server, který zrcadlí všechna data z Hlavní MySQL na svůj disk. Prakticky je to doslovný clon dat.

Co to znamená? Znamená to to, že když bude nedej bože nějaký problém na Hlavním serveru, všechno připojení se přepojí na záložní a server může dál v pohodě pokračovat a ztráta dat je maximálně posledních 30 minut.

Statistics

Vše máš, vše funguje ale najednou výpadek, najednou problém a co víš? Nic…

Statistický server slouží ke svěru dat zatížení, konektivity, procesy, výpadkům a jiným mnoha problémům, co se mohou naskytnout a nejsou zcela tak zřejmé.

Nejdůležitější věcí je samostatnost v tomto procesu, nikdo zde nemůže kontrolovat (pokud by to neměl na práci) 24 hodin denně několik až desítky serverů. Od toho je právě statistiky, nastane-li problém oznámí nám to v podobě mailu nebo oznámením na Discord.

Mezi naše největší statistický data patří Net-Data, jedná se o stránku, která sbírá vše na co pomyslíš. Obsahuje přes 900 grafů všech typů, je až nemyslitelné to popisovat. No podívej se sám na jeden z našich serverů…

1_ez9yWBjIjl1fKP--LMF70Q1_oH9J6DR8Ms_xlBGcj_oTpA

API

API je jedna z nejočekávanějších věcí jak ze strany hráčů tak i AT. Jedná se o server, který na základně požadavku, který mu pošleš (a s přiděleným klíčem) ti vypíše statistiky hráčů, serverů. Již v minulosti se na něj dotazovalo mnoho lidí, jelikož chtěli udělat bannery s statistikami, online ukazatele a jiné zajímavé věci. No… tento server sice ještě není (je v těžkém vývoji). Avšak již patří do naší infrastruktůry, jelikož již má svůj server.

Status

Pro takto velký server je status a zpětná vazba k hráčům velmi důležitá. Jak jsem již mnohokrát popisoval, né vždy všechno funguje jak má. Ač se můžeš snažit sebe víc, když něco jeden den funguje, druhý den již nemusí. Mohou vzniknout nové a nové problémy. Samozřejmě, když nastanou tyto problémy je potřeba je odstranit ale také to oznámit hráčům. Od toho slouží náše Status page. Každý hráč na ní najde každý výpadek, byl na serveru a pokud nějaký je, tak aktuální informace a také informace o plánovaných údržbách.

Třešničkou na dortu je možnosti přihlásit se mailem, takže pokud nastane na serveru výpadek, nebo v nejhorší variantě nepůjde ani web. Vše bude na statusu a na tvém mailu.

1_IQfdM9Q7tI01p33QT0my4g1_Mfjyhf3Ty_t-c9wAaEdm5w

Panel

No, když jsme na vlastním, tak se přece nějak musí ovládat servery. Od toho slouží již zmíněný v první části “Pterodactyl Panel”. Jedná se o jeden z nejlepších panelů pro Minecraft/CS/TS/Terriarii a xx dalších serverů.

Základem je Docker (vysvětleno v 1. části), který je zřejmě jednou z nejvíc úžasných věcí na novém serveru. Opravdu je vše znatelně rychlejší, jak vytváření serverů tak správa. Když se umí, tak se umí!

1_mDhf45t6TLDFcdiGe03UCQ1_l8lpmPSx1pd6atTDBiiUGQ

Servery

Dál nám už zbývá to, co server dělá serverem, samotné servery. Minecraft servery a v budoucnu něco nového. Ovšem víme, že bez MC by nebyla CM.

Závěrem

Byl to náročný (skoro) půl rok, plný změn, předělávek a znova změn. Jsem rád, že CraftMania.cz se konečně může plnohodnotně pyšnit, že je na “vlastních” a nic ji již nemůže omezovat.

Sice zde byli lidi, co si ze mě dělali srandu, že by tohle všechno dokázali za jeden den “převést” a změnit, ovšem já ne. Já to udělal v klidu, pomalu a vyplatilo se to. Nic se nemá uspěchávat…

Do budoucna, se každý hráč může opravdu těšit na velké věci, teď teprve ostatní poznají, co vše se skrývá ve slovech CM.

Děkuji všem, co si toto a předešlé dva díly přečetli. Věřím, že jste se něco určitě přiučili a nezoufejte, brzo bude zase něco nového. :)