Osobne je pre mňa najjednoduchšie predstaviť si KVM (Kernel-based Virtual Machine) ako takú úroveň abstrakcie nad technológiami virtualizácie hardvéru. Intel VT-x a AMD-V. Vezmeme stroj s procesorom, ktorý podporuje jednu z týchto technológií, nasadíme na tento stroj Linux, nainštalujeme KVM do Linuxu a ako výsledok dostaneme možnosť vytvárať virtuálne stroje. Takto fungujú cloudové hostingové služby, napríklad Amazon Web Services. Spolu s KVM sa niekedy používa aj Xen, ale diskusia o tejto technológii presahuje rámec tohto príspevku. Na rozdiel od technológií virtualizácie kontajnerov, napríklad rovnakého Dockera, vám KVM umožňuje spustiť ľubovoľný operačný systém ako hosťovský systém, ale má tiež o Väčšia réžia pre virtualizáciu.

Poznámka: Nižšie uvedené kroky som testoval na Ubuntu Linux 14.04, ale teoreticky budú vo veľkej miere platné pre iné verzie Ubuntu a iných distribúcií Linuxu. Všetko by malo fungovať na ploche aj na serveri, ku ktorému sa pristupuje cez SSH.

Inštalácia KVM

Skontrolujte, či náš procesor podporuje Intel VT-x alebo AMD-V:

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

Ak sa niečo zahreje, je to podporované a môžete pokračovať ďalej.

Nainštalujte KVM:

aktualizácia sudo apt-get
sudo apt-get install qemu-kvm libvirt-bin virtinst-bridge-utils

Kde je zvykom skladovať:

  • /var/lib/libvirt/boot/ - ISO obrazy na inštaláciu hosťujúcich systémov;
  • /var/lib/libvirt/images/ - obrazy pevného disku hosťujúcich systémov;
  • /var/log/libvirt/ - tu by ste mali hľadať všetky protokoly;
  • /etc/libvirt/ - adresár s konfiguračnými súbormi;

Teraz, keď je KVM nainštalovaný, poďme vytvoriť náš prvý virtuálny stroj.

Vytvorenie prvého virtuálneho stroja

Ako hosťujúci systém som si vybral FreeBSD. Stiahnite si ISO obraz systému:

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

Kontrola virtuálne stroje vo väčšine prípadov sa to robí pomocou nástroja virsh:

sudo virsh --pomoc

Pred spustením virtuálneho počítača musíme zhromaždiť nejaké ďalšie informácie.

Pozeráme sa na zoznam dostupných sietí:

sudo virsh net-list

Zobrazenie informácií o konkrétnej sieti (pomenovaná predvolená):

sudo virsh net-info predvolene

Pozeráme sa na zoznam dostupných optimalizácií pre hosťujúci OS:

sudo virt-install --os-variant list

Takže teraz vytvoríme virtuálny stroj s 1 CPU, 1 GB RAM a 32 GB miesta na disku pripojený k predvolenej sieti:

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=predvolené,model=virtio \
--graphics vnc \
--cesta k disku =/ var/ lib/ libvirt/ images/ freebsd10.img,size=32 ,bus=virtio

Môžeš vidieť:

VAROVANIE Nedá sa pripojiť ku grafickej konzole: nie je virt-viewer
nainštalovaný. Nainštalujte si balík „virt-viewer“.

Inštalácia domény stále prebieha. Môžeš znova pripojte ku konzole
na dokončenie procesu inštalácie.

Nevadí, tak to má byť.

Potom sa pozrieme na vlastnosti virtuálneho stroja vo formáte XML:

sudo virsh dumpxml freebsd10

Tu je najviac úplné informácie. Vrátane napríklad aj MAC adresy, ktorú budeme ďalej potrebovať. Zatiaľ nájdeme informácie o VNC. V mojom prípade:

S pomocou môjho obľúbeného klienta (osobne používam Rammina) ideme cez VNC, v prípade potreby pomocou SSH port forwardingu. Dostaneme sa priamo do inštalačného programu FreeBSD. Potom je všetko ako obvykle - Ďalej, Ďalej, Ďalej, dostaneme nainštalovaný systém.

Základné príkazy

Poďme sa teraz pozrieť na základné príkazy pre prácu s KVM.

Získanie zoznamu všetkých virtuálnych počítačov:

sudo virsh list --all

Získanie informácií o konkrétnom virtuálnom počítači:

sudo virsh dominfo freebsd10

Spustite virtuálny stroj:

sudo virsh štart freebsd10

Zastaviť virtuálny stroj:

sudo virsh vypnutie freebsd10

Je ťažké poraziť virtuálny stroj (napriek názvu, toto nie vymazanie):

sudo virsh zničiť freebsd10

Reštartujte virtuálny počítač:

sudo virsh reboot freebsd10

Klonovať virtuálny stroj:

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

Povoliť/zakázať automatické spustenie:

sudo virsh autostart freebsd10
sudo virsh autostart --zakázať freebsd10

Spustiť virsh v dialógovom režime (všetky príkazy v dialógovom režime - ako je popísané vyššie):

sudovirsh

Úpravou vlastností virtuálneho počítača v XML, vrátane tu môžete zmeniť limit na množstvo pamäte atď.:

sudo virsh upraviť freebsd10

Dôležité! Komentáre z upraveného XML sú bohužiaľ odstránené.

Keď je virtuálny počítač zastavený, veľkosť disku sa dá zmeniť aj takto:

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

