fbpx
vshosting~

Ať se nám to líbí nebo ne, žijeme v době cloudové. Zvykli jsme si na možnost snadno a prakticky okamžitě přidávat další výkon a zase ho odebírat, když zátěž opadne.

Na první pohled to vypadá krásně – platíme jenom za kapacitu, kterou skutečně potřebujeme a jenom tehdy, když ji potřebujeme. Neřešíme sklad náhradních dílů, nemusíme vstávat ve tři ráno k rozbitému serveru. Tato idylka má ale i své nevýhody, které nemusí být na první pohled zřejmé.

Přesunutím aplikací do cloudu jsme se vzdali možnosti si nastavit celé prostředí podle sebe, výkon musíme přidávat a odebírat po připravených “balíčcích”, naše data dáváme třetí straně s myšlenkou, že “přeci je nebudou zajímat data českého miniprojektu” a zavádíme si do aplikace zbytečný vendor lock-in přes různá SDK a API služeb cloudu. Vzdali jsme se architektonické svobody a výměnou za ni jsme dostali pohodlí.

Ale co když to jde i jinak? Co když můžeme vzít výhody cloudu a nasadit je na řešení, které budeme mít plně pod kontrolou? Co když si můžeme postavit náš vlastní, soukromý cloud?

Proxmox – virtualizační platforma

První krok je vždy ten nejtěžší a nejinak tomu bylo i tentokrát, když jsme ve vshosting~ vybírali platformu, na které řešení privátních cloudů postavíme. Do užšího výběru se dostalo několik softwarových balíků, z nichž jsme nakonec vybírali mezi dvěma kandidáty a to OpenNebulou a Proxmoxem. Oba tyto nástroje umožňují široké použití, nakonec jsme ale zvolili i s ohledem na jednoduchost administrace Proxmox.

Proxmox, private cloud

Proxmox sám o sobě je distribuce postavená na aktuálním Debianu s pár vylepšeními. Out-of-the-box podporuje KVM virtualizaci (plnohodnotné virtuální stroje) i LXC kontejnerizaci (linux-only kontejnery), vysokou dostupnost, clusterizaci, migraci virtuálů mezi nody, škálování za běhu virtuálního stroje a další funkce. To všechno zabalené v příjemném webovém rozhraní, CLI nebo REST API. Detailní popis funkcí naleznete na webu Proxmoxu.

Proxmox sám o sobě velmi dobře škáluje od jednoho nodu po několik desítek výpočetních nodů v clusteru (tvrdý limit je kolem 100 nodů v jednom clusteru). Po našich provozních zkušenostech jsme se ale rozhodli omezit velikost jednoho clusteru na 12 nodů. Ostatně větší nasazení je tak jako tak vhodnější rozdělit do menších samostatných clusterů, které mohou být samy o sobě velmi výkonné.

Spřáhnout do jednoho virtualizačního clusteru 12 strojů, kdy každý má v sobě 4 výkonné Xeon procesory s 12 fyzickými jádry (24 vláken) doplněné o 512 GB RAM, nabízí dostatečný výkon i pro největší projekty, které u vshosting~ provozujeme. Ale pokud chcete, umíme udělat i větší a šílenější setupy.

Lehké kontejnery i plnotučné virtuální stroje

Jak už jsem zmínil, Proxmox nabízí dva typy virtualizace – plnou virtualizaci pomocí KVM a kontejnerizaci s LXC. Výhodou KVM je plná emulace hardware, takže není problém do něj nainstalovat kromě Linuxu i MS Windows, Mikrotik RouterOS nebo Android (pokud máte licenci). Nevýhodou KVM je fakt, že nejsou žádné součásti systému sdílené s hypervisorem. Virtuální stroje v KVM jsou tedy paměťově náročnější.

Pokud chcete provozovat linuxové aplikace, vhodnou variantou je použití kontejnerizace LXC. Zde je kernel sdílen s hypervisorem, odpadá tedy nutnost počítat v kontejneru s pamětí pro jádro. Velkou nevýhodou kontejnerů je ale pouze částečná izolace prostředí a ne všechny aplikace si s nimi dovedou poradit. Například se nám v LXC nepovedlo rozjet GlusterFS server nebo NFS exporty.

