Fórum Root.cz

Hlavní témata => Server => Téma založeno: Xii Kus 28. 11. 2022, 02:50:00

Název: Virtualizace desítek systémů
Přispěvatel: Xii Kus 28. 11. 2022, 02:50:00
Rad bych s komunitou zkonzultovat tema, jak virtualizovat desitky (50-150 instanci) shodnych ale plne izolovanych systemu.
Idea je takova, ze by se bootoval (ze site, ze sdileneho uloziste, ...) nejaky jednotny (centralne udrzovany a upravovany) image a kazda instance by pouzila nejaky rozlisujici prvek (dynamicky pridelenou IP adresu nebo jakykoliv dostupny identifikator, pripadne nejakou jednoduchou externi ridici sluzbu) k rozliseni toho, co ma delat.

Rad bych efektivne dynamicky sdilel zdroje hardware, kdy kazda instance potrebuje cca 5GB diskoveho prostoru (ale neperzistentniho), 2GB RAM a nejakou neprilis velkou cast CPU vykonu, ale nepotrebuje tyto zdroje nutne staticky rezervovane.

Chceme se drzet co nejniz k hardware a nelze pouzivat nastroje typu qemu, sandboxovaci reseni, vysokourovnovou virtualizaci. Idealni by bylo, aby system uvnitr nemel zadnou moznost detekovat, ze je virtualizovan nebo tuto moznost alespon minimalizovat.

Uvazujeme o XEN para-virtualizaci, ale rad bych si poslechnul napady, jestli neexistuje nejake vhodnejsi reseni.
Naklady na provoz nejsou primarni kriterium. Podstatna je kvalita/stabilita a minimalizace naroku na spravu.
Diky za nazory
Název: Re:virtualizace desitek systemu
Přispěvatel: alex6bbc 28. 11. 2022, 04:17:56
cely system provozujete jen sam pro sebe, tak proc potrebujete virtualizovat?
virtualizace ma smysl, kdyz mate ruzne zakazniky na svych masinach.
Název: Re:virtualizace desitek systemu
Přispěvatel: Petr Branik 28. 11. 2022, 04:23:54
cely system provozujete jen sam pro sebe, tak proc potrebujete virtualizovat?
virtualizace ma smysl, kdyz mate ruzne zakazniky na svych masinach.

Virtualizaci je mozne pouzit treba k uspore nakladu kdy nemate 150 fyzickych serveru ale treba dva.

Název: Re:virtualizace desitek systemu
Přispěvatel: Petr Branik 28. 11. 2022, 04:26:18
Proc neni mozne pouzit normalni hypervizor typu jako vmware? Nejaky specificky hw? Umite poskytnout trochu vice informaci k ucelu pouziti tech systemu?
Název: Re:virtualizace desitek systemu
Přispěvatel: Xii Kus 28. 11. 2022, 04:36:19
Proc neni mozne pouzit normalni hypervizor typu jako vmware? Nejaky specificky hw? Umite poskytnout trochu vice informaci k ucelu pouziti tech systemu?
hardware si mohu vybrat

pouzit vmware mozne je, ale nevim v cem je "normalnejsi" nez XEN a proc by to melo byt efektivnejsi

navic vmware je asi pomerne dobre detekovatelny z hostovaneho systemu (napr. se to dalo/da poznat z graficke karty apod.)
proto uvazujeme smerem k necemu, co ma bliz k hardware

vmware je taky o dost vetsi "klikacka" a v danem mnozstvi guest systemu potrebujeme maximalni moznost to automatizovat

ucelem je obecne vzato potreba bezet paralelne stary, neupravitelny a velmi specificky software, ktery jednak neni technicky pripraven na beh vice instanci v ramci jednoho systemu a dvak se tomu i castecne brani - verim, ze to ale neni podstatne pro navrh reseni, zajima me ciste navrh, jak to nejlepe virtualizovat
Název: Re:virtualizace desitek systemu
Přispěvatel: Xii Kus 28. 11. 2022, 04:38:11
cely system provozujete jen sam pro sebe, tak proc potrebujete virtualizovat?
virtualizace ma smysl, kdyz mate ruzne zakazniky na svych masinach.
potrebuju to automatizovane a efektivne spravovat

