Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.
Obě strany předchozí revizePředchozí verzeNásledující verze | Předchozí verzePoslední revizeObě strany příští revize | ||
navody:vps:kvm [2016/12/02 20:56] – [KVM na Debian 8] spacex | navody:vps:kvm [2023/10/20 11:03] – rene.la | ||
---|---|---|---|
Řádek 1: | Řádek 1: | ||
- | ====== Používání KVM a na vpsFree.cz | + | < |
+ | ====== Používání KVM na vpsFree.cz | ||
+ | VPS jsou [[informace: | ||
+ | mezi všemi VPS. Pokud z nějakého důvodu potřebuješ vlastní kernel, nebo chceš provozovat jiný operační | ||
+ | systém, můžeš si ve VPS spouštět vlastní plnohodnotné virtuály pomocí QEMU/KVM. | ||
- | Tato info stránka obsahuje návody pro zprovoznění KVM na Alpine Linux 3.4+, CentOS 7 a Debian 8. | + | ===== Konfigurace ===== |
+ | Nejprve je potřeba ve vpsAdminu v detailu VPS zapnout následující vlastnosti: | ||
- | Nejprve je potřeba ve vpsAdminu, v detailu vaší VPS, zapnout následující vlastnosti: | + | |
- | + | ||
- | | + | |
- | * iptables – povolí použití iptables, které jsou potřeba pro nastavení IP maškarády, | + | |
* KVM – povolí použití KVM (pro HW podporu virtualizace). | * KVM – povolí použití KVM (pro HW podporu virtualizace). | ||
- | Na vpsFree není jiná možnost než mít disky pro KVM virtuály v souborech (images). Doporučujeme k tomu vytvořit nový (sub)dataset, | + | Na vpsFree není jiná možnost než mít disky pro KVM virtuály v souborech (images). Doporučujeme k tomu vytvořit nový (sub)dataset, |
+ | ===== libvirt ===== | ||
+ | Virtuály můžeš spravovat pomocí [[https:// | ||
+ | a připojit se k němu přes [[https:// | ||
+ | |||
+ | ===== Mount dataset export z NAS serveru pro QEMU/KVM ===== | ||
+ | Pokud chceš používat v QEMU/KVM připojený dataset export z NAS serveru, například pro mount ISO obrazu CD pro boot systému a dostaneš toto hlášení "// | ||
+ | |||
+ | Například pokud používáš pro mount do systému fstab: | ||
+ | |||
+ | // | ||
+ | |||
+ | Nově použiješ mount příkaz takto: | ||
+ | |||
+ | // | ||
+ | |||
+ | (**// | ||
===== KVM na Alpine Linuxu | ===== KVM na Alpine Linuxu | ||
+ | |||
+ | Připravu hypervizoru lze provést automatizovaně pomocí [[http:// | ||
+ | |||
+ | [[https:// | ||
+ | * [[navody: | ||
+ | * [[navody: | ||
+ | |||
+ | ==== Instalace balíčků a konfigurace hypervizoru ==== | ||
Nainstalujte potřebné balíčky (ip6tables je volitelný): | Nainstalujte potřebné balíčky (ip6tables je volitelný): | ||
Řádek 19: | Řádek 45: | ||
apk update | apk update | ||
apk add qemu-system-x86_64 qemu-openrc qemu-img bridge iptables ip6tables | apk add qemu-system-x86_64 qemu-openrc qemu-img bridge iptables ip6tables | ||
+ | </ | ||
+ | |||
+ | Nastavte potřebná práva pro přístup ke KVM a TUN (do skupin //kvm// a //netdev// by měl patřit uživatel //qemu//, pod kterým bude běžet vytvořený virtuál): | ||
+ | |||
+ | <code shell> | ||
+ | chown :kvm /dev/kvm | ||
+ | chmod g+rw /dev/kvm | ||
+ | chown :netdev / | ||
+ | chmod g+rw / | ||
</ | </ | ||
Řádek 63: | Řádek 98: | ||
<code shell> | <code shell> | ||
mkdir -p / | mkdir -p / | ||
- | qemu-img create -f raw / | + | qemu-img create -f raw / |
- | chown qemu:qemu / | + | chown qemu:qemu / |
- | chmod 0600 / | + | chmod 0600 / |
</ | </ | ||
Řádek 72: | Řádek 107: | ||
<code shell> | <code shell> | ||
cd /etc/conf.d | cd /etc/conf.d | ||
- | cp qemu qemu.jarvis | + | cp qemu qemu.myvirt |
- | vi qemu.jarvis | + | vi qemu.myvirt |
</ | </ | ||
Řádek 98: | Řádek 133: | ||
</ | </ | ||
+ | <note important> | ||
+ | Pokud máte problémy s tím, že při větším provozu na síťové kartě spadne ve virtuálu sít, zkuste použít driver e1000 místo výchozího virtio-net-pci: | ||
+ | |||
+ | <code shell> | ||
+ | |||
+ | stabilitu je možno otestovat iperf-em, na testovanem stroji: | ||
+ | |||
+ | <code shell> | ||
+ | |||
+ | na hostiteli pak: | ||
+ | <code shell> | ||
+ | iperf -c 172.17.1.X -P 20 | ||
+ | </ | ||
+ | </ | ||
==== Nastavení iptables ==== | ==== Nastavení iptables ==== | ||
Řádek 107: | Řádek 156: | ||
<code shell> | <code shell> | ||
rmdir / | rmdir / | ||
- | wget -O / | + | wget -O / |
</ | </ | ||
Řádek 141: | Řádek 190: | ||
</ | </ | ||
- | |||
- | ===== KVM na CentOS 7 ===== | ||
- | |||
- | <note warning> | ||
- | Tento návod platí pouze pro CentOS 7.1. Na CentOS 7.2 aktuálně nefunguje interní síť mezi VPS a VM. Použijte buď CentOS 7.1 nebo Debian 8, než bude tento problém vyřešen. | ||
- | </ | ||
- | |||
- | KVM používám prostřednictvím libvirt na aktualizovaném CentOS 7. | ||
- | |||
- | Doporučuju CentOS 7 plně aktualizovat, | ||
- | |||
- | <code shell> | ||
- | yum group install virtualization-host-environment | ||
- | yum install virt-manager xauth | ||
- | systemctl enable libvirtd | ||
- | systemctl disable firewalld | ||
- | reboot | ||
- | </ | ||
- | |||
- | ==== Vytvoření virtuálu pomocí virt-manager na straně serveru ==== | ||
- | |||
- | Motivace: Když pracujete na pomalém připojení (což O2 ADSL na vsi bezpochyby je), potřebujete minimalizovat datové toky přes váš pracovní počítač. Lokální virt-manager by stahoval minimálně kernel a initramdisk po relativně pomalém downloadu a typicky po ukrutně pomalém uploadu nahrával na hostitelský kontejner. | ||
- | |||
- | <code shell> | ||
- | ssh root@your-host-name -Y virt-manager | ||
- | </ | ||
- | |||
- | Na vzdáleně spuštěné instanci lze zahájit instalaci, ale nefunguje mi zobrazení instalátoru pomocí výchozího spice. Protože mi přijde krajně nepraktické přepínat libvirt na VNC, takže doporučuju pro instalaci a další používání spustit virt-manager lokálně a přidat cestu k serveru. | ||
- | |||
- | |||
- | ===== KVM na Debian 8 ===== | ||
- | |||
- | Tento návod je prováděn na Debianu 8. Měl by být plně funkční také na CentOS (s jinými příkazy viz. výše). Pokoušel jsem se KVM rozchodit i na Ubuntu 14.04, ale tam bohužel marně. | ||
- | |||
- | Pokud používáte Windows, je potřeba nainstalovat a zapnout XMing (pokud budete chtít minimálně virtuál nainstalovat a nastavit skrz grafické rozhraní jako já). Poté zapneme putty (nezapomeňte si zapnout XMing a zaškrtnout „Enable X11 forwarding“) a můžeme kouzlit. Stačí také přes "apt install xrdp" na server nainstalovat podporu remote desktop a od té doby už se z Windows připojovat nativním klientem Remote desktop (mstsc). | ||
- | |||
- | Začneme klasikou: | ||
- | |||
- | <code shell> | ||
- | apt-get update | ||
- | apt-get upgrade | ||
- | </ | ||
- | |||
- | Poté nainstalujeme libvirt knihovnu: | ||
- | <code shell> | ||
- | apt-get install qemu-kvm libvirt-bin | ||
- | apt-get install virt-manager | ||
- | </ | ||
- | Celkově mají tyto dva balíčky asi 320 MB. Dále je potřeba si někam na disk stáhnout image distribuce, kterou chcete do virtuálu nainstalovat. Já jsem instaloval Ubuntu server 14.04. Vyberte si adresář, do kterého chcete image stáhnout, a pomocí '' | ||
- | <code shell> | ||
- | cd /home | ||
- | wget http:// | ||
- | </ | ||
- | Zapněte virt-managera. | ||
- | <code shell> | ||
- | virt-manager | ||
- | </ | ||
- | Díky XMingu můžete teď na dálku z Windows nastavit a spustit instalaci virtuálního serveru uvnitř své VPS. Upozorňuji, | ||
- | < | ||
- | virsh -c qemu:/// | ||
- | virsh -c qemu:/// | ||
- | virsh -c qemu:/// | ||
- | virsh -c qemu:/// | ||
- | </ | ||
- | |||
- | ==== Konfigurace sítě KVM na Debian 8: ==== | ||
- | === Routování veřejné IPv4 do „KVM virtuálu === | ||
- | |||
- | Máme veřejnou IPv4 adresu a tu přidělíme „KVM virtuálu“ a síťový provoz plně směrujeme pro danou veřejnou IPv4 adresu z „VPS“ přes privátní / lokální IPv4 na danou veřejnou IPv4 adresu „KVM virtuálu“. Kromě portu 1022, aby byla „VPS“ přes SSH na IPv4 i nadále dostupná. „KVM virtuál“ má plnou konektivitu z / do internetu přes IPv4 (kromě portu 1022 na IPv4). | ||
- | |||
- | „VPS“ má pouze privátní / lokální IPv4 a je z pohledu internetu za NATem v rámci sítě vpsfree.cz a není z internetu dostupná, kromě výše zmíněného portu 1022 pro přístup na SSH dané „VPS“. Pokud má „VPS“ privátní IPv4 (rozsah v rámci sítě vpsfree.cz), | ||
- | |||
- | Nejprve je potřeba ve vpsAdminu, v detailu vaší VPS, zapnout vlastnost: TUN/TAP. | ||
- | |||
- | Dále nakonfigurujte bridge pro „KVM virtuál“ na straně „VPS“. Jelikož OpenVZ přepisuje soubor / | ||
- | Vytvořte tedy soubor / | ||
- | <code shell> | ||
- | auto vnet0 | ||
- | iface vnet0 inet static | ||
- | address 172.16.20.12 | ||
- | netmask 255.255.255.255 | ||
- | mtu 1280 | ||
- | bridge_ports venet0:0 | ||
- | bridge_stp on | ||
- | bridge_fd 0.0 | ||
- | dad-attempts 0 | ||
- | accept_ra 0 | ||
- | </ | ||
- | |||
- | Vzhledem k tomu že OpenVZ již po této úpravě nevloží konfiguraci pro veřejnou IPv4 adresu, vložíme ještě na konec souboru dočasně konfiguraci pro veřejnou IPv4 adresu (tu budeme v průběhu návodu mazat, takže na to pamatovat): | ||
- | <code shell> | ||
- | auto venet0:0 | ||
- | iface venet0:0 inet static | ||
- | address 185.8.164.43 | ||
- | netmask 255.255.255.255 | ||
- | </ | ||
- | |||
- | Soubor / | ||
- | |||
- | Vytvoříme „KVM virtuál“ a nakonfigurujeme síťové rozhraní směřující na bridge vnet0 (důležité vybrat bridge vnet0) dané „VPS“, s těmito parametry (privátní IPv4 adresu „KVM virtuálu“ zvolíte z aktuální konfigurace ve vpsAdminu, lokální IPv4 adresu „KVM virtuálu“ si samozřejmě můžete zvolit libovolnou z lokálního rozsahu. Já jsem použil privátní IPv4 adresu pro „KVM virtuál“ v rámci sítě vpsfree.cz, kde brána je IPv4 pro „VPS“ tedy OpenVZ kontejner): | ||
- | <code shell> | ||
- | IP adresa: 172.16.20.13 | ||
- | Maska sítě: | ||
- | Brána: | ||
- | DNS servery: | ||
- | </ | ||
- | |||
- | A k danému rozhraní ještě přidáme veřejnou IPv4 adresu: | ||
- | <code shell> | ||
- | IP adresa: | ||
- | Maska sítě: | ||
- | </ | ||
- | |||
- | Vrátíme se ke konfiguraci souboru / | ||
- | <code shell> | ||
- | < | ||
- | iface venet0:0 inet static | ||
- | address 185.8.164.43 | ||
- | netmask 255.255.255.255</ | ||
- | </ | ||
- | |||
- | Místo to do souboru / | ||
- | <code shell> | ||
- | up ip route add 172.16.20.0/ | ||
- | down ip route del 172.16.20.0/ | ||
- | </ | ||
- | |||
- | Přidáme routování pro privátní / lokální IPv4 adresu „KVM virtuálu“ na daný bridge tedy vnet0 a routování pro veřejnou IPv4 adresu „KVM virtuálu“ na daný bridge vnet0. Do souboru / | ||
- | <code shell> | ||
- | up ip route add 172.16.20.13 dev vnet0 | ||
- | down ip route del 172.16.20.13 dev vnet0 | ||
- | up ip route add 185.8.164.43 dev vnet0 | ||
- | down ip route del 185.8.164.43 dev vnet0 | ||
- | </ | ||
- | |||
- | Povolíme předávání datagramů z jednoho síťového rozhraní na druhé (ip_forward/ | ||
- | <code shell> | ||
- | post-up echo 1 > / | ||
- | post-up echo 1 > / | ||
- | dns-nameservers | ||
- | </ | ||
- | |||
- | Nastavíme směrování portu 1022 pro SSH „VPS“ (nezapomeňte nastavit také port 1022 u služby SSH na „VPS“), abychom neztratili přístup k SSH u „VPS“, vhledem k tomu že síťový provoz bude zcela směrován jen na veřejnou IPv4 adresu „KVM virtuálu“. Do souboru / | ||
- | <code shell> | ||
- | up iptables -t nat -A PREROUTING -p tcp --dport 1022 -d 185.8.164.43 -j DNAT --to 172.16.20.12 | ||
- | up iptables -t nat -A POSTROUTING -p tcp --sport 1022 -d 172.16.20.12 -j SNAT --to 185.8.164.43 | ||
- | down iptables -t nat -D PREROUTING -p tcp --dport 1022 -d 185.8.164.43 -j DNAT --to 172.16.20.12 | ||
- | down iptables -t nat -D POSTROUTING -p tcp --sport 1022 -d 172.16.20.12 -j SNAT --to 185.8.164.43 | ||
- | </ | ||
- | |||
- | Soubor / | ||
- | |||
- | === Routování veřejné IPv6 do „KVM virtuálu“ === | ||
- | |||
- | Máme veřejnou IPv6 adresu a tu přidělíme „KVM virtuálu“ a síťový provoz pro danou IPv6 adresu přímo směrujeme z „VPS“ na danou veřejnou IPv6 adresu „KVM virtuálu“. „KVM virtuál“ má plnou konektivitu z / do internetu přes IPv6. | ||
- | |||
- | „VPS“ má vlastní veřejnou IPv6 a má plnou konektivitu z / do internetu přes IPv6. | ||
- | |||
- | <code shell> | ||
- | …… daný návod teprve bude zveřejněn. | ||
- | </ | ||
- | |||
- | === Lokální IPv4 adresa „KVM virtuálu“ za NATem === | ||
- | |||
- | Máme lokální IPv4 adresu (rozsah v rámci sítě „VPS“ <=> „KVM virtuálu“) za NATem „VPS“ a na tuto lokální IPv4 adresu směrujeme jednotlivé poty pro dané služby běžící na „KVM virtuálu“. „KVM virtuál“ má plnou konektivitu pouze do internetu přes IPv4, směrem z internetu jsou dostupné pouze dané porty služeb běžících na „KVM virtuálu“. | ||
- | |||
- | „VPS“ má vlastní veřejnou IPv4 a má plnou konektivitu z / do internetu přes IPv4. | ||
- | |||
- | <code shell> | ||
- | …… daný návod teprve bude zveřejněn. | ||
- | </ | ||
===== Kontakty ===== | ===== Kontakty ===== | ||
- | * [[: | + | < |
- | * [[: | + | jirutka (Alpine Linux) |
+ | </ |