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 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.
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.