osobne nevidim zpusob, jak provozovat desitky kusu hardwaru z mnoha praktickych duvodu, nemluve o nakladech
Název: Re:virtualizace desitek systemu
Přispěvatel: alex6bbc 28. 11. 2022, 04:43:00
cely system provozujete jen sam pro sebe, tak proc potrebujete virtualizovat?
virtualizace ma smysl, kdyz mate ruzne zakazniky na svych masinach.

Virtualizaci je mozne pouzit treba k uspore nakladu kdy nemate 150 fyzickych serveru ale treba dva.

i na dvou serverech muzete spoustet hafo procesu, proc by mely byt odizolovane, kdyz jsou vsecky procesy vase?!

aha ted jsem si precetl o specificnosti software. a nestacil by chroot?
Název: Re:virtualizace desitek systemu
Přispěvatel: Xii Kus 28. 11. 2022, 04:46:19
aha ted jsem si precetl o specificnosti software. a nestacil by chroot?
nestacil
Název: Re:virtualizace desitek systemu
Přispěvatel: alex6bbc 28. 11. 2022, 04:50:45
docker?
Název: Re:virtualizace desitek systemu
Přispěvatel: ldj 28. 11. 2022, 07:21:40
Celkem zajimave reseni muze byt i pomoci Portable Services, ktere uz nejakou dobu podporuje systemd.
Název: Re:virtualizace desitek systemu
Přispěvatel: honzako 28. 11. 2022, 08:19:58
Asi by bylo dobré upřesnit o co konkrétně ti jde.
To je nějaké sdílení ve škole?
A nebo chceš ušetřit licenční poplatky za software?
Jaký host OS chceš virtualizovat, a aplikace?
Budeš používat "vysokou dostupnost", tzn. nějaké live migrace atd?
A jaký máš reálný rozpočet?
Název: Re:virtualizace desitek systemu
Přispěvatel: Filip Jirsák 28. 11. 2022, 09:35:55
Předpokládám, že to chcete migrovat bez nějakých výraznějších zásahů, takže chcete plnohodnotné virtuální stroje a ne jen kontejnery.

Pro vytvoření virtuálních strojů použijte nějaký nástroj pro orchestraci – Terraform, Ansible, Puppet…

