Osobně je pro mě nejjednodušší představit si KVM (Kernel-based Virtual Machine) jako takovou úroveň abstrakce nad hardwarovými virtualizačními technologiemi. Intel VT-x a AMD-V. Vezmeme stroj s procesorem, který podporuje jednu z těchto technologií, nasadíme na tento stroj Linux, nainstalujeme KVM do Linuxu a jako výsledek dostaneme příležitost vytvářet virtuální stroje. Takto fungují cloudové hostingové služby, například Amazon Web Services. Spolu s KVM se někdy používá také Xen, ale diskuse o této technologii je nad rámec tohoto příspěvku. Na rozdíl od technologií virtualizace kontejnerů, například stejného Dockeru, vám KVM umožňuje spouštět jakýkoli operační systém jako hostující systém, ale má také o Vyšší režie pro virtualizaci.

Poznámka: Níže uvedené kroky jsem testoval na Ubuntu Linux 14.04, ale teoreticky budou z velké části platné pro jiné verze Ubuntu a další distribuce Linuxu. Vše by mělo fungovat jak na ploše, tak na serveru, ke kterému se přistupuje přes SSH.

Instalace KVM

Zkontrolujte, zda náš procesor podporuje Intel VT-x nebo AMD-V:

grep -E "(vmx|svm)" /proc/cpuinfo

Pokud se něco zahřeje, je to podpořeno a můžete pokračovat dále.

Instalace KVM:

aktualizace sudo apt-get
sudo apt-get install qemu-kvm libvirt-bin virtinst-bridge-utils

Kde je obvyklé ukládat:

  • /var/lib/libvirt/boot/ - ISO obrazy pro instalaci hostujících systémů;
  • /var/lib/libvirt/images/ - obrazy pevných disků hostujících systémů;
  • /var/log/libvirt/ - zde byste měli hledat všechny protokoly;
  • /etc/libvirt/ - adresář s konfiguračními soubory;

Nyní, když je nainstalován KVM, pojďme vytvořit náš první virtuální stroj.

Vytvoření prvního virtuálního stroje

Jako hostující systém jsem zvolil FreeBSD. Stáhněte si ISO obraz systému:

cd /var/lib/libvirt/boot/
sudo wget http://ftp.freebsd.org/ path/ to/ some-freebsd-disk.iso

Řízení virtuální stroje ve většině případů se to provádí pomocí nástroje virsh:

sudo virsh --help

Před spuštěním virtuálního stroje musíme shromáždit nějaké další informace.

Podíváme se na seznam dostupných sítí:

sudo virsh net-list

Zobrazení informací o konkrétní síti (výchozí nastavení):

sudo virsh net-info výchozí

Podíváme se na seznam dostupných optimalizací pro hostující OS:

sudo virt-install --os-variant seznam

Nyní tedy vytvoříme virtuální stroj s 1 CPU, 1 GB RAM a 32 GB místa na disku připojený k výchozí síti:

sudo virt-install \
--virt-type=kvm \
--name freebsd10 \
--ram 1024\
--vcpus=1 \
--os-variant=freebsd8 \
--hvm\
--cdrom=/ var/ lib/ libvirt/ boot/ FreeBSD-10.2 -RELEASE-amd64-disc1.iso \
--network network=default,model=virtio \
--graphics vnc\
--cesta k disku =/ var/ lib/ libvirt/ images/ freebsd10.img,size=32 ,bus=virtio

Můžeš vidět:

VAROVÁNÍ Nelze se připojit ke grafické konzoli: virt-viewer ne
nainstalováno. Nainstalujte si prosím balíček "virt-viewer".

Instalace domény stále probíhá. Můžeš znovu připojit ke konzole
k dokončení procesu instalace.

Nevadí, tak to má být.

Poté se podíváme na vlastnosti virtuálního stroje ve formátu XML:

sudo virsh dumpxml freebsd10

Tady je nejvíc úplné informace. Včetně například i MAC adresy, kterou budeme dále potřebovat. Zatím najdeme informace o VNC. V mém případě:

S pomocí mého oblíbeného klienta (osobně používám Rammina) jedeme přes VNC, v případě potřeby pomocí SSH port forwarding. Dostaneme se přímo do instalačního programu FreeBSD. Pak je vše jako obvykle - Další, Další, Další, dostaneme nainstalovaný systém.

Základní příkazy

Podívejme se nyní na základní příkazy pro práci s KVM.

Získání seznamu všech virtuálních strojů:

sudo virsh list --all

Získání informací o konkrétním virtuálním počítači:

sudo virsh dominfo freebsd10

Spusťte virtuální stroj:

sudo virsh start freebsd10

Zastavit virtuální počítač:

sudo virsh vypnutí freebsd10

Těžko porazit virtuální stroj (navzdory názvu, toto ne vymazání):

sudo virsh zničit freebsd10

Restartujte virtuální počítač:

sudo virsh restart freebsd10

Klonovat virtuální stroj:

sudo virt-clone -o freebsd10 -n freebsd10-clone \
--file / var/ lib/ libvirt/ images/ freebsd10-clone.img

Povolit/zakázat automatické spouštění:

sudo virsh autostart freebsd10
sudo virsh autostart --zakázat freebsd10

Spusťte virsh v dialogovém režimu (všechny příkazy v dialogovém režimu - jak je popsáno výše):

sudovirsh

Úpravy vlastností virtuálního stroje v XML, včetně zde můžete změnit limit na množství paměti atd.:

sudo virsh upravit freebsd10

Důležité! Komentáře z upraveného XML jsou bohužel odstraněny.

Když je virtuální počítač zastaven, lze také změnit velikost disku:

