Znalostní Báze

Informace o sdružení vpsFree.cz, návody a nejčastější dotazy.

Uživatelské nástroje

Nástroje pro tento web


navody:vps:vpsadminos

vpsAdminOS

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.

Migrace VPS z OpenVZ na vpsAdminOS

Přechod celé naší infrastruktury se všemi VPS na vpsAdminOS je rozdělen do několika fází:

  1. Vývoj vpsAdminOS do použitelné podoby
  2. Integrace s vpsAdminem
  3. Spuštění testovacího prostředí s vpsAdminOS (:!: zde se nacházíme :!:)
    1. Testování, opravy chyb, doplnění chybějících funkcí, připrava na produkci
  4. Nové produkční nody používají vpsAdminOS, nové VPS lze vytvářet jen na nich
  5. Postupná migrace všech VPS z OpenVZ nodů na vpsAdminOS nody, jeden node po druhém
  6. Pohádky je konec

Co to znamená pro členy

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.

Projděte si také změny chování VPS a vpsAdminu.

Změny v chování VPS

Nastavení sítě

Linux kernel nemá nic jako venet z OpenVZ, takže jsme si museli pomoci jinak. Síťování je řešeno přes dvojici rozhraní veth: jeden na nodu a druhý ve VPS. IP adresy VPS jsou routovány přes spojovací síť, která je každému VPS přidělena.

Například, přidělená spojovací síť pro IPv4 je 10.100.10.0/30. Veth rozhraní na nodu bude mít adresu 10.100.10.1, veth rozhraní ve VPS pak 10.100.10.2. Veřejné IP adresy VPS jsou routovány přes 10.100.10.2, např. veřejná IPv4 1.2.3.4 by byla routována jako 1.2.3.4/32 via 10.100.10.2. Výchozí routa pro VPS je pak nastavena jako default via 10.100.10.1 src 1.2.3.4. Rozhraní na nodu se konfiguruje automaticky, ve VPS se pak automaticky generují konfigurační soubory, které váš init systém používá k nastavení sítě, takže nic řešit nemusíte. První adresa na síťovém rozhraní ve VPS je však adresa spojovací, nikoli veřejná, jako tomu bylo doposud. Pokud si konfiguraci sítě upravujete, musíte se tomuto nastavení přizpůsobit.

User namespaces

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.

User namespace podstatně ovlivňují sdílení dat mezi VPS a NASem. Aktuálně není možné připojit NAS do VPS běžící na vpsAdminOS tak, aby měl VPS k datům přístup. Řešit se to bude tak, že u každého NAS datasetu budete mít na výběr, jaké mapování UID/GID má používat. Data pak budou přistupná jen z VPS, které mají nastaveno příslušné mapování.

Obecné

Změny týkající se VPS nezávisle na distribuci:

  • /proc/cpuinfo a /proc/stat zobrazují všechny CPU, které má node k dispozici, využít však lze max 8 z nich (800% CPU)
  • /proc/stat u CPU aktuálně reportuje jen user (včetně system) a idle 1)
  • Nastavený swap se nezobrazuje v /proc/meminfo 2)
  • dmesg je zakázán, neboť není virtualizován

Debian/Ubuntu/Alpine

  • Pro nastavení sítě při startu už není potřeba mít nainstalovaný 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.
  • Pokud existuje adresář /etc/network/interfaces.d, jeho obsah je načten před /etc/network/interfaces.tail.

Změny chování vpsAdminu

  • Reinstalace VPS na vpsAdminOS nemaže subdatasety ani nevrací konfiguraci VPS do výchozího stavu, tzn. např. nastavení VPS features zůstavá zachováno.
  • V detailech VPS je možné změnit název síťového rozhraní, výchozí název zůstává venet0.

Testovací prostředí

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.

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.

V současné době není možné klonovat/swapovat produkční VPS s testovacími VPS na vpsAdminOS. Proces migrace VPS z OpenVZ na vpsAdminOS ještě není dořešen. Omezen je také přístup k NASu, viz user namespaces.

Podporované distribuce

  • Alpine 3.6, 3.7
  • Arch
  • CentOS 7.5
  • Debian 8, 9
  • Fedora 27, 28
  • Gentoo
  • NixOS
  • Ubuntu 16.04, 18.04

Ostatní distribuce

Pokud tvoje distribuce zatím není mezi podporovanými, můžeš nám pomoct ji zprovoznit, nebo nezbývá než počkat, až to za tebe udělá někdo jiný, viz otevřené požadavky.

Šablony distribucí se vytvářejí skripty ve vpsadminos-templates. Pokud tam tvá distribuce není, je potřeba ji zde přidat.

Dále je nutné vyřešit podporu dané distribuce ve vpsAdminOS tak, aby byl osctl schopen zvenku nastavovat síť a IP adresy. Stačí postupovat podle návodu. Je potřeba implementovat podporu jak pro bridged veth, tak routed veth, viz dokumentace vpsAdminOS a zdrojové kódy.

Features

Features lze zapínat/vypínat jednotlivě. Při jakékoliv změně dojde k restartu VPS.

  • Docker (experimental) - Povolí zkušební podporu pro Docker.
  • FUSE - „Filesystem in Userspace“ Povolí modul jádra, umožňující neprivilegovaným uživatelům vytvářet si vlastní souborové systémy.
  • KVM - „Kernel-based Virtual Machine“ Povolí použití KVM, pro HW podporu virtualizace.
  • LXC nesting - „Linux Containers“ Povolí vnořené kontejnery LXC.
  • PPP - „Point-to-Point Protocol“ Povolí protokol používaný pro propojeni dvou síti po telefonní, případně ISDN lince.
  • TUN/TAP - „TUN routing/TAP bridging“ Povolí vytváření virtuálních interface, které jsou pak bridgovány.

Doporučujeme nastavit jen features, které opravdu potřebujete.

Více o vpsAdminOS

Kam hlásit chyby a nápady

Podle vlastního uvážení:

navody/vps/vpsadminos.txt · Poslední úprava: 2018/07/11 08:03 autor: rene.la