Obě virtualizační technologie je možné v rámci clusteru libovolně kombinovat dle potřeby.

My šroubky, vy aplikaci

Privátní cloud nabízíme v managed režimu. To znamená, že my se staráme o všechno pod úroveň virtuálních strojů. Hardware, disky, síť, konektivita, elektřina, chlazení, ale i software hypervisorů jako takových – to všechno je naše starost, v tomto není rozdíl proti veřejným cloudům. V čem ale výrazný rozdíl je, to je výkon. Privátní Proxmox běží na fyzických strojích vyhrazených pouze pro konkrétní cluster, zákazník má k dispozici 100 % kapacity. Žádné sdílení prostředků, žádná agregace.

Privátní cloud od vshosting~

Zákazník si pak už výkon rozděluje mezi jednotlivé kontejnery a virtuální stroje, sám si vybírá, co na nich poběží za operační systém, aplikace, jejich konfiguraci.

Storage, firewall a další služby

V základním setupu se disky virtuálních strojů ukládají na disky přímo v serverech. Toto řešení je velmi výkonné ale neumožňuje live migrace virtuálních strojů mezi nody nebo restart VM na jiném nodu v případě jeho selhání.

Toto lze řešit pomocí síťového storage, který nabízíme pod názvem Cloud storage. V Proxmoxu jej uvidíte jako běžný storage dostupný napříč celým clusterem. Virtuální stroje a kontejnery, které mají své disky umístěny na tomto storage, je možné snadno bez výpadku migrovat mezi nody nebo je automaticky nastartovat na jiném stroji, pokud aktuální výpočetní node selže.

Kromě úložiště disků můžete Cloud storage využít i jako objektový storage kompatibilní s S3, o tom si ale povíme v jiném článku. Jako ke každé naší managed službě si můžete k privátnímu cloudu pořídit managed firewall Cisco ASA, DDoS Protect ochranu nebo až 10Gbps globální konektivitu.


Damir Špoljarič

Podívejme se blíže na to, co požadavek na horizontální škálování vlastně představuje a odkud pramení.

Hned na úvod je nutné říct, že horizontální škálování je dnes často vyžadováno primárně obchodně, technická stránka požadavků pro možnosti horizontálního škálování často pokulhává. V nejednom případě jde o požadavek, který by neměl být prioriotu pro provozovatele aplikace.

Horizontální vs. vertikální škálování

Škálování je buď vertikální nebo horizontální. Vertikální škálování tu s námi je mnoho let a zjednodušeně řečeno jde o navyšování výkonu daného serveru (ať už fyzického nebo virtuálního) nebo kontejneru. Je to nejsnazší způsob zajištění více výpočetních prostředků pro danou aplikaci.

Nevýhodou této metody je primárně její omezenost (výkon serveru nelze přidávat donekonečna). Tuto limitaci, alespoň v teoretické rovině, řeší horizontální škálování. To umožňuje paralelní přidávání nezávislých výpočetních kapacit a rozkládání zátěže mezi tyto kapacity – v ideálním případě donekonečna. Z pohledu škálování byznysu to zní skvěle. Ale…

U rozsáhlých aplikací s vizí obrovského růstu je horizontální škálování skutečně jediná možnost, jak zajistit maximální možnou škálovatelnost online aplikace. Nicméně některé služby je stále výhodnější škálovat vertikálně (například load balancery apod.). Bohužel dodnes stále některé platformy (typu AWS) nutí uživatele vybírat z předdefinovaných balíčků kombinací procesorů a pamětí. To považujeme ve vshosting~ za přežitek.

Cloudová platforma a hosting by měly být schopny se dynamicky přizpůsobit reálné potřebě konkrétních výpočetních prostředků každého klienta. Jinými slovy, pokaždé když klient potřebuje navýšit výkon pro svou aplikaci, měl mít možnost si jednoduše přidat x paměti a y procesorů bez nutnosti vždy znovu složitě zkoumat, který z nabízených „balíčků“ je pro něj ten nejvýhodnější.

Nástrahy horizontálního škálování: zkušenosti z praxe

