Toto je starší verze dokumentu!
Protože OpenVZ už pomalu dosluhuje a nové distribuce jej nepodporují, museli jsme začít řešit přechod na nějakou novější virtualizační technologii. Linux kernel už sám o sobě kontejnery do jisté míry podporuje, takže jsme se rozhodli toho využít. Dále jsme potřebovali nějakou distribuci, kterou bychom použili na nodech místo Scientific Linux 6 s OpenVZ kernelem. Volba padla na NixOS, který umožňuje deklarativně definovat konfiguraci OS a služeb a pak jej opakovatelně sestavit. A protože máme specifické nároky, stavíme si nad NixOS vlastní distribuci.
vpsAdminOS je založen na
NixOS a not-os.
Je to live distribuce sloužící jako hypervizor pro provoz kontejnerů.
vpsAdminOS je funkčností srovnatelný s OpenVZ Legacy. Jako základ pro provoz VPS
(kontejnerů) slouží LXC, které spravujeme vlastní utilitou osctl
z vpsAdminOS. vpsAdminOS umožnuje propojení s vpsAdminem, naším administračním
rozhraním, nicmeně je plně použitelný i bez něj a měla by to být plnohodnotná
náhrada za OpenVZ Legacy, pokud jej někde používáte. Podporována je i
migrace kontejnerů
z OpenVZ Legacy na vpsAdminOS.
Přechod celé naší infrastruktury se všemi VPS na vpsAdminOS je rozdělen do několika fází:
Snažíme se, aby migrace na vpsAdminOS byla bezproblémová, tj. aby se jednoho dne VPS vypl na OpenVZ nodu a spustil na vpsAdminOS, aniž by člen něco musel řešit. Nicméně, záleží na tom, co ve VPS provozujete. Proto všem doporučujeme vyzkoušet si VPS nad vpsAdminOS v testovacím prostředí, abychom mohli případné nedostatky vyřešit a při následné migraci produkčních VPS se jim vyhnout.
VPS ve vpsAdminOS využívají user namespace, tzn. root ve VPS má UID 0, ale z pohledu hostitelského systému na nodu je to nějaké jiné číslo, např. 666000. Každý člen má pak přidělen svůj user namespace, což zvyšuje úroveň izolace – v případě nějaké chyby se útočník ani po úniku z kontejneru na node nedostane k datům jiných členů.
Každý člen má přidělen user namespace o velikosti 524288 uživatelských ID. Tzn. ve VPS můžete využít UID/GID od 0 do 524287. Všechny VPS daného člena jsou umístěny do tohoto user namespace. V budoucnu přibyde možnost si user namespace spravovat a nastavovat si vlastní mapování UID/GID, což umožní izolovat od sebe i VPS patřící jednomu členovi, případně vybrané UID/GID sdílet.
Změny týkající se VPS nezávisle na distribuci:
/proc/meminfo
2)ifconfig
z net-tools
, používá se ip
z iproute2
./etc/network/interfaces.{head,tail}
nejsou vkládány přímo do /etc/network/interfaces
, ale načteny přes source
, tzn. už neovlivňují podobu /etc/network/interfaces
tak jako s vzctl./etc/network/interfaces.d
, jeho obsah je načten před /etc/network/interfaces.tail
.venet0
.Aby si všichni členové mohli vyzkoušet, jak se VPS nad vpsAdminOS chová, k dispozicí je testovací prostředí, tzn. takový druhý playground node, na kterém si každý může vytvořit VPS. Ve formuláři na vytváření VPS stačí vybrat lokaci Staging a odškrtnout (zrušit) Keep platform.
Podmínky provozu jsou podobné jako pro playground VPS, akorát to může být trochu divočejší, tj. nehlášené výpadky, restarty pokud potřebujeme něco aktualizovat. Každý má k dispozici 8 CPU, 4 GB RAM, 120 GB disku, 4 veřejné IPv4 adresy, 32 IPv6 /64 adres a tyto prostředky lze rozdělit mezi 4 VPS.
Vytvořit můžete buď nové VPS, nebo si vyzkoušet naklonovat produkční VPS. Při klonování dojde k odstranění mountů, místo kterých je nutné použít exporty.
Features lze zapínat/vypínat jednotlivě. Při jakékoliv změně dojde k restartu VPS.
Doporučujeme nastavit jen features, které opravdu potřebujete.
Podle vlastního uvážení:
proc_meminfo_read()
z LXCFS: https://github.com/lxc/lxcfs/blob/master/bindings.c#L3174