Wirtualizacja KVM + interfejs WEB

pic_disp.php

Witam, dzis poradnik dotyczący informacji – instalacji i konfiguracji systemu wirtualizacji KVM na serwerze opartym o system Ubuntu/Debian.

Bazowac będziemy na KVM (libvirt) – paczka dla systemu Ubuntu 14.04/Debiana 8, interfejs web WebVirtMgr, serwer www reverse-proxy Tengine – czyli zmodyfikowany nginx (o tym będzie osobny poradnik).

 

Instalacja dla Ubuntu 14.04 LTS oraz Debian 8

1. Repozytoria – tylko UBUNTU 14.04

rm /etc/apt/sources.list ; wget http://pliki.linuxiarz.pl/kvm/sources.list -O /etc/apt/sources.list

2. Instalacja wirtualizacji KVM

wget -O - http://pliki.linuxiarz.pl/kvm/libvirt.sh | sudo sh

3. Instalacja wymaganych pakietow do pracy z narzędziami “graficznymi” (web interfejsem)

apt install git python-pip python-libvirt python-libxml2 novnc supervisor nano nova-novncproxy -y

Instalacja bibliotek pythona i Django

git clone git://github.com/retspen/webvirtmgr.git
cd webvirtmgr
pip install -r requirements.txt

Konfiguracja użytkownuka “root” dla interfejsu WebVirtMgr

./manage.py syncdb

przykład:

You just installed Django's auth system, which means you don't have any superusers defined.
Would you like to create one now? (yes/no): yes
Username (leave blank to use 'root'):
Email address:
Password:
Password (again):
Superuser created successfully.
Installing custom SQL ...
Installing indexes ...
Installed 6 object(s) from 1 fixture(s)

I na koniec: (wpisujemy “yes”)

./manage.py collectstatic

Instalacja w katalogu domowym:

cd ..
mv webvirtmgr /home/
chown -R www-data:www-data /home/webvirtmgr

Konfiguracja wirtualizacji – do wsparcia interfejsu Web

wget http://pliki.linuxiarz.pl/kvm/webvirtmgr.conf -O /etc/supervisor/conf.d/webvirtmgr.conf

4. Instalacja serwera www pracującego jako reverse-proxy:

4.1 UBUNTU 14.04

apt install fontconfig-config fonts-dejavu-core libfontconfig1 libgd3 libjbig0 liblua5.1-0 libperl5.18 libxpm4 libxslt1.1 libpython-stdlib libpython2.7-minimal libpython2.7-stdlib python python-minimal python2.7 python2.7-minimal fcgiwrap ssl-cert libossp-uuid16 libtiff5 -y

wget http://kompilacje.linuxiarz.pl/Ubuntu%2014.04%20LTS/Tengine-2.2.0/nginx-common_2-tengine-linuxiarz.pl_all.deb
wget http://kompilacje.linuxiarz.pl/Ubuntu%2014.04%20LTS/Tengine-2.2.0/nginx-doc_2-tengine-linuxiarz.pl_all.deb
wget http://kompilacje.linuxiarz.pl/Ubuntu%2014.04%20LTS/Tengine-2.2.0/nginx-extras_2-tengine-linuxiarz.pl_amd64.deb
wget http://kompilacje.linuxiarz.pl/Ubuntu%2014.04%20LTS/Tengine-2.2.0/nginx_2-tengine-linuxiarz.pl_all.deb
dpkg -i nginx-common_2-tengine*.deb nginx_2-tengine*.deb nginx-extras_2-tengine*.deb nginx-doc_2-tengine*.deb

Konfiguracja v-hosta:

rm /etc/nginx/conf.d/default.conf
wget http://pliki.linuxiarz.pl/kvm/default.conf -O /etc/nginx/conf.d/default.conf

4.2 DEBIAN 8

apt install fontconfig-config fonts-dejavu-core libfontconfig1 libgd3 libjbig0 liblua5.1-0 libperl5.20 libtiff5 libxpm4 libxslt1.1 libpython-stdlib libpython2.7-minimal libpython2.7-stdlib python python-minimal python2.7 python2.7-minimal fcgiwrap ssl-cert libossp-uuid16 -y

wget http://kompilacje.linuxiarz.pl/Debian_8/Tengine-2.2.0/nginx-common_2-tengine-linuxiarz.pl_all.deb
wget http://kompilacje.linuxiarz.pl/Debian_8/Tengine-2.2.0/nginx-doc_2-tengine-linuxiarz.pl_all.deb
wget http://kompilacje.linuxiarz.pl/Debian_8/Tengine-2.2.0/nginx-extras_2-tengine-linuxiarz.pl_amd64.deb
wget http://kompilacje.linuxiarz.pl/Debian_8/Tengine-2.2.0/nginx_2-tengine-linuxiarz.pl_all.deb
dpkg -i nginx-common_2-tengine*.deb nginx_2-tengine*.deb nginx-extras_2-tengine*.deb nginx-doc_2-tengine*.deb

Konfiguracja v-hosta:

rm /etc/nginx/conf.d/default.conf
wget http://pliki.linuxiarz.pl/kvm/default.conf -O /etc/nginx/conf.d/default.conf

5. Restart usług:

service supervisor stop
service supervisor start
service nginx stop
service nginx start

Pobranie przykładowego obrazu ISO

ln -s /var/lib/libvirt/images /home/obrazy
cd /home/obrazy ; wget http://cdimage.debian.org/cdimage/weekly-builds/amd64/iso-cd/debian-testing-amd64-netinst.iso

6. Po tym, w przeglądarce (domyślny port www – 80) powinien ukazać się interfejs w którym ustawiasz “sposób” podłączenia do systemu wirtualicji, konfigurujesz sieć, storage itp., oraz tworzysz vm’ke itd..

7. Jeśli nie masz dodatkowych adresów IP to możesz “routować” z głównego interfejsu swojego hosta konkretne porty do maszyn wirtualnych.
Przykładowe polecenie dla maszyny wirtualnej o adresie IP 192.168.122.176 i przekierowaniu do portu 22 (SSH) – port 2222

iptables -t nat -I PREROUTING -p tcp -d 167.114.227.xxx --dport 2222 -j DNAT --to-destination 192.168.122.176:22
iptables -I FORWARD -m state -d 192.168.122.0/24 --state NEW,RELATED,ESTABLISHED -j ACCEPT