Jak už jsme zmínili, v některých případech ani dynamická možnost vertikálního škálování nestačí a horizontální škálování se stává nezbytným. Ale vyplatí se opravdu důkladně zvážit, zda tomu tak právě ve Vašem případě skutečně je. Jakkoli je horizontálního škálování teoreticky atraktivní, v realitě naráží na řadu koncepčních nevýhod.

V první řadě horizontální škálování klade obrovské nároky na vývojáře, aby vytvářeli aplikace, které budou pro paralelní provoz a zpracovávání úloh připravené. Z praxe víme, že psaní takových aplikací je výrazně náročnější na znalosti, čas, testování (a tedy i o dost nákladnější).

Je také nutné vzít v potaz limity externích služeb, na které často narážíme. Typicky největší komplikace nastane například v případě, kdy aplikace pro provoz v paralelním režimu používá sdílený filesystem. Škálovatelnost je potom omezena pro celou aplikaci už z principu této několik desítek let staré technologie (vhodnou náhradou je například object storage). I cloudové platformy nebo infrastruktura postavená na distribuovaném řešení (například GlusterFS) dříve či později narazí na limity použité technologie, které se budou za provozu velmi špatně řešit.

Dalším problematickým aspektem bývají relační databáze, které také svým koncepčním pojetím nepočítají s tím, že je bude někdo clusterovat. Technologie v této oblasti výrazně pokročily, například skvělé zkušenosti máme s Galera Clusterem nad MariaDB, na kterém úspěšně provozujeme platformu Shoptet pro desítky tisíc e-shopů. Z tohoto pohledu jde o pokročilejší řešení, než které nabízí například Amazon s AWS Aurora.

AWS Aurora umožňuje horizontální škálování pouze pomocí tzv. „replicas“, což jsou read-only repliky jedné instance databáze. Jde tedy o velmi velmi osekané horizontální škálování, které navíc ztrácí v dnešní době smysl, neboť omezováním provozu z relační databáze (abychom udělali aplikaci více horizontálně škálovatelnou) se omezují zejména read operace na jejichž offloading se používají nástroje typu ElasticSearch. Tyto nástroje jsou naopak velmi dobře horizontálně škálovatelné, ale nejsou ze svého principu (princip ACID) určené k ukládání klíčových dat.

Read-only repliky jsou opět mechanismem starým desítky let, který nepovažujeme za technologii vhodnou pro horizontální škálování. Je tomu tak primárně z důvodu, že tato metoda nezajistí škálování 1:1 pro všechny druhy operací. Jiné možnosti AWS v případě SQL databází nenabízí.

Bezproblémové horizontální škálování díky vshosting~

Největší problém u moderních aplikací stavěných pro horizontální škálování vidíme v tom, že je pro jejich komplexnost velmi špatně predikovatelné, kde která část aplikace či komponenta narazí na jaký limit.

Ve vshosting~ asistujeme vývojářům našich klientů tak, aby jejich aplikace byla lépe a rychleji škálovatelná. Poradíme, jaké prvky v jejich aplikaci jsou či budou limitující pro další růst a připravíme individuální, robustní a plně škálovatelnou infrastrukturu bez kompromisů.

Nemá smysl prošlapávat tisickrát prošlapanou cestu, ve vshosting~ Vám díky našemu unikátnímu know-how poradíme na co se zaměřit při návrhu aplikací. Váš projekt připravíme pro globální expanzi i díky naší vlastní CDN, kterou již brzy budeme spouštět na třetím kontinentu (Asie).

Damir Špoljarič

CEO & Co-Founder


Během 17 let jsme provedli úspěšnou migrací stovky klientů. Pomůžeme i vám.

  1. Domluvte se na konzultaci

    Stačí nám zanechat kontakt. Obratem se vám ozveme.

  2. Bezplatný návrh řešení

    Nezávazně probereme, jak vám můžeme pomoct. Navrhneme řešení na míru.

  3. Profesionální realizace

    Připravíme vám prostředí pro bezproblémovou migraci dle společného návrhu.

Zanechte nám svůj e-mail nebo telefon




    Nebo nás kontaktujte napřímo

    +420 246 035 835 V provozu 24/7
    konzultace@vshosting.cz
    Zkopírovat
    Obratem se vám ozveme