Halo Guys, pada hari ini saya membagikan sedikit jurnal saya mengenai KVM + Webvirt. KVM adalah teknologi virtualisasi yang dikembangkan oleh linux. Nah KVM sendiri dapat berjalan di hampir semua jenis distro linux asalkan processor pada mesin mempunyai fitur virtualisasi. Webvirt digunakan sebagai User Interface dari KVM sendiri, secara default KVM sudah mempunyai User Interface sendiri dengan Virtual Machine Manager akan tetapi dalam case kali ini Centos saya tidak terinstall Desktop Environment. Maka dari itu digunakanlah Webvirt sebagai UI dari KVM untuk mempermudah penggunaan KVM. Webvirt sendiri terhubung dengan KVM melalui libvirt, libvirt adalah virtualization API.
sebelum mulai melakukan instalasi apapun ada baiknya kita cek CPU kita untuk memastikan bahwa CPU kita support untuk virtualisasi, agar ujung-ujungnya tidak mubasir hehehe.
Untuk Intel CPU:
grep vmx /proc/cpuinfo
untuk AMD CPU:
grep svm /proc/cpuinfo
Seperti biasanya, lakukan update dan instalasi EPEL(Extra Package to Enterprise Linux) repo dahulu. kita gunakan EPEL karena ada beberapa package yang akan kita install tidak terdapat di repository official Centos.
yum -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
yum -y install epel.release
yum -y update
Selanjutnya lakukan instalasi KVM:
yum -y install kvm libvirt
setelah selesai instalasi KVM, edit beberapa file libvirt untuk mendukung koneksi KVM dengan Webvirt.
edit:
vi /etc/sysconfig/libvirtd
uncomment:
LIBVIRTD_ARGS="--listen"
edit:
vi /etc/libvirt/libvirtd.conf
tambahkan:
listen_tls = 0
listen_tcp = 1
lakukan restart pada libvirt:
systemctl restart libvirtd
buat user libvirt dan lakukan verifikasi. User ini nantinya kan digunakan untuk menyambunkan antara Webvirt dengan libvirt:
saslpasswd2 -a libvirt gulgul
sasldblistusers2 -f /etc/libvirt/passwd.db
Firewall di centos memiliki default konfigurasi deny, maka dari itu kita perlu allow sebuah port untuk menjalankan libvirt:
firewall-cmd --permanent --add-port 16509/tcp
firewall-cmd --reload
firewall-cmd --list-all
selanjutnya lakukan tes koneksi ke libvirt:
virsh -c qemu+tcp://IP_ADDRESS_HOST/system nodeinfo
Setelah libvirt dan KVM telah siap, kemudian lakukan instalasi WebVirtMgr. referensi instalasi ini dapat dapat dilihat dari: Referensi: https://github.com/retspen/webvirtmgr/wiki/Install-WebVirtMgr
Pertama-tama lakukan instalasi paket pendukung untuk WebVirtMgr ini. Salah satunya karena WebVirtMgr ini dibuat menggunakan python, maka kita perlu melakukan instalasi python.
yum -y install git python-pip libvirt-python libxml2-python python-websockify supervisor nginx gcc python-devel
pip install numpy
pip install --upgrade pip
Selanjutnya lakukan instalasi WebVirtMgr ini, kita akan mengcloning WebVirtMgr dari repository officialnya di github.com.
git clone git://github.com/retspen/webvirtmgr.git
cd webvirtmgr
pip install -r requirements.txt
./manage.py syncdb
./manage.py collectstatic
cd ..
setelah melakukan instalasi, buat direktori untuk halaman kita dan pindahkan direktori webvirtmgr ke direktori baru tersebut, sehingga kita dapat mengaksesnya melalu browser nantinya
mkdir /var/www
mv webvirtmgr /var/www
Selanjutnya konfigurasikan Policy pada SELinux sehingga webserver kita dapat terhubung ke jaringan kita.
setsebool httpd_can_network_connect true
lalu setup supervisor pada webvirtmgr, dengan tujuan untuk menjalankan webvirtmgr berjalan diatas python dan nginx:
chown -R nginx:nginx /var/www/webvirtmgr
edit:
vi /etc/supervisor.d/webvirtmgr.ini
tambahkan/edit bagian [program:webvirtmgr]
command=/usr/bin/python /var/www/webvirtmgr/manage.py run_gunicorn -c /var/www/webvirtmgr/conf/gunicorn.conf.py
directory=/var/www/webvirtmgr
autostart=true
autorestart=true
logfile=/var/log/supervisor/webvirtmgr.log
log_stderr=true
user=nginx
tambahkan/edit bagian [program:webvirtmgr-console]
command=/usr/bin/python /var/www/webvirtmgr/console/webvirtmgr-console
directory=/var/www/webvirtmgr
autostart=true
autorestart=true
stdout_logfile=/var/log/supervisor/webvirtmgr-console.log
redirect_stderr=true
user=nginx
selanjutnya edit konfigurasi WebVirtMgr sehingga WebVirtMgr dapat diakses dari luar:
vi /var/www/webvirtmgr/conf/gunicorn.conf.py
edit bagian ini:
bind = '127.0.0.1:8000'
menjadi:
bind = 'IP_ADDRESS_HOST:8000'
jangan lupa restart service supervisornya karena kita telah melakukan perubahan:
systemctl restart supervisord
seperti yang sudah dijelaskan diatas bahwa default-konfigurasi firewall di centos adalah deny maka kita harus menambahkan konfigurasi allow kepada beberapa port yang akan kita gunakan
firewall-cmd --permanent --add-port 8000/tcp
firewall-cmd --permanent --add-port 6080/tcp
firewall-cmd --permanent --add-port 5900-5999/tcp
firewall-cmd --reload
firewall-cmd --list-all
Apabila dunia dalam keadaan yang baik-baik saja maka WebVirtMgr akan dapat kita buka di browser dengan alamat
http://host_ip_address:8000
catatan tambahan bila terjadi error:
apabila terjadi error : failed to connect socket to ‘/var/run/libvirt/virtlogd-sock’
maka jalankan ulan service virtlogd
systemctl status virtlogd
systemctl enable virtlogd
systemctl restart virtlogd
apabila terjadi error : could not load PC BIOS ‘bios-256k.bin
maka buat symlink bios-256k
yum -y install seabios.x86_64
ln -s /usr/share/seabios/bios.bin /usr/share/seabios/bios-256k.bin
systemctl restart libvirtd
systemctl status libvirtd