sudo qemu-img resize / var/ lib/ libvirt/ images/ freebsd10.img -2G
sudo qemu-img info / var/ lib/ libvirt/ images/ freebsd10.img

Důležité! Vašemu hostujícímu OS se nejspíš nebude líbit, že se disk najednou zvětšil nebo zmenšil. V nejlepším případě se spustí v nouzovém režimu s návrhem na nové rozdělení disku. Tohle asi dělat nechceš. Může být mnohem jednodušší spustit nový virtuální stroj a migrovat na něj všechna data.

Zálohování a obnova jsou poměrně jednoduché. Výstup dumpxml stačí někam uložit, stejně jako obraz disku a pak je obnovit. Na youtube našel video s ukázkou tohoto procesu je vše opravdu snadné.

Nastavení sítě

Zajímavá je otázka, jak zjistit, jakou IP adresu virtuální stroj po načtení obdržel? V KVM se to dělá chytrým způsobem. Nakonec jsem napsal následující skript Python:

#!/usr/bin/env python3

# skript virt-ip.py
# (c) 2016 Aleksander Alekseev
# http://web/

import sys
import re
import os
podproces importu
z xml .etree importujte ElementTree

def print(str) :
tisknout (str, soubor = sys.stderr)

if len(sys.argv)< 2 :
eprint("USAGE: " + sys.argv [ 0 ] + " " )
eprint("Příklad: " + sys .argv [ 0 ] + " freebsd10" )
sys.exit(1)

if os.geteuid() != 0:
eprint("CHYBA: musíš být root")
eprint("Tip: spusťte `sudo " + sys .argv [ 0 ] + " ...`" ) ;
sys.exit(1)

if subprocess .call( "který arping 2>&1 >/dev/null", shell = True ) != 0 :
eprint("CHYBA: arping nenalezen" )
tisk( "Tip: spusťte `sudo apt-get install arping`")
sys.exit(1)

Doména = sys.argv [1]

pokud ne, znovu .match ("^*$" , doména):
tisk( "CHYBA: neplatné znaky v názvu domény")
sys.exit(1)

Domout = subprocess .check_output ("virsh dumpxml " +doména+" || true" ,
shell=pravda)
domout = domout.decode("utf-8").strip()

if domout == "" :
# chybová zpráva již vytištěna pomocí dumpxml
sys.exit(1)

Doc = ElementTree.fromstring(domout)

# 1. seznam všech síťových rozhraní
# 2. spusťte `arping` na každém rozhraní paralelně
#3 grep odpovědi
cmd= "(ifconfig | cut -d " " -f 1 | grep -E "." | " + \
"xargs -P0 -I IFACE arping -i IFACE -c 1 () 2>&1 | " + \
"grep "bytes from") || true"

pro dítě v doc.iter() :
if child.tag == "mac" :
macaddr = dítě.attrib["adresa"]
macout = podproces .check_output(cmd .format(macaddr) ,
shell=pravda)
print(macout.decode("utf-8" ))

Skript pracuje jak s výchozí sítí, tak s přemostěnou sítí, jejíž konfiguraci si probereme později. V praxi je však mnohem pohodlnější nakonfigurovat KVM tak, aby hostům přiděloval vždy stejné IP adresy. Chcete-li to provést, upravte nastavení sítě:

sudo virsh net-edit default

... něco takového:

>



>

Po provedení těchto změn


>

...a nahraďte to něčím jako:




>

Restartujeme hostující systém a zkontrolujeme, že obdržel IP přes DHCP z routeru. Pokud chcete, aby hostující systém měl statická IP adresa, toto se normálně konfiguruje v rámci samotného hosta.

program virt-manager

Také by vás mohl zajímat program virt-manager:

sudo apt-get install virt-manager
sudo usermod -a -G libvirtd USERNAME

Takto vypadá jeho hlavní okno:

Jak můžete vidět, virt-manager není pouze GUI pro virtuální stroje běžící lokálně. S ním můžete spravovat virtuální stroje běžící na jiných hostitelích a také se dívat na krásné grafy v reálném čase. Osobně považuji za obzvláště výhodné ve virt-manageru, že nemusíte prohledávat konfigurace, na kterém portu běží VNC konkrétního hostujícího systému. Virtuální stroj prostě najdete v seznamu, dvakrát kliknete a získáte přístup k monitoru.

Je také velmi pohodlné používat virt-manager k provádění věcí, které by jinak vyžadovaly pracné úpravy souborů XML a v některých případech i provádění dalších příkazů. Například přejmenování virtuálních strojů, nastavení afinity CPU a podobné věci. Mimochodem, použití afinity CPU výrazně snižuje vliv hlučných sousedů a vliv virtuálních strojů na hostitelský systém. Vždy jej používejte, kdykoli je to možné.

Pokud se rozhodnete použít KVM jako náhradu za VirtualBox, mějte na paměti, že nemohou mezi sebou sdílet hardwarovou virtualizaci. Aby KVM fungovalo na vaší ploše, budete muset nejen zastavit všechny virtuální stroje ve VirtualBoxu a Vagrantu, ale také restartovat systém. Osobně považuji KVM za mnohem pohodlnější než VirtualBox, přinejmenším proto, že nevyžaduje spuštění příkazu nastavení sudo /sbin/rcvboxdrv po každé aktualizaci jádra funguje adekvátně s Unity a obecně umožňuje skrýt všechna okna.

Kimchi je webové rozhraní založené na HTML5 pro KVM. Poskytuje snadné a flexibilní rozhraní pro vytváření a správu hostovaného virtuálního počítače. Kimchi je nainstalován a běží jako démon na hostiteli KVM. Spravuje hosty KVM pomocí libvirt. Kimchi rozhraní podporuje všechny nejnovější verze prohlížečů s verzí -1, podporuje také mobilní prohlížeče.

Kimchi lze nainstalovat na nejnovější verzi RHEL, Fedora, openSUSE a Ubuntu. V této příručce jsem jako hostitel KVM použil Ubuntu 14.10.

Před konfigurací kimchi musíte nainstalovat následující závislé balíčky.

$ sudo apt-get install gcc make autoconf automake gettext git python-cherrypy3 python-cheetah python-libvirt libvirt-bin python-imaging python-pam python-m2crypto python-jsonschema qemu-kvm-toolstoolspadidrpy pythonth python-ldap python-lxml nfs-common open-iscsi lvm2 xsltproc python-parted nginx firewalld python-guestfs libguestfs-tools python-requests websockify novnc spice-html5 wget

Systém se vás během instalace balíčků zeptá na následující podrobnosti.

1. OK v konfiguraci Postfixu.

2. Vyberte Internetová stránka v obecném typu konfigurace pošty.

3. Zadejte své FQDN a poté vyberte OK.

Po instalaci si stáhněte nejnovější verzi kimchi z githubu.

$ wget https://github.com/kimchi-project/kimchi/archive/master.zip

Rozbalte stažený soubor.

$ unzip master.zip $ cd kimchi-master/

Sestavte kimchi pomocí následujícího příkazu.

$ ./autogen.sh --system

$ make $ sudo make install # Volitelné, pokud běží ze zdrojového stromu

$ sudo kimchid --host=0.0.0.0

Přístup ke kimchi pomocí webového prohlížeče, https://localhost:8001. Budete požádáni o přihlášení, použijte své systémové přihlašovací údaje, které běžně používáte pro přihlášení do systému.


Jakmile se přihlásíte, dostanete stránku jako níže. Toto zobrazuje seznam běžících hostujících virtuálních strojů na aktuálním hostiteli, máte tlačítka pro provedení vypnutí, restartování a připojení ke konzole kliknutím na akci.


Chcete-li vytvořit nový počítač pro hosty, klikněte na znaménko + v pravém rohu. Pokud použijete tuto možnost k vytvoření stroje, bude to provedeno prostřednictvím šablon.


Šablony můžete spravovat v nabídce šablon. Chcete-li vytvořit novou šablonu, klikněte na znaménko + v pravém rohu. Šablonu můžete vytvořit pomocí ISO obrazů, můžete umístit iso obrazy na /var/lib/kimchi/isos nebo použít vzdálený.


Úložný fond můžete spravovat v nabídce úložiště, kde můžete přidat nové úložiště kliknutím na znaménko +. Podporuje přidávání úložiště NFS, iSCSI a SCSI fibre channel.


Síť lze spravovat v nabídce sítě, můžete vytvořit novou síť s izolovaným, NAT a přemostěním.


Dnes se mnoho úloh, které byly tradičně přidělovány několika fyzickým serverům, přenáší do virtuálních prostředí. Virtualizační technologie jsou také žádané vývojáři softwaru, protože umožňují komplexní testování aplikací v různých operačních systémech. Zároveň se zjednodušením mnoha problémů je potřeba spravovat samotné virtualizační systémy a bez speciálních řešení se neobejde.

Tulák

Virtuální stroj virtualbox je zaslouženě populární mezi správci a vývojáři a umožňuje vám rychle vytvářet potřebná prostředí pomocí GUI nebo rozhraní příkazového řádku. Pokud počet virtuálních počítačů nepřesáhne tři, nenastanou žádné potíže s nasazením a správou, ale moderní projekty mají tendenci získávat konfigurace a v důsledku toho se získá velmi složitá infrastruktura, se kterou se obtížně manipuluje. Toto je problém, který má vyřešit správce virtuálního prostředí Vagrant, který vám umožňuje vytvářet kopie virtuálních strojů s předdefinovanou konfigurací a dynamicky přerozdělovat prostředky VM (Provisioning) podle potřeby. V základní distribuci Vagrant pracuje s VirtualBoxem, ale systém pluginů umožňuje připojit další virtualizační systém. Dnes je otevřený kód pluginu pro AWS a Rackspace Cloud a je k dispozici plugin pro komerční předplatné na podporu VMware Fusion/Workstation.

Vagrant nevytváří virtuální stroj od začátku. Pro pohodlí projekt nabízí několik základních obrazů (boxů), které jsou importovány a následně použity pro rychlé nasazení systému, již na základě boxů je sestaven hostující OS s požadovanou konfigurací.

Chef a Puppet jsou předinstalované v krabicích, aby se zjednodušilo nasazení aplikace. Kromě, požadovaná nastavení lze nastavit pomocí shellu. Prostředí zahrnují plný set pro spouštění a vývoj aplikací v Ruby. Pro přístup k VM se používá SSH, je možné vyměňovat soubory přes sdílený adresář.

Napsal Vagrant pomocí Ruby a lze jej nainstalovat na jakoukoli platformu, pro kterou existují komponenty VirtualBox a Ruby. Balíčky pro Windows, Linux (deb a rpm) a OS X jsou k dispozici na stránce stahování.

Proces instalace a používání Ubuntu je jednoduchý. Stáhněte si balíčky VirtualBox a Vagrant a nainstalujte:

$ sudo dpkg -i virtualbox-4.2.10_amd64.deb $ sudo dpkg -i vagrant_1.2.2_x86_64.deb

V době psaní tohoto článku s nejnovějším současná verze VirtualBox 4.2.14 měl problémy se spuštěním Vagrantu, takže je nejlepší prozatím použít 4.2.12 nebo otestovat 4.2.15. Případně můžete:

$ cd ~/.vagrant.d/boxes/BoxName/virtualbox $ openssl sha1 *.vmdk *.ovf > box.mf

přinesu Alternativní možnost Instalace Vagrant – pomocí Ruby:

$ sudo apt-get install ruby1.8 ruby1.8-dev rubygems1.8 $ sudo gem install vagrant

Všechna nastavení projektu jsou provedena v speciální soubor Vagrantfile. Aby se šablona nevytvářela ručně, lze ji vygenerovat následovně:

$ mkdir projekt $ cd projekt $ vagrant init

Nyní se můžete podívat do vytvořeného konfiguračního souboru a vyplnit: Nastavení VM (config.vm. ), možnosti připojení SSH (config.ssh.), parametry samotného Vagrantu (config.vagrant). Všechny jsou dobře zdokumentovány, význam některých je jasný a bez vysvětlení.

Ve skutečnosti se při spuštění používá několik takových souborů, každý následující přepíše ten předchozí: vestavěný do Vagrant (nelze ho změnit), dodávaný s krabicemi (zabalený pomocí přepínače "--vagrantfile"), umístěný v ~/.vagrant .d a soubor projektu . Tento přístup vám umožňuje použít výchozí nastavení a přepsat pouze to, co je v konkrétním projektu nezbytné.


Všechny instalace se provádějí pomocí příkazu vagrant, seznam dostupných klíčů lze zobrazit pomocí "-h". Po instalaci nemáme ani jeden obrázek, běh vagrant box list zobrazí prázdný seznam. Hotová krabice může být v místním souborovém systému nebo zapnutá vzdálený server, jeho název je nastaven jako parametr, který bude použit v projektech. Například používáme oficiální Box Ubuntu 12.04 LTS nabízené vývojáři Vagrant.

$ vagrant box přidat precizní64 http://files.vagrantup.com/precise64.box

Nyní je přístupný z Vagrantfile:

config.vm.box = "precise64"

I když je jednodušší to zadat hned při inicializaci projektu:

$ tulák init přesný64

Nejjednodušší způsob, který nevyžaduje učení Chef and Puppet, je použít pro konfiguraci VM standardní příkazy shellu, které lze zapsat přímo do souboru Vagrantfile nebo ještě lépe zkombinovat do skriptu, který je takto propojen:

Vagrant.configure("2") proveďte |config| config.vm.provision:shell, :inline => konec "script.sh".

Nyní budou při spuštění virtuálního počítače provedeny všechny příkazy zadané v script.sh. Po spuštění projektu se vytvoří soubor ovf, jeho nastavení lze zobrazit pomocí grafického rozhraní VirtualBox nebo příkazu VBoxManage:

$ VBoxManage import /home/user/.vagrant.d/boxes/precise64/virtualbox/box.ovf Virtuální systém 0: 0: Doporučený typ OS: "Ubuntu_64" (změnit s "--vsys 0 --ostype "; použijte "list ostypes" k vypsání všech možných hodnot) 1: Navrhovaný název virtuálního počítače "precise64" (změňte pomocí "--vsys 0 --vmname" ") 2: Počet CPU: 2 (změňte pomocí "--vsys 0 --cpus ") 3: Paměť hosta: 384 MB (změnit pomocí "--vsys 0 --memory ")

Ne vždy jsou spokojeni. dané podmínky, ale pomocí nastavení poskytovatele můžete snadno změnit nastavení konkrétního virtuálního počítače (viz rady „změnit pomocí ...“):

Config.vm.provider:virtualbox do |vb| vb.customize ["modifyvm", :id, "--memory", "1024"] end

Spusťte a připojte se k systému přes SSH:

$ tulák nahoru $ tulák ssh

Chcete-li VM zastavit, použijte parametr zastavit nebo zničit (druhý vymaže všechny soubory, příště se všechny operace provedou od začátku), pokud jej potřebujete odeslat do hibernace - vagrant suspend , return - vagrant restore . Pro příklad práce s Chefem můžete použít hotový recept, pomocí kterého nakonfigurujete APT a Apache2:

Config.vm.provision:chef_solo do |chef| chef.recipe_url = "http://files.vagrantup.com/getting_started/cookbooks.tar.gz" chef.add_recipe("vagrant_main") konec

Chcete-li získat přístup k virtuálnímu počítači „zvenčí“, budete muset nakonfigurovat přesměrování portů. Ve výchozím nastavení se provádí přesměrování 22 -> 2222, což umožňuje připojení přes SSH. Přidat do Vagrantfile:

Vagrant::Config.run do |config| config.vm.forward_port 80, 1111 end

Webový server je nyní přístupný z http://127.0.0.1:1111/. Abyste prostředí nekonfigurovali pokaždé, je lepší na jeho základě postavit hotový balíček.

$ balíček vagrant --vagrantfile Vagrantfile --output project.box

Nyní lze soubor project.box distribuovat dalším správcům, vývojářům nebo běžným uživatelům, kteří jej zahrnou pomocí příkazu vagrant box add project.box.

Convirt

Xen/KVM virtualizační systémy vydané v rámci bezplatných licencí nemají uživatelsky přívětivé rozhraní což je často interpretováno ne v jejich prospěch. Tento nedostatek je však snadno odstranitelný. ConVirt vám umožňuje nasadit virtuální stroje na více serverů Xen a KVM jediným kliknutím pomocí snadno použitelného rozhraní. K dispozici jsou všechny potřebné operace s virtuálními stroji: spouštění, zastavování, vytváření snímků, řízení a přerozdělování zdrojů, připojení k VM přes VNC, automatizace administračních úloh. Technologie Ajax činí rozhraní interaktivním a podobným desktopové aplikaci. Virtuální počítač lze například jednoduše přetáhnout z jednoho serveru na druhý. Rozhraní není lokalizované, ale ovládání je intuitivní.


Sdružování serverů vám dává možnost konfigurovat a spravovat virtuální stroje a prostředky na úrovni fondu serverů, nikoli na úrovni jednoho serveru. Agenti se neinstalují na virtuální systémy, je potřeba pouze balíček convirt-tool na fyzickém serveru. To zjednodušuje správu a nasazení.

Po přidání nového serveru bude ConVirt automaticky shromažďovat data o jeho konfiguraci a výkonu a poskytovat souhrnné informace na několika úrovních – od jednotlivých virtuální stroj, fyzický server do celého fondu. Shromážděná data se používají k automatickému hostování nových hostujících systémů. Tyto informace jsou také zobrazeny ve formě vizuálních grafů.

K vytvoření virtuálních strojů se používají šablony - popisy nastavení virtuálních strojů, obsahující údaje o přidělených prostředcích, cestu k souborům OS a další nastavení. Po instalaci je k dispozici několik možností. hotové šablony, ale v případě potřeby je lze snadno vytvořit sami.

Podporovány jsou všechny technologie: vyvažování zátěže, migrace za provozu, virtuální disky s rostoucí kapacitou, které umožňují využívat zdroje podle potřeby, a mnoho dalších funkcí implementovaných v Xen a KVM. K přerozdělení prostředků nepotřebujete zastavit virtuální počítač.

Implementována schopnost spravovat virtuální prostředí pro několik administrátorů s možností auditu a kontroly jejich akcí.

ConVirt je vyvíjen společností Convirture s využitím konceptu open core (open basis), kdy se zdrojovými texty je volně distribuována pouze základní sada funkcí, zbytek je dostupný v komerční verzi. Verze s otevřeným zdrojovým kódem postrádá podporu High Availability, integraci VLAN, redundanci a obnovu, správu příkazového řádku, upozornění a oficiální podporu.

Při vývoji byl použit framework TurboGears2, knihovny ExtJs a FLOT, pro ukládání informací bylo použito MySQL, jako DHCP a DNS server byl použit dnsmasq. Potřebný balíček lze nalézt v repozitářích oblíbených linuxových distribucí.

Karesansui

Byly implementovány všechny funkce pro správu virtuálních prostředí: instalace operačního systému, vytváření konfigurací pro diskový subsystém a virtuální síťové karty, správa kvót, replikace, zmrazení VM, vytváření snímků, prohlížení podrobných statistik a dat protokolů, sledování stahování. Z jedné konzoly můžete spravovat více fyzických serverů a virtuálních strojů na nich hostovaných. Je možná víceuživatelská práce s oddělením práv. Díky tomu se vývojářům podařilo implementovat do prohlížeče virtuální prostředí, které umožňuje plně spravovat systémy.

SQLite, napsaný Karesansui v Pythonu, se používá jako DBMS pro systém s jedním uzlem. Pokud plánujete spravovat instalace Karesansui hostované na více fyzických serverech, měli byste použít MySQL nebo PostgreSQL.

Karesansui můžete nasadit na jakýkoli Linux. Sami vývojáři preferují CentOS (pro který má stránka podrobné pokyny), i když Karesansui funguje dobře na Debianu a Ubuntu. Před instalací musíte splnit všechny závislosti uvedené v dokumentaci. Dále se spustí instalační skript a inicializuje se databáze. Pokud je použita konfigurace s více servery, stačí zadat externí databázi.

Následná práce plně kompenzuje nepohodlí při instalaci. Všechna nastavení jsou rozdělena do sedmi záložek, jejichž účel je zřejmý z názvu: Host, Nastavení, Úloha, Síť, Úložiště, Zpráva a Protokol. V závislosti na roli uživatele mu nebudou všechny dostupné.

Nový virtuální počítač můžete vytvořit z místního souboru ISO nebo zadáním prostředku HTTP/FTP s instalačními obrazy. Budete také muset nastavit zbývající atributy: název systému, který se zobrazí v seznamu, název sítě (název hostitele), technologii virtualizace (Xen nebo KVM), velikost paměti RAM a pevného disku (velikost paměti a velikost disku) - a vyberte obrázek, který bude odpovídat virtuálnímu OS, takže bude rychlý vizuální výběr v konzole.

WebVirtMgr

Možnosti popsaných řešení jsou často nadbytečné a jejich instalace není pro administrátora s malými zkušenostmi vždy jasná. Ale i tady existuje cesta ven. Služba centralizované správy virtuálního stroje WebVirtMgr byla vytvořena jako jednoduchá náhrada virt-manageru, která zajistí pohodlnou práci s VM pomocí prohlížeče s nainstalovaným Java pluginem. Je podporována správa nastavení KVM: vytváření, instalace, konfigurace, spouštění VM, snímky a zálohování virtuálních strojů. Poskytuje správu síťového fondu a úložného fondu, práci s ISO, klonování obrazů, zobrazení využití CPU a RAM. K virtuálnímu počítači se přistupuje přes VNC. Všechny transakce se zaznamenávají do protokolů. S jedinou instalací WebVirtMgr můžete spravovat více serverů KVM. Pro připojení k nim se používá RPC libvirt (TCP/16509) nebo SSH.


Rozhraní je napsáno v Pythonu/Django. K instalaci budete potřebovat server Linux. Distribuováno ve zdrojových a RPM balíčcích pro CentOS, RHEL, Fedora a Oracle Linux 6. Samotný proces nasazení je jednoduchý a dobře popsaný v projektové dokumentaci (v ruštině), stačí nakonfigurovat libvirt a nainstalovat webvirtmgr. Celý proces trvá pět minut. Po připojení k Dashboardu vyberte Přidat připojení a zadejte parametry uzlu, poté můžeme nakonfigurovat VM.

Skriptování vytvoření virtuálního počítače

Nejjednodušší skript pro vytvoření a spuštění virtuálního stroje pomocí VirtualBoxu:

#!/bin/bash vmname="debian01" VBoxManage createvm --name $(vmname) --ostype "Debian" --register VBoxManage modulevm $(vmname) --memory 512 --acpi on --boot1 dvd VBoxManage createhd - -filename "$(vmname).vdi" --size 10000 --variant Opraveno VBoxManage storagectl $(vmname) --name "IDE Controller" --add ide --controller PIIX4 VBoxManage storageattach $(vmname) --storagectl "IDE Controller" --port 0 --device 0 --type hdd --medium "$(vmname).vdi" VBoxManage storageattach $(vmname) --storagectl "IDE Controller" --port 0 --device 1 --type dvddrive --medium /iso/debian-7.1.0-i386-netinst.iso VBoxManage modulevm $(vmname) --nic1 bridged --bridgeadapter1 eth0 --cableconnected1 na VBoxManage modifikacevm $(vmname) --vrde na obrazovce VBoxHeadless --startvm $(vmname)

Proxmox VE

Předchozí řešení jsou dobrá pro ty situace, kde již existuje nějaká infrastruktura. Pokud jej ale musíte pouze nasadit, měli byste přemýšlet o specializovaných platformách, které vám umožní rychle získat požadovaný výsledek. Příkladem je Proxmox Virtual Environment, což je linuxová distribuce (založená na Debian 7.0 Wheezy), která vám umožňuje rychle vybudovat infrastrukturu virtuální servery pomocí OpenVZ a KVM a je prakticky srovnatelný s produkty jako VMware vSphere, MS Hyper-V a Citrix XenServer.


Ve skutečnosti by měl být systém pouze nainstalován (pár jednoduchých kroků), vše ostatní již funguje po vybalení z krabice. Poté můžete pomocí webového rozhraní vytvořit virtuální počítač. K tomuto účelu je nejjednodušší použít šablony a kontejnery OpenVZ, které se načítají z externích zdrojů přímo z rozhraní jedním kliknutím (pokud ručně, tak zkopírujte do adresáře /var/lib/vz/template). Šablony lze ale také vytvářet klonováním již vytvořených systémů v režimu propojení. Tato volba šetří místo na disku, protože všechna propojená prostředí používají pouze jednu sdílenou kopii dat referenční šablony bez duplikace informací. Rozhraní je lokalizované a srozumitelné, při práci s ním nepociťujete žádné zvláštní nepříjemnosti.

Existuje podpora pro clustery, nástroje pro Rezervovat kopii virtuálních prostředí, je možné migrovat VM mezi uzly bez zastavení práce. Řízení přístupu ke stávajícím objektům (VM, storage, nodes) je realizováno na základě rolí, podporovány jsou různé autentizační mechanismy (AD, LDAP, Linux PAM, vestavěný Proxmox VE). Webové rozhraní poskytuje možnost přístupu k VM pomocí konzolí VNC a SSH, můžete zobrazit stav úlohy, protokoly, monitorovací data a mnoho dalšího. Je pravda, že některé operace specifické pro systémy HA budou muset být stále prováděny staromódním způsobem v konzole, jako je vytvoření autorizovaného připojení iSCSI, konfigurace clusteru, vytvoření více cest a některé další operace.

Systémové požadavky jsou nízké: x64 CPU (nejlépe s Intel VT/AMD-V), 1+ GB RAM. Projekt nabízí hotový ISO obraz a úložiště pro Debian.

Závěr

Všechna popsaná řešení jsou svým způsobem dobrá a s úkoly odvádějí vynikající práci. Stačí si vybrat ten nejvhodnější pro konkrétní situaci.

Na Ubuntu se doporučuje používat hypervisor KVM (správce virtuálních strojů) a knihovnu libvirt jako nástroj pro jeho správu. Libvirt obsahuje sadu softwarových rozhraní API a vlastní aplikace pro správu virtuálních strojů (VM) virt-manager (grafické rozhraní, GUI) nebo virsh ( příkazový řádek, CLI). Jako alternativní správce můžete použít convirt (GUI) nebo convirt2 (WEB rozhraní).

V současnosti je v Ubuntu oficiálně podporován pouze hypervizor KVM. Tento hypervizor je součástí kódu jádra operačního systému. Linuxové systémy. Na rozdíl od Xen KVM nepodporuje paravirtualizaci, což znamená, že aby ji bylo možné používat, musí váš CPU podporovat technologie VT. Zda váš procesor podporuje tuto technologii, můžete zkontrolovat spuštěním příkazu v terminálu:

Pokud je výsledkem zpráva:

INFO: /dev/kvm existuje Lze použít akceleraci KVM

takže KVM bude fungovat bez problémů.

Pokud je výstupem zpráva:

Váš CPU ne podpora rozšíření KVM Akceleraci KVM NELZE použít

pak můžete stále používat virtuální stroj, ale bude mnohem pomalejší.

    Nainstalujte jako hostující 64bitové systémy

    Přidělte hostům více než 2 GB paměti RAM

Instalace

sudo apt-get install qemu-kvm libvirt-bin ubuntu-vm-builder bridge-utils

Jedná se o instalaci na server bez X, tedy bez grafického rozhraní. Můžete jej nainstalovat pomocí příkazu

sudo apt-get install virt-manager

Poté se v nabídce objeví položka „Správce virtuálních strojů“ a s vysokou mírou pravděpodobnosti bude vše fungovat. Pokud nějaké problémy přetrvávají, budete si muset přečíst pokyny na wiki v anglickém jazyce.

Vytvořte systém pro hosty

Postup pro vytvoření hostujícího systému pomocí grafického rozhraní je poměrně jednoduchý.

Ale textový režim se dá popsat.

qcow2

Při vytváření systému pomocí grafického rozhraní jako pevný disk budete vyzváni, abyste buď vybrali existující obrazový soubor nebo blokové zařízení, nebo vytvořili nový soubor s nezpracovanými (RAW) daty. Toto však není zdaleka jediný dostupný formát souboru. Ze všech typů disků uvedených v man qemu-img je qcow2 nejflexibilnější a nejaktuálnější. Podporuje snímky, šifrování a kompresi. Musí být vytvořen před vytvořením nového hostujícího systému.

Qemu-img create -o preallocation=metadata -f qcow2 qcow2.img 20G

Podle stejného muže qemu-img předběžné přidělení metadat (-o preallocation=metadata) způsobí, že disk bude zpočátku mírně větší, ale poskytuje lepší výkon, když obraz potřebuje růst. Ve skutečnosti se v tomto případě tato možnost vyhne nepříjemnému bugu. Vytvořený obrázek zpočátku zabírá méně než megabajt místa a podle potřeby roste do zadané velikosti. Hostující systém by měl okamžitě vidět tuto konečnou specifikovanou velikost, ale během fáze instalace může vidět skutečnou velikost souboru. Přirozeně odmítne instalaci na 200 kb pevný disk. Chyba není specifická pro Ubuntu, objevuje se alespoň v RHEL.

Kromě typu obrazu si později můžete vybrat, jak jej připojit – IDE, SCSI nebo Virtio Disk. Výkon diskového subsystému bude záviset na této volbě. Jednoznačně správná odpověď neexistuje, je potřeba vybírat na základě úkolu, který bude hostujícímu systému přidělen. Pokud je hostující systém vytvořen "aby viděl", pak bude stačit jakákoli metoda. Obecně platí, že I/O je obvykle úzkým hrdlem virtuálního stroje, takže při vytváření vysoce zatíženého systému je třeba tento problém brát co nejzodpovědněji.

Píšu tuto poznámku, abych demonstroval instalace krok za krokem a nastavení virtuálního stroje Linux založeného na KVM. Již dříve jsem psal o virtualizaci, kde jsem použil nádherný .

Nyní stojím před otázkou pronájmu dobrý server s velkým objemem paměť s náhodným přístupem a objemné pevný disk. Ale nechci spouštět projekty přímo na hostitelském počítači, takže je rozdělím do samostatných malých virtuálních serverů s OS Linux nebo docker kontejnery (o nich budu mluvit v jiném článku).

Všechny moderní cloud hostingy fungují na stejném principu, tzn. hoster na dobrém hardwaru vytvoří spoustu virtuálních serverů, kterým jsme říkali VPS / VDS, a distribuuje je uživatelům nebo tento proces automatizuje (ahoj, DigitalOcean).

KVM (kernel-based virtual machine) je linuxový software, který využívá procesorový hardware kompatibilní s x86 pro práci s virtualizační technologií Intel VT/AMD SVM.

Instalace KVM

Provedu veškeré machinace pro vytvoření virtuálního stroje na OS Ubuntu 16.04.1 LTS. Chcete-li zkontrolovat, zda vaše procesy podporují hardwarovou virtualizaci zapnutou Na bázi Intelu VT/AMD SVM, spusťte:

Grep -E "(vmx|svm)" /proc/cpuinfo

Pokud terminál není prázdný, pak je vše v pořádku a KVM lze nainstalovat. Ubuntu oficiálně podporuje pouze hypervizor KVM (součást linuxového jádra) a radí používat knihovnu libvirt jako nástroj pro jeho správu, což uděláme příště.

Podporu virtualizace hardwaru v Ubuntu můžete také zkontrolovat pomocí příkazu:

Pokud uspějete, uvidíte něco takového:

INFO: /dev/kvm existuje Lze použít akceleraci KVM

Nainstalujte balíčky pro práci s KVM:

sudo apt-get install qemu-kvm libvirt-bin ubuntu-vm-builder bridge-utils

Pokud máte přístup ke grafickému prostředí systému, můžete nainstalovat správce GUI libvirt:

sudo apt-get install virt-manager

Použití virt-manageru je docela jednoduché (ne obtížnější než VirtualBox), takže tento článek se zaměří na konzolovou verzi instalace a konfigurace virtuálního serveru.

Instalace a konfigurace virtuálního serveru

V konzolové verzi instalace, konfigurace a správy systému je nepostradatelným nástrojem utilita virsh (doplněk pro knihovnu libvirt). Má velké množství možností a parametrů, Detailní popis lze získat takto:

muž virsh

nebo zavolejte standardní "pomoc":

Virsh pomoc

Při práci s virtuálními servery vždy dodržuji následující pravidla:

  1. skladuji iso obrázky OS v adresáři /var/lib/libvirt/boot
  2. Obrazy virtuálních strojů ukládám do adresáře /var/lib/libvirt/images
  3. Každému novému virtuálnímu počítači jsem explicitně nastavil jeho vlastní statickou IP adresu přes DHCP server hypervizor.

Začněme instalovat první virtuální stroj (64bitový server ubunt 16.04 LTS):

Cd /var/lib/libvirt/boot sudo wget http://releases.ubuntu.com/16.04/ubuntu-16.04.1-desktop-amd64.iso

Po stažení obrázku spusťte instalaci:

sudo virt-install \ --virt-type=kvm \ --name ubuntu1604\ --ram 1024 \ --vcpus=1 \ --os-variant=ubuntu16.04 \ --hvm \ --cdrom=/var/ lib/libvirt/boot/ubuntu-16.04.1-server-amd64.iso \ --network network=default,model=virtio \ --graphics vnc \ --cesta k disku=/var/lib/libvirt/images/ubuntu1604. img,velikost=20,bus=virtio

Převedením všech těchto parametrů do „lidské řeči“ vyjde najevo, že vytváříme virtuální stroj s OS Ubuntu 16.04, 1024 MB RAM, 1 procesor, standardní síťová karta (virtuální stroj půjde na internet jakoby kvůli NAT), 20 GB HDD.

Stojí za to věnovat pozornost parametru --os-varianta, říká hypervizoru, pod kterým operačním systémem má být nastavení upraveno.
Seznam dostupných možností OS lze získat spuštěním příkazu:

osinfo dotaz os

Pokud ve vašem systému žádný takový nástroj není, nainstalujte:

sudo apt-get install libosinfo-bin

Po spuštění instalace se v konzole zobrazí následující zpráva:

Instalace domény stále probíhá. Chcete-li dokončit proces instalace, můžete se znovu připojit ke konzole.

Toto je normální situace, budeme pokračovat v instalaci přes VNC.
Podíváme se, který port byl získán z našeho virtuálního stroje (například v nedalekém terminálu):

Virsh dumpxml ubuntu1604 ... ...

Port 5900, na místní adrese 127.0.0.1. Chcete-li se připojit k VNC, musíte použít přesměrování portů přes ssh. Než to uděláte, ujistěte se, že je na démonu ssh povoleno předávání tcp. Chcete-li to provést, přejděte do nastavení sshd:

Cat /etc/ssh/sshd_config | grep AllowTcpForwarding

Pokud nebylo nic nalezeno nebo vidíte:

AllowTcpForwarding ne

Poté upravíme konfiguraci pro

AllowTcpForwarding ano

a restartujte sshd.

Konfigurace přesměrování portů

Spusťte příkaz na místním počítači:

Ssh -fN -l přihlášení -L 127.0.0.1:5900:localhost:5900 server_ip

Zde jsme nakonfigurovali přesměrování ssh portu z místního portu 5900 na port serveru 5900. Nyní se můžete připojit k VNC pomocí libovolného klienta VNC. Preferuji UltraVNC kvůli jeho jednoduchosti a pohodlí.

Po úspěšném připojení se na obrazovce zobrazí standardní uvítací okno instalace Ubuntu:

Po dokončení instalace a obvyklém restartu se objeví přihlašovací okno. Po přihlášení určíme IP adresu nově raženého virtuálního stroje, abychom ji později učinili statickou:

ifconfig

Vzpomínáme a jdeme k hostitelskému stroji. Vytáhneme mac-adresu „síťové“ karty virtuálního stroje:

Virsh dumpxml ubuntu1604 | grep "mac adresa"

Zapamatujte si naši mac adresu:

Úprava síťových nastavení hypervizoru:

sudo virsh net-edit default

Hledáme DHCP a přidáme toto:

Měli byste dostat něco takového:

Aby se nastavení projevilo, musíte restartovat server DHCP hypervizoru:

sudo virsh net-destroy výchozí sudo virsh net-start výchozí služba sudo libvirt-bin restart

Poté virtuální počítač restartujeme, nyní bude mít vždy přidělenou IP adresu - 192.168.122.131.

Existují další způsoby, jak nastavit statickou IP pro virtuální počítač, například přímou úpravou nastavení sítě v hostujícím systému, ale zde je to na vašem srdci. Právě jsem ukázal možnost, kterou sám raději používám.

Chcete-li se připojit k terminálu virtuálního počítače, spusťte:

ssh 192.168.122.131

Auto je připraveno k boji.

Virsh: seznam příkazů

Chcete-li zobrazit běžící virtuální hostitele (všechny dostupné lze získat přidáním --all):

sudo virsh seznam

Hostitele můžete restartovat:

Sudo virsh restartovat $VM_NAME

Zastavte virtuální počítač:

sudo virsh stop $VM_NAME

Provést zastavení:

sudo virsh zničit $VM_NAME

sudo virsh start $VM_NAME

Vypnout:

sudo virsh vypnutí $VM_NAME

Přidat do automatického spouštění:

sudo virsh autostart $VM_NAME

Velmi často je nutné systém naklonovat, aby jej bylo možné v budoucnu použít jako framework pro další virtuální operační systémy, k tomu slouží utilita virt-clone.

Virt-klon --pomoc

Klonuje existující virtuální stroj a mění data citlivá na hostitele, jako je mac adresa. Hesla, soubory a další informace specifické pro uživatele v klonu zůstávají stejné. Pokud byla na klonovaném virtuálním počítači IP adresa zadána ručně, pak mohou nastat problémy s přístupem SSH ke klonu kvůli konfliktu (2 hostitelé se stejnou IP).

Kromě instalace virtuálního stroje přes VNC je také možné použít X11Forwarding přes utilitu virt-manager. Na Windows k tomu lze použít například Xming a PuTTY.