Pro rozlišení jednotlivých instancí použijte cloud-init (https://cloudinit.readthedocs.io/en/latest/) – je to standardní řešení, nebudete muset vymýšlet a ručně nějakou konfiguraci podle IP adres a podobně.

Vytvoření 150 obdobných virtuálních strojů není žádný neobvyklý požadavek, nekliká se to ručně, jsou na to nástroje (viz výše).
Název: Re:Virtualizace desítek systémů
Přispěvatel: Jose D 28. 11. 2022, 12:33:37
jak virtualizovat desitky (50-150 instanci) shodnych ale plne izolovanych systemu.

Ovládání přes API má dneska jak vmware, proxmox tak libvirt, třeba ansible oproti vmware jsem psal letos na jaře a paráda.

Co je to těžký a specifický na tvým tasku je zjistit, která virtualizace projde z hlediska toho software co chceš mít uvnitř..  A to ti nikdo nedokážeme poradit, protože ten soft neznáme.

Takže jako další krok bych zkusil rozjet ten soft na free esxi, na proxmoxím kvm, na proxmoxím LXC, docker... zjistit konfiguraci virtuálního hardware, která na tom bude šlapat, a pak si o tom něco myslet a kouknout na nacenění supportu v úrovni, kterou potřebuješ..

Napsat orchestraci okolo pak taky chvíli zabere, ale to už je něco, co už před tebou řešilo XX lidí..
Název: Re:Virtualizace desítek systémů
Přispěvatel: Xii Kus 28. 11. 2022, 16:45:49
diky vsem za hinty vyse - probehnu to

jeste se jen zeptam, jestli je tu nekdo, kdo ma silny nazor nebo praktickou zkusenost pro porovnani ruznych virtualizacnich reseni s ohledem na to, jak moc (ne)ma hostovany system moznost poznat, ze je virtualizovan (napr. osahavanim virtualizovaneho/proxovaneho hardware, inspekci prostredi co do toolu pro sdileni periferii a obecne pro zlepseni user experience pri praci ve VM, ktere jsou asi typickym zpusobem jak detekovat sebevirtualizaci)

diky
Název: Re:Virtualizace desítek systémů
Přispěvatel: LarryLin 28. 11. 2022, 17:29:44
Rad bych efektivne dynamicky sdilel zdroje hardware, kdy kazda instance potrebuje cca 5GB diskoveho prostoru (ale neperzistentniho), 2GB RAM a nejakou neprilis velkou cast CPU vykonu, ale nepotrebuje tyto zdroje nutne staticky rezervovane.
Sdílet diskový prostor by šlo jednoduše tím, že by všechny virtuálky používaly jeden disk přes  NSF, Sambu nebo nějaký cloud.  Řešení je více. Co se týká RAM, tak tady máš pro inspiraci ballooning (https://pve.proxmox.com/wiki/Dynamic_Memory_Management) nebo memory hot plug/unplug (https://pve.proxmox.com/wiki/Hotplug_(qemu_disk,nic,cpu,memory)#Memory_Hotplug). Tady je Detailnější popis příkazů pro memory hot plug/unplug pro libvirt. (https://www.unixarena.com/2015/12/linux-kvm-how-to-add-remove-memory-to-guest-on-fly.html/)

Chceme se drzet co nejniz k hardware a nelze pouzivat nastroje typu qemu ... Uvazujeme o XEN para-virtualizaci
Qemu má také paravirtualizované ovladače (virtio).

Idealni by bylo, aby system uvnitr nemel zadnou moznost detekovat, ze je virtualizovan nebo tuto moznost alespon minimalizovat.
Obávám se, že s para-virtuálizací možnost detekce zvýšíš.

navic vmware je asi pomerne dobre detekovatelny z hostovaneho systemu (napr. se to dalo/da poznat z graficke karty apod.)
proto uvazujeme smerem k necemu, co ma bliz k hardware
I u XENu o kterém uvažuješ určitě půjde z grafické karty poznat, že OS běží uvnitř virtuálky. Aby to nešlo poznat z grafické karty, tak bys musel fyzickou grafickou kartu předat (pci-passthrough (https://wiki.archlinux.org/title/PCI_passthrough_via_OVMF)) nebo sdílet (Intel GVT-g, SR-IOV), NVIDIA (Nvidia VGPU, SR-IOV) a AMD (AMD SR-IOV), více info (https://wiki.archlinux.org/title/QEMU/Guest_graphics_acceleration). Pro 50-150 VM dost nerálné = drahé. Pokud budeš používat cokoliv jíného (tzn. virtuální GPU), tak půjde zjistit, že OS běží uvnitř VM. Jedině, že bys přesně věděl z jakých informací se daná aplikace dozvěděla, že běží uvnitř VM a ty informace bys jí potom podstrčil falešné (kdyby si třeba zjišťovala informace z dmidecode (https://linux.die.net/man/8/dmidecode), tak tam (např. u Qemu) není problém dmi informace podstrčit.

jeste se jen zeptam, jestli je tu nekdo, kdo ma silny nazor nebo praktickou zkusenost pro porovnani ruznych virtualizacnich reseni s ohledem na to, jak moc (ne)ma hostovany system moznost poznat, ze je virtualizovan (napr. osahavanim virtualizovaneho/proxovaneho hardware, inspekci prostredi co do toolu pro sdileni periferii a obecne pro zlepseni user experience pri praci ve VM, ktere jsou asi typickym zpusobem jak detekovat sebevirtualizaci)
Např. aplikace které dodává výrobce základní desky si zjišťují na jaké desce běží. Kdysi jsem se snažil takovou aplikaci spustit ve VM tím, že jsem jí podstrkoval různé falešné informace o základní desce, ale bez úspěchu. Nebylo to nic důležitého, takže jsem tomu nevěnoval čas. Je to v podstatě vytváření cracku - nejdříve musíš zjistit podle čeho si daná aplikace ověřuje licenci (nebo to že běží uvnitř VM) a na základě toho uděláš crack, který jí podstrčí ony konkrétní falešné informace.
Název: Re:Virtualizace desítek systémů
Přispěvatel: vpn22 28. 11. 2022, 19:39:26
LXC?
Název: Re:Virtualizace desítek systémů
Přispěvatel: Petr Branik 28. 11. 2022, 20:01:29
A neni snadnejsi proste jeden z tech serveru vzit a strcit ho do deseti ruznych virtualizacnich reseni a podivat se kde bude s tim nejmin prace? Zatim mam dojem ze vsichni varime jenom z vody. Detekovat virtualizaci umis kazdou, otazka je jak to ta aplikace bezici na jednom z tech 150 serveru dela.
Název: Re:Virtualizace desítek systémů
Přispěvatel: _Jenda 29. 11. 2022, 00:45:30
Chceme se drzet co nejniz k hardware a nelze pouzivat nastroje typu qemu, sandboxovaci reseni, vysokourovnovou virtualizaci. Idealni by bylo, aby system uvnitr nemel zadnou moznost detekovat, ze je virtualizovan nebo tuto moznost alespon minimalizovat.

Uvazujeme o XEN para-virtualizaci
Vždyť právě para virtualizace znamená, že (z důvodu vyššího výkonu) si musí virtualizovaný systém moc dobře uvědomovat, že běží ve virtuálu, a aktivně spolupracovat. Naopak v Qemu lze poměrně dobře identifikaci kazit, takže lidi rozjeli třeba MacOS X, proprietární nVidie atd. Samozřejmě záleží, jak moc se daná aplikace snaží (pro začátek jestli je userspace - to půjde snad ošálit snadno - nebo používá nějaké kernelové metody co velmi podrobně zkoumají HW - to asi nepůjde, leda ji pak standardně cracknout).

Na obrazy disků pak potřebuješ nějaký "thin provisioning". Nejlepší by samozřejmě bylo NFS a nějaký overlay nad ním, ale pokud to aplikace detekuje, tak budeš muset emulovat blokové zařízení, což nevím jak se přesně dělá, ale Qcow2 snad umí jakoby-snapshoty, případně samodomo bastl nad NBD (asi bude pomalý a nestabilní) nebo FUSE, nebo zagooglit jak se tohle dělá.
Název: Re:Virtualizace desítek systémů
Přispěvatel: _Tomáš_ 29. 11. 2022, 00:50:27
systemd a service template. Oddělení od systému je solidní, instance můžeš tvořit dvěma příkazy, diskový prostor mohou mít oddělený, každá pod jiným uživatelem, detekce VM se tím vyřeší velice elegantně. Pokud ti nestačí oddělení přes systemd a linux cgroup/user/chroot a tak prosím napiš proč.

Vyhnout se detekci je velice obtížné, všechny běžné virtualizace a emulace totiž nechávají svůj HW nebo ovladače viditelné, stejně tak je možné je detekovat přes zpoždění času, lagy určitých instrukcí apod. a to dokonce z userspace. Pro začátek zkus si to testovat třeba přes https://github.com/a0rtega/pafish, většina malwarů, virů či jiných neplech s detekcí ale není příliš pečlivá, často třeba ve vmware stačí smbios.reflecthost=true.

Asi bys měl lépe popsat o co se snažíš, aby se dalo navrhnout možná řešení.
Název: Re:Virtualizace desítek systémů
Přispěvatel: RDa 29. 11. 2022, 01:38:25
Chybi jedina a ta nejpodstatnejsi informace - a to jaky SW bude bezet v te virtualizaci.

A pak druha - proc nejde ten soft nakonfigurovat na obsluhu X instanci v ramci jednoho OS (je to omezeni proprietarniho sw, nebo je omezeni tvoreno nejakym bezpecnostnim pravidlem, ze se treba nemaj mixovat data X klientu)