Dôležité! Vášmu hosťujúcemu OS sa s najväčšou pravdepodobnosťou nebude páčiť, že sa disk zrazu zväčšil alebo zmenšil. V najlepšom prípade sa spustí v núdzovom režime s návrhom na prerozdelenie disku. Toto asi nechcete robiť. Môže byť oveľa jednoduchšie spustiť nový virtuálny stroj a migrovať naň všetky údaje.

Zálohovanie a obnovenie sú pomerne jednoduché. Výstup dumpxml stačí niekde uložiť, aj obraz disku a potom ich obnoviť. na YouTube našiel video s ukážkou tohto procesu je všetko naozaj jednoduché.

Nastavenia siete

Zaujímavou otázkou je, ako zistiť, akú IP adresu dostal virtuálny stroj po načítaní? V KVM sa to robí šikovným spôsobom. Nakoniec som napísal nasledujúci skript Python:

#!/usr/bin/env python3

# skript virt-ip.py
# (c) 2016 Aleksander Alekseev
# http://webová stránka/

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

def print(str) :
print (str , file = sys.stderr )

if len(sys.argv)< 2 :
eprint("POUŽITIE: " + sys.argv [ 0 ] + " " )
eprint("Príklad: " + sys .argv [ 0 ] + " freebsd10" )
sys.exit(1)

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

ak podproces .call( "ktorý arping 2>&1 >/dev/null", shell = Pravda ) != 0 :
eprint("CHYBA: arping sa nenašiel" )
vytlačiť ( "Tip: spustite `sudo apt-get install arping`")
sys.exit(1)

Doména = sys.argv [ 1 ]

ak nie znovu .match ("^*$" , doména):
vytlačiť ( "CHYBA: neplatné znaky v názve domény")
sys.exit(1)

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

if domout == "" :
# chybové hlásenie už vytlačil dumpxml
sys.exit(1)

Doc = ElementTree.fromstring(domout)

# 1. zoznam všetkých sieťových rozhraní
# 2. spustiť `arping` na každom rozhraní paralelne
#3 grep odpovede
cmd= "(ifconfig | cut -d " " -f 1 | grep -E "." | " + \
"xargs -P0 -I IFACE arping -i IFACE -c 1 () 2>&1 | " + \
"grep "bytes from") || true"

pre dieťa v doc.iter() :
if child.tag == "mac" :
macaddr = dieťa.attrib["adresa"]
macout = podproces .check_output(cmd .format(macaddr) ,
shell=True)
print(macout.decode("utf-8" ) )

Skript pracuje s predvolenou sieťou aj premostenou sieťou, ktorej konfigurácii sa budeme venovať neskôr. V praxi je však oveľa pohodlnejšie nakonfigurovať KVM tak, aby hosťom prideľoval vždy rovnaké IP adresy. Ak to chcete urobiť, upravte nastavenia siete:

sudo virsh net-edit predvolene

... niečo také:

>



>

Po vykonaní týchto zmien


>

...a nahradiť ho niečím ako:




>

Reštartujeme hosťovský systém a skontrolujeme, či dostal IP cez DHCP z routera. Ak chcete, aby hosťovský systém mal statická IP adresa, toto je normálne nakonfigurované v rámci samotného hosťa.

program virt-manager

Tiež by vás mohol zaujímať program virt-manager:

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

Takto vyzerá jeho hlavné okno:

Ako môžete vidieť, virt-manager nie je len GUI pre virtuálne stroje bežiace lokálne. S ním môžete spravovať virtuálne stroje bežiace na iných hostiteľoch, ako aj prezerať si nádherné grafy v reálnom čase. Osobne považujem za obzvlášť výhodné vo virt-manager, že nemusíte prezerať konfigurácie, na ktorom porte beží VNC konkrétneho hosťujúceho systému. Virtuálny stroj jednoducho nájdete v zozname, dvakrát kliknete a získate prístup k monitoru.

Je tiež veľmi výhodné použiť virt-manager na vykonávanie vecí, ktoré by inak vyžadovali prácnu úpravu XML súborov a v niektorých prípadoch aj vykonávanie ďalších príkazov. Napríklad premenovanie virtuálnych strojov, nastavenie afinity CPU a podobné veci. Mimochodom, použitie afinity CPU výrazne znižuje vplyv hlučných susedov a vplyv virtuálnych strojov na hostiteľský systém. Vždy, keď je to možné, používajte ho.

Ak sa rozhodnete použiť KVM ako náhradu za VirtualBox, uvedomte si, že nemôžu medzi sebou zdieľať hardvérovú virtualizáciu. Aby KVM fungovalo na vašej ploche, budete musieť nielen zastaviť všetky virtuálne stroje vo VirtualBox a Vagrant, ale aj reštartovať systém. Osobne považujem KVM za oveľa pohodlnejší ako VirtualBox, prinajmenšom preto, že nevyžaduje spustenie príkazu nastavenie sudo /sbin/rcvboxdrv po každej aktualizácii jadra funguje s Unity primerane a vo všeobecnosti vám umožňuje skryť všetky okná.

Kimchi je webové rozhranie založené na HTML5 pre KVM. Poskytuje jednoduché a flexibilné rozhranie na vytváranie a správu hosťujúceho virtuálneho počítača. Kimchi je nainštalovaný a beží ako démon na hostiteľovi KVM. Spravuje hostí KVM pomocou libvirt. Kimchi rozhranie podporuje všetky najnovšie verzie prehliadačov s verziou -1, podporuje aj mobilné prehliadače.

Kimchi je možné nainštalovať na najnovšiu verziu RHEL, Fedora, openSUSE a Ubuntu. V tejto príručke som použil Ubuntu 14.10 ako hostiteľa KVM.

Pred konfiguráciou kimchi musíte nainštalovať nasledujúce 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-toolstools libredrpy python-libredrpy python-pam 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

Počas inštalácie balíkov sa vás systém opýta na nasledujúce podrobnosti.

1. OK v konfigurácii Postfixu.

2. Vyberte Internetová stránka na všeobecnom type konfigurácie pošty.

3. Zadajte svoje FQDN a potom vyberte OK.

Po inštalácii si stiahnite najnovšiu verziu kimchi z githubu.

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

Rozbaľte stiahnutý súbor.

$ unzip master.zip $ cd kimchi-master/

Zostavte kimchi pomocou nasledujúceho príkazu.

$ ./autogen.sh --system

$ make $ sudo make install # Voliteľné pri spustení zo zdrojového stromu

$ sudo kimchid --host=0.0.0.0

Prístup k kimchi pomocou webového prehliadača, https://localhost:8001. Budete požiadaní, aby ste sa prihlásili, použili svoje systémové poverenia, ktoré bežne používate na prihlásenie do systému.


Po prihlásení sa vám zobrazí stránka podobná nižšie. Toto zobrazuje zoznam spustených hosťujúcich virtuálnych počítačov na aktuálnom hostiteľovi, máte tlačidlá na vykonanie vypnutia, reštartovania a pripojenia ku konzole kliknutím na akciu.


Ak chcete vytvoriť nový hosťovský počítač, kliknite na znamienko + v pravom rohu. Ak použijete túto možnosť na vytvorenie stroja, vykoná sa to prostredníctvom šablón.


Šablóny môžete spravovať návštevou ponuky šablón. Ak chcete vytvoriť novú šablónu, kliknite na znamienko + v pravom rohu. Môžete vytvoriť šablónu pomocou obrázkov ISO, môžete umiestniť obrázky ISO na /var/lib/kimchi/isos alebo použiť vzdialený.


Úložnú oblasť môžete spravovať tak, že prejdete do ponuky úložiska, kde môžete pridať nové úložisko kliknutím na znamienko +. Podporuje pridávanie NFS, iSCSI a SCSI fibre channel storage.


Sieť je možné spravovať tak, že prejdete do menu siete, môžete vytvoriť novú sieť s izolovanou, NAT a premostenou sieťou.


Dnes sa mnohé úlohy, ktoré boli tradične prideľované niekoľkým fyzickým serverom, presúvajú do virtuálnych prostredí. Virtualizačné technológie sú žiadané aj vývojármi softvéru, keďže umožňujú komplexné testovanie aplikácií v rôznych operačných systémoch. Zároveň, čo zjednodušuje mnohé problémy, je potrebné riadiť samotné virtualizačné systémy a bez špeciálnych riešení sa nezaobídeme.

Tulák

Virtuálne stroj virtuálnej schránky je zaslúžene populárny medzi správcami a vývojármi, čo vám umožňuje rýchlo vytvárať potrebné prostredia pomocou GUI alebo rozhranie príkazového riadku. Ak počet virtuálnych počítačov nepresiahne tri, nenastanú žiadne ťažkosti pri nasadzovaní a správe, ale moderné projekty majú tendenciu získavať konfigurácie a v dôsledku toho sa získa veľmi zložitá infraštruktúra, s ktorou sa ťažko manipuluje. Toto je problém, ktorý má vyriešiť správca virtuálneho prostredia Vagrant, ktorý vám umožňuje vytvárať kópie virtuálnych počítačov s preddefinovanou konfiguráciou a dynamicky prerozdeľovať prostriedky VM (Provisioning) podľa potreby. V základnej distribúcii Vagrant pracuje s VirtualBoxom, no systém pluginov umožňuje pripojiť ďalší virtualizačný systém. Dnes je otvorený kód doplnku pre AWS a Rackspace Cloud a na komerčné predplatné je k dispozícii doplnok na podporu VMware Fusion/Workstation.

Vagrant nevytvára virtuálny stroj od začiatku. Pre pohodlie projekt ponúka niekoľko základných obrazov (boxov), ktoré sa importujú a následne použijú na rýchle nasadenie systému, už na základe boxov sa zostaví hosťovský OS s požadovanou konfiguráciou.

Chef a Puppet sú predinštalované v krabiciach, aby sa zjednodušilo nasadenie aplikácie. okrem toho požadované nastavenia možno nastaviť pomocou shellu. Prostredia zahŕňajú Plný set na spúšťanie a vývoj aplikácií v Ruby. SSH sa používa na prístup k VM, je možné vymieňať súbory cez zdieľaný adresár.

Napísal ho Vagrant pomocou Ruby a možno ho nainštalovať na akúkoľvek platformu, pre ktorú existujú komponenty VirtualBox a Ruby. Balíky pre Windows, Linux (deb a rpm) a OS X sú dostupné na stránke sťahovania.

Proces inštalácie a používania Ubuntu je jednoduchý. Stiahnite si balíčky VirtualBox a Vagrant a nainštalujte:

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

V čase písania tohto článku s najnovšími aktuálna verzia VirtualBox 4.2.14 mal problémy so spustením Vagrantu, takže je zatiaľ najlepšie použiť 4.2.12 alebo otestovať 4.2.15. Prípadne môžete urobiť:

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

prinesiem Alternatívna možnosť Vagrant inštalácie - pomocou Ruby:

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

Všetky nastavenia projektu sú vykonané v špeciálny súbor Vagrantfile. Aby ste šablónu nevytvárali ručne, môžete ju vygenerovať takto:

$ mkdir projekt $ cd projekt $ vagrant init

Teraz sa môžete pozrieť do vytvoreného konfiguračného súboru a vyplniť: Nastavenia VM (config.vm. ), možnosti pripojenia SSH (config.ssh.), parametre samotného Vagrantu (config.vagrant). Všetky sú dobre zdokumentované, význam niektorých je jasný a bez vysvetlenia.

V skutočnosti sa pri spustení používa niekoľko takýchto súborov, každý nasledujúci prepíše predchádzajúci: zabudovaný do Vagrant (nedá sa zmeniť), dodávaný s krabicami (zabalený pomocou prepínača "--vagrantfile"), umiestnený v ~/.vagrant .d a súbor projektu . Tento prístup vám umožňuje použiť predvolené nastavenia, ktoré prepíšu len to, čo je v konkrétnom projekte nevyhnutné.


Všetky inštalácie sa vykonávajú pomocou príkazu vagrant, zoznam dostupných kľúčov je možné zobraziť pomocou "-h". Po inštalácii nemáme ani jeden obrázok, spustený zoznam vagrant boxov zobrazí prázdny zoznam. Hotový box môže byť v lokálnom súborovom systéme alebo zapnutý vzdialený server, jeho názov je nastavený ako parameter, ktorý sa použije v projektoch. Napríklad používame oficiálny Box Ubuntu 12.04 LTS, ktorý ponúkajú vývojári Vagrant.

$ vagrant box pridať precízne64 http://files.vagrantup.com/precise64.box

Teraz je k nemu prístup z Vagrantfile:

config.vm.box = "precise64"

Aj keď je jednoduchšie to určiť hneď pri inicializácii projektu:

$ vagrant init precízny64

Najjednoduchší spôsob, ktorý nevyžaduje učenie sa šéfkuchára a bábky, je použiť na konfiguráciu VM štandardné príkazy shellu, ktoré je možné zapísať priamo do súboru Vagrantfile alebo ešte lepšie spojiť do skriptu, ktorý je takto prepojený:

Vagrant.configure("2") vykonajte |config| config.vm.provision:shell, :inline => koniec "script.sh".

Teraz sa pri spustení VM vykonajú všetky príkazy špecifikované v script.sh. Po spustení projektu sa vytvorí súbor ovf, jeho nastavenia je možné zobraziť pomocou grafického rozhrania VirtualBox alebo príkazu VBoxManage:

$ VBoxManage import /home/user/.vagrant.d/boxes/precise64/virtualbox/box.ovf Virtuálny systém 0: 0: Navrhovaný typ OS: "Ubuntu_64" (zmeniť pomocou "--vsys 0 --ostype "; použite "list ostypes" na zobrazenie všetkých možných hodnôt) 1: Navrhovaný názov VM "precise64" (zmeniť pomocou "--vsys 0 --vmname" ") 2: Počet CPU: 2 (zmeniť pomocou "--vsys 0 --cpus ") 3: Pamäť hosťa: 384 MB (zmeniť pomocou "--vsys 0 --memory ")

Nie vždy sú spokojní. dané podmienky, ale pomocou nastavení poskytovateľa môžete jednoducho zmeniť nastavenia konkrétneho virtuálneho počítača (pozrite si rady „zmena pomocou ...“):

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

Spustite a pripojte sa k systému cez SSH:

$ tulák hore $ tulák ssh

Na zastavenie VM použite parameter halt or cancel (druhý vymaže všetky súbory, nabudúce sa všetky operácie vykonajú od začiatku), ak ho potrebujete poslať do hibernácie - vagrant suspend , return - vagrant restore . Ako príklad práce s Chefom môžete použiť hotový recept, pomocou ktorého môžete nakonfigurovať 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") koniec

Ak chcete získať prístup k VM „zvonku“, budete musieť nakonfigurovať presmerovanie portov. V predvolenom nastavení sa vykonáva presmerovanie 22 -> 2222, čo vám umožní pripojiť sa cez SSH. Pridať do súboru Vagrantfile:

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

Na webový server je teraz možné pristupovať tak, že prejdete na http://127.0.0.1:1111/. Aby sa prostredie nekonfigurovalo zakaždým, je lepšie na jeho základe postaviť hotový balík.

$ balík vagrant --vagrantfile Vagrantfile --output project.box

Teraz je možné súbor project.box distribuovať ďalším správcom, vývojárom alebo bežným používateľom, ktorí ho zahrnú pomocou príkazu vagrant box add project.box.

Convirt

Xen/KVM virtualizačné systémy vydané v rámci bezplatných licencií nemajú užívateľsky prívetivé rozhraniečo sa často vykladá nie v ich prospech. Tento nedostatok sa však dá ľahko odstrániť. ConVirt vám umožňuje nasadiť virtuálne stroje na viacero serverov Xen a KVM jediným kliknutím pomocou ľahko použiteľného rozhrania. K dispozícii sú všetky potrebné operácie s virtuálnymi strojmi: spustenie, zastavenie, vytváranie snímok, riadenie a prerozdeľovanie zdrojov, pripojenie k VM cez VNC, automatizácia úloh správy. Technológia Ajax robí rozhranie interaktívnym a podobným desktopovej aplikácii. Napríklad VM možno jednoducho pretiahnuť z jedného servera na druhý. Rozhranie nie je lokalizované, no ovládanie je intuitívne.


Združovanie serverov vám dáva možnosť konfigurovať a spravovať virtuálne stroje a prostriedky na úrovni serverovej oblasti, a nie na úrovni jedného servera. Agenti nie sú nainštalovaní na virtuálnych systémoch, je potrebný iba balík convirt-tool na fyzickom serveri. To zjednodušuje správu a nasadenie.

Po pridaní nového servera bude ConVirt automaticky zhromažďovať údaje o jeho konfigurácii a výkone, pričom poskytuje súhrnné informácie na niekoľkých úrovniach – od jednotlivých virtuálny prístroj, fyzický server do celého fondu. Zhromaždené údaje sa používajú na automatické hosťovanie nových hosťujúcich systémov. Tieto informácie sa zobrazujú aj vo forme vizuálnych grafov.

Na vytváranie virtuálnych strojov sa používajú šablóny - popisy nastavení virtuálnych strojov, obsahujúce údaje o pridelených zdrojoch, cestu k súborom OS a ďalšie nastavenia. Po inštalácii je k dispozícii niekoľko možností. hotové šablóny, ale ak je to potrebné, je ľahké ich vytvoriť sami.

Podporované sú všetky technológie: vyrovnávanie záťaže, migrácia za chodu, virtuálne disky s rastúcou kapacitou, umožňujúce využívať zdroje podľa potreby a mnoho ďalších funkcií implementovaných v Xen a KVM. Na prerozdelenie zdrojov nepotrebujete zastaviť VM.

Implementovaná možnosť spravovať virtuálne prostredie pre viacerých administrátorov s možnosťou auditu a kontroly ich akcií.

ConVirt je vyvinutý spoločnosťou Convirture s využitím konceptu open core (open basis), kedy je so zdrojovými textami voľne distribuovaná len základná sada funkcií, zvyšok je dostupný v komerčnej verzii. Verzii s otvoreným zdrojom chýba podpora vysokej dostupnosti, integrácia VLAN, redundancia a obnova, správa príkazového riadku, upozornenia a oficiálna podpora.

Pri vývoji bol použitý framework TurboGears2, knižnice ExtJs a FLOT, na ukladanie informácií bol použitý MySQL, dnsmasq bol použitý ako DHCP a DNS server. Požadovaný balík možno nájsť v úložiskách populárnych distribúcií Linuxu.

Karesansui

Boli implementované všetky funkcie na správu virtuálnych prostredí: inštalácia OS, vytváranie konfigurácií pre diskový subsystém a virtuálne sieťové karty, správa kvót, replikácia, zmrazovanie VM, vytváranie snímok, prezeranie podrobných štatistík a údajov denníkov, monitorovanie sťahovania. Z jednej konzoly môžete spravovať viacero fyzických serverov a virtuálnych strojov, ktoré sú na nich hosťované. Je možná práca viacerých používateľov s oddelením práv. Vďaka tomu sa vývojárom podarilo implementovať do prehliadača virtuálne prostredie, ktoré umožňuje plnohodnotnú správu systémov.

SQLite, ktorý napísal Karesansui v Pythone, sa používa ako DBMS pre systém s jedným uzlom. Ak plánujete spravovať inštalácie Karesansui hosťované na viacerých fyzických serveroch, mali by ste použiť MySQL alebo PostgreSQL.

Karesansui môžete nasadiť na ľubovoľný Linux. Samotní vývojári uprednostňujú CentOS (pre ktorý má stránka podrobné pokyny), aj keď Karesansui funguje dobre na Debiane a Ubuntu. Pred inštaláciou musíte splniť všetky závislosti uvedené v dokumentácii. Ďalej sa spustí inštalačný skript a inicializuje sa databáza. Ak sa používa konfigurácia viacerých serverov, stačí zadať externú databázu.

Následná práca plne kompenzuje nepohodlie pri inštalácii. Všetky nastavenia sú rozdelené do siedmich záložiek, ktorých účel je jasný už z názvu: Hosť, Nastavenia, Úloha, Sieť, Úložisko, Správa a Protokol. V závislosti od roly používateľa, nie všetky mu budú dostupné.

Nový VM môžete vytvoriť z lokálneho súboru ISO alebo zadaním prostriedku HTTP/FTP s inštalačnými obrazmi. Budete tiež musieť nastaviť zostávajúce atribúty: názov systému, ktorý sa zobrazí v zozname, názov siete (názov hostiteľa), technológiu virtualizácie (Xen alebo KVM), veľkosť pamäte RAM a pevného disku (veľkosť pamäte a veľkosť disku) - a vyberte obrázok, ktorý bude zodpovedať virtuálnemu OS, vďaka čomu bude rýchly vizuálna voľba v konzole.

WebVirtMgr

Možnosti opísaných riešení sú často nadbytočné a ich inštalácia nie je pre správcu s malými skúsenosťami vždy jasná. Ale aj tu existuje cesta von. Služba centralizovaného riadenia virtuálneho stroja WebVirtMgr vznikla ako jednoduchá náhrada za virt-manager, ktorý zabezpečí pohodlnú prácu s VM pomocou prehliadača s nainštalovaným Java pluginom. Podporuje sa správa nastavení KVM: vytváranie, inštalácia, konfigurácia, spustenie VM, snímky a zálohovanie virtuálnych strojov. Poskytuje správu sieťového fondu a úložného priestoru, prácu s ISO, klonovanie obrázkov, prezeranie využitia CPU a RAM. K virtuálnemu stroju sa pristupuje cez VNC. Všetky transakcie sa zaznamenávajú do denníkov. Pomocou jedinej inštalácie WebVirtMgr môžete spravovať viacero serverov KVM. Na pripojenie k nim sa používa RPC libvirt (TCP/16509) alebo SSH.


Rozhranie je napísané v jazyku Python/Django. Na inštaláciu budete potrebovať server Linux. Distribuované v zdrojových a RPM balíkoch pre CentOS, RHEL, Fedora a Oracle Linux 6. Samotný proces nasadenia je jednoduchý a dobre popísaný v projektovej dokumentácii (v ruštine), stačí nakonfigurovať libvirt a nainštalovať webvirtmgr. Celý proces trvá päť minút. Po pripojení k ovládaciemu panelu vyberte Pridať pripojenie a zadajte parametre uzla, potom môžeme nakonfigurovať VM.

Skriptovanie vytvorenia VM

Najjednoduchší skript na vytvorenie a spustenie virtuálneho počítača pomocou 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 Opravené 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 modulevm $(vmname) --vrde na obrazovke VBoxHeadless --startvm $(vmname)

Proxmox VE

Predchádzajúce riešenia sú dobré pre situácie, kde už existuje určitá infraštruktúra. Ak ho však musíte iba nasadiť, mali by ste premýšľať o špecializovaných platformách, ktoré vám umožnia rýchlo dosiahnuť požadovaný výsledok. Príkladom je Proxmox Virtual Environment, čo je linuxová distribúcia (založená na Debian 7.0 Wheezy), ktorá vám umožňuje rýchlo vybudovať infraštruktúru virtuálne servery pomocou OpenVZ a KVM a je prakticky na rovnakej úrovni ako produkty ako VMware vSphere, MS Hyper-V a Citrix XenServer.


V skutočnosti by sa mal systém iba nainštalovať (pár jednoduchých krokov), všetko ostatné už funguje po vybalení. Potom môžete pomocou webového rozhrania vytvoriť virtuálny počítač. Na tento účel je najjednoduchšie použiť šablóny a kontajnery OpenVZ, ktoré sa načítajú z externých zdrojov priamo z rozhrania jedným kliknutím (ak manuálne, tak skopírujte do adresára /var/lib/vz/template). Šablóny je však možné vytvárať aj klonovaním už vytvorených systémov v režime prepojenia. Táto voľba šetrí miesto na disku, pretože všetky prepojené prostredia používajú iba jednu zdieľanú kópiu údajov referenčnej šablóny bez duplikovania informácií. Rozhranie je lokalizované a zrozumiteľné, pri práci s ním nepociťujete žiadne zvláštne nepríjemnosti.

Existuje podpora pre klastre, nástroje pre Rezervovať kópiu virtuálne prostredia, je možné migrovať VM medzi uzlami bez zastavenia práce. Riadenie prístupu k existujúcim objektom (VM, úložisko, uzly) je implementované na základe rolí, podporované sú rôzne autentifikačné mechanizmy (AD, LDAP, Linux PAM, vstavaný Proxmox VE). Webové rozhranie poskytuje možnosť prístupu k VM pomocou konzol VNC a SSH, môžete si prezerať stav úloh, protokoly, monitorovacie údaje a mnoho ďalšieho. Je pravda, že niektoré operácie špecifické pre HA systémy budú musieť byť stále vykonávané starým spôsobom v konzole, ako je vytvorenie autorizovaného pripojenia iSCSI, konfigurácia klastra, vytvorenie multipath a niektoré ďalšie operácie.

Systémové požiadavky sú nízke: x64 CPU (najlepšie s Intel VT/AMD-V), 1+ GB RAM. Projekt ponúka hotový ISO obraz a úložisko pre Debian.

Záver

Všetky opísané riešenia sú dobré svojím vlastným spôsobom a robia vynikajúcu prácu s úlohami. Stačí si vybrať najvhodnejšie pre konkrétnu situáciu.

Na Ubuntu sa odporúča používať hypervízor KVM (správca virtuálnych strojov) a knižnicu libvirt ako nástroj na jeho správu. Libvirt obsahuje sadu softvérových rozhraní API a vlastných aplikácií na správu virtuálnych strojov (VM) virt-manager (grafické rozhranie, GUI) alebo virsh ( príkazový riadok, CLI). Ako alternatívnych manažérov môžete použiť convirt (GUI) alebo convirt2 (WEB rozhranie).

V súčasnosti je v Ubuntu oficiálne podporovaný iba hypervízor KVM. Tento hypervízor je súčasťou kódu jadra operačného systému. Linuxové systémy. Na rozdiel od Xen, KVM nepodporuje paravirtualizáciu, čo znamená, že ak ju chcete použiť, váš CPU musí podporovať technológie VT. Môžete skontrolovať, či váš procesor podporuje túto technológiu spustením príkazu v termináli:

Ak je výsledkom správa:

INFO: /dev/kvm existuje Je možné použiť zrýchlenie KVM

takže KVM bude fungovať bez problémov.

Ak je výstupom správa:

Váš procesor nie podpora KVM rozšírení Zrýchlenie KVM sa NEDÁ použiť

potom môžete stále používať virtuálny stroj, ale bude oveľa pomalší.

    Nainštalujte ako hosťujúce 64-bitové systémy

    Prideľte hosťom viac ako 2 GB pamäte RAM

Inštalácia

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

Ide o inštaláciu na server bez X, t.j. neobsahuje grafické rozhranie. Môžete ho nainštalovať pomocou príkazu

sudo apt-get install virt-manager

Potom sa v ponuke objaví položka „Správca virtuálnych strojov“ a s vysokou pravdepodobnosťou bude všetko fungovať. Ak nejaké problémy pretrvávajú, budete si musieť prečítať pokyny na wiki v anglickom jazyku.

Vytvorte hosťovský systém

Postup vytvorenia hosťujúceho systému pomocou grafického rozhrania je pomerne jednoduchý.

Ale textový režim sa dá popísať.

qcow2

Pri tvorbe systému pomocou grafického rozhrania ako pevný disk budete vyzvaní, aby ste vybrali existujúci obrazový súbor alebo blokové zariadenie, alebo aby ste ho vytvorili nový súbor s nespracovanými (RAW) dátami. Toto však zďaleka nie je jediný dostupný formát súboru. Zo všetkých typov diskov uvedených v man qemu-img je qcow2 najflexibilnejší a najaktuálnejší. Podporuje snímky, šifrovanie a kompresiu. Musí byť vytvorený pred vytvorením nového hosťujúceho systému.

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

Podľa toho istého muža qemu-img predbežné pridelenie metadát (-o preallocation=metadata) spôsobí, že disk je spočiatku o niečo väčší, ale poskytuje lepší výkon, keď obraz potrebuje rásť. V skutočnosti sa v tomto prípade táto možnosť vyhne nepríjemnej chybe. Vytvorený obrázok spočiatku zaberá menej ako megabajt miesta a podľa potreby rastie na špecifikovanú veľkosť. Hosťujúci systém by mal okamžite vidieť túto konečnú špecifikovanú veľkosť, avšak počas fázy inštalácie môže vidieť skutočnú veľkosť súboru. Prirodzene, odmietne byť nainštalovaný na 200 kb pevný disk. Chyba nie je špecifická pre Ubuntu, objavuje sa aspoň v RHEL.

Okrem typu obrazu si neskôr môžete vybrať spôsob pripojenia – IDE, SCSI alebo Virtio Disk. Výkon diskového subsystému bude závisieť od tejto voľby. Jednoznačne správna odpoveď neexistuje, treba si vybrať na základe úlohy, ktorá bude pridelená hosťovskému systému. Ak je hosťovský systém vytvorený "na videnie", potom bude stačiť akákoľvek metóda. Vo všeobecnosti je I / O zvyčajne prekážkou virtuálneho stroja, takže pri vytváraní vysoko zaťaženého systému by sa tento problém mal brať čo najzodpovednejšie.

Píšem túto poznámku, aby som to demonštroval inštalácia krok za krokom a nastavenie virtuálneho stroja Linux založeného na KVM. Už dávnejšie som písal o virtualizácii, kde som použil nádherný .

Teraz stojím pred otázkou prenájmu dobrý server s veľkým objemom Náhodný vstup do pamäťe a objemné pevný disk. Nechcem však spúšťať projekty priamo na hostiteľskom počítači, takže ich rozdelím na samostatné malé virtuálne servery s OS Linux alebo kontajnery dockerov (o nich budem hovoriť v inom článku).

Všetky moderné cloud hostingy fungujú na rovnakom princípe, t.j. Hoster na dobrom hardvéri vybuduje veľa virtuálnych serverov, ktoré sme zvykli nazývať VPS / VDS, a distribuuje ich používateľom alebo automatizuje tento proces (ahoj, DigitalOcean).

KVM (kernel-based virtual machine) je linuxový softvér, ktorý využíva procesorový hardvér kompatibilný s x86 na prácu s virtualizačnou technológiou Intel VT/AMD SVM.

Inštalácia KVM

Vykonám všetky machinácie na vytvorenie virtuálneho stroja na OS Ubuntu 16.04.1 LTS. Skontrolujte, či vaše procesy podporujú hardvérovú virtualizáciu zapnutú Na báze Intel VT/AMD SVM, vykonajte:

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

Ak terminál nie je prázdny, potom je všetko v poriadku a KVM je možné nainštalovať. Ubuntu oficiálne podporuje iba hypervízor KVM (súčasť linuxového jadra) a odporúča použiť knižnicu libvirt ako nástroj na jeho správu, čo urobíme ďalej.

Podporu virtualizácie hardvéru v Ubuntu môžete skontrolovať aj pomocou príkazu:

Ak uspejete, uvidíte niečo takéto:

INFO: /dev/kvm existuje Je možné použiť zrýchlenie KVM

Nainštalujte balíky pre prácu s KVM:

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

Ak máte prístup ku grafickému shellu systému, môžete nainštalovať správcu GUI libvirt:

sudo apt-get install virt-manager

Používanie virt-manager je pomerne jednoduché (nie je náročnejšie ako VirtualBox), preto sa tento článok zameria na konzolovú verziu inštalácie a konfigurácie virtuálneho servera.

Inštalácia a konfigurácia virtuálneho servera

V konzolovej verzii inštalácie, konfigurácie a správy systému je nepostrádateľným nástrojom utilita virsh (doplnok pre knižnicu libvirt). Má veľké množstvo možností a parametrov, Detailný popis možno získať takto:

muž virsh

alebo zavolajte štandardnú "pomoc":

Virsh pomoc

Pri práci s virtuálnymi servermi vždy dodržiavam nasledujúce pravidlá:

  1. skladujem obrázky iso OS v adresári /var/lib/libvirt/boot
  2. Obrazy virtuálneho počítača ukladám do adresára /var/lib/libvirt/images
  3. Každému novému virtuálnemu stroju som explicitne nastavil jeho vlastnú statickú IP adresu DHCP server hypervízor.

Začnime inštalovať prvý virtuálny stroj (64-bitový 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 stiahnutí obrazu spustite inštaláciu:

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,veľkosť=20,zbernica=virtio

Preložením všetkých týchto parametrov do „ľudskej reči“ sa ukáže, že vytvárame virtuálny stroj s OS Ubuntu 16.04, 1024 MB RAM, 1 procesor, štandardná sieťová karta (virtuálny stroj pôjde na internet akoby kvôli NAT), 20 GB HDD.

Stojí za to venovať pozornosť parametrom --os-variant, informuje hypervízor, pod akým operačným systémom sa majú nastavenia prispôsobiť.
Zoznam dostupných možností OS možno získať spustením príkazu:

osinfo dotaz os

Ak vo vašom systéme takýto nástroj nie je, nainštalujte:

sudo apt-get nainštalovať libosinfo-bin

Po spustení inštalácie sa v konzole zobrazí nasledujúca správa:

Inštalácia domény stále prebieha. Ak chcete dokončiť proces inštalácie, môžete sa znova pripojiť ku konzole.

Toto je bežná situácia, budeme pokračovať v inštalácii cez VNC.
Pozeráme sa, ktorý port bol získaný z nášho virtuálneho počítača (napríklad v blízkom termináli):

Virsh dumpxml ubuntu1604 ... ...

Port 5900, na miestnej adrese 127.0.0.1. Ak sa chcete pripojiť k VNC, musíte použiť presmerovanie portov cez ssh. Predtým, ako to urobíte, skontrolujte, či je na démone ssh povolené presmerovanie tcp. Ak to chcete urobiť, prejdite do nastavení sshd:

Cat /etc/ssh/sshd_config | grep AllowTcpForwarding

Ak sa nič nenašlo alebo vidíte:

AllowTcpForwarding č

Potom upravíme konfiguráciu pre

AllowTcpForwarding áno

a reštartujte sshd.

Konfigurácia presmerovania portov

Spustite príkaz na lokálnom počítači:

Ssh -fN -l login -L 127.0.0.1:5900:localhost:5900 server_ip

Tu sme nakonfigurovali presmerovanie ssh portu z lokálneho portu 5900 na port servera 5900. Teraz sa môžete pripojiť k VNC pomocou ľubovoľného klienta VNC. Preferujem UltraVNC kvôli jeho jednoduchosti a pohodliu.

Po úspešnom pripojení sa na obrazovke zobrazí štandardné uvítacie okno inštalácie Ubuntu:

Po dokončení inštalácie a zvyčajnom reštarte sa zobrazí prihlasovacie okno. Po prihlásení určíme IP adresu novovyrazeného virtuálneho stroja, aby sme ho neskôr zmenili na statický:

ifconfig

Pamätáme si a ideme k hostiteľskému stroju. Vytiahneme mac-adresu „sieťovej“ karty virtuálneho počítača:

Virsh dumpxml ubuntu1604 | grep "mac adresa"

Zapamätajte si našu mac adresu:

Úprava sieťových nastavení hypervízora:

sudo virsh net-edit predvolene

Hľadáme DHCP a pridáme toto:

Mali by ste dostať niečo takéto:

Aby sa nastavenia prejavili, musíte reštartovať server DHCP hypervízora:

sudo virsh net-destroy predvolená sudo virsh net-start predvolená služba sudo libvirt-bin reštart

Potom virtuálny počítač reštartujeme, teraz bude mať vždy priradenú IP adresu - 192.168.122.131.

Existujú aj iné spôsoby, ako nastaviť statickú IP pre virtuálny počítač, napríklad priamou úpravou sieťových nastavení v hosťujúcom systéme, ale tu je to na vašej spokojnosti. Práve som ukázal možnosť, ktorú ja sám najradšej používam.

Ak sa chcete pripojiť k terminálu virtuálneho počítača, spustite:

ssh 192.168.122.131

Auto je pripravené na boj.

Virsh: zoznam príkazov

Ak chcete zobraziť spustených virtuálnych hostiteľov (všetky dostupné je možné získať pridaním --all):

sudo virsh zoznam

Hostiteľa môžete reštartovať:

Sudo virsh reštartujte $VM_NAME

Zastavte virtuálny stroj:

sudo virsh stop $VM_NAME

Vykonajte zastavenie:

sudo virsh zničiť $VM_NAME

sudo virsh štart $VM_NAME

Vypnúť:

sudo virsh vypnutie $VM_NAME

Pridať do automatického spustenia:

sudo virsh autostart $VM_NAME

Veľmi často je potrebné klonovať systém, aby ho bolo možné v budúcnosti použiť ako rámec pre iné virtuálne operačné systémy; na tento účel sa používa nástroj virt-clone.

Virt-klon --pomoc

Klonuje existujúci virtuálny stroj a mení údaje citlivé na hostiteľa, ako je napríklad adresa mac. Heslá, súbory a ďalšie informácie špecifické pre používateľa v klone zostávajú rovnaké. Ak bola na klonovanom virtuálnom stroji IP adresa zadaná manuálne, môžu nastať problémy s prístupom SSH ku klonu z dôvodu konfliktu (2 hostitelia s rovnakou IP).

Okrem inštalácie virtuálneho stroja cez VNC je možné použiť aj X11Forwarding cez utilitu virt-manager. Na Windows sa na to dajú použiť napríklad Xming a PuTTY.