Virtualisasi Infrastruktur dengan oVirt
oVirt adalah virtualization platform untuk mengelola infrastruktur datacenter. Hypervisor yang dipakai adalah KVM
, lalu libvirt
digunakan sebagai interface lewat API dan berkomunikasi dengan VDSM
sehingga dapat hadir dalam bentuk tampilan Web. Artikel ini hanya membahas setup oVirt Node dengan Self-hosted Engine hingga menjalankan guest VM.
Tentang oVirt
Pada awalnya oVirt adalah project open source bernama Solid ICE, dikembangkan oleh perusahaan Qumranet. Lalu Red Hat mengakuisisi project tersebut dan mengganti namanya menjadi oVirt, kedepannya oVirt menjadi upstream dari produk bernama Red Hat Enterprise Virtualization (biasa disingkat sebagai RHEV atau RHV).
Pada saat artikel ini diterbitkan, installer atau ISO dari Red Hat Virtualization versi latest stable yang tersedia adalah RHVH 4.4 (Red Hat Virtualization Host), sedangkan dalam artikel ini saya akan menggunakan oVirt Node 4.4.9. Sebetulnya kita dapat membangun klaster oVirt dan RHV menggunakan distro Enterprise Linux seperti CentOS atau RHEL, tapi saya rasa akan lebih mudah jika memakai distro yang disediakan oleh oVirt atau RHV, yang memang sudah didesain sedemikian rupa sehingga memudahkan kita dalam proses setup.
Fitur Dasar
Berikut ini adalah beberapa fitur dasar yang akan memudahkan kita dalam mengelola virtualisasi infrastruktur ketika menggunakan oVirt.
- Web Interface yang ramah pengguna bagi administrator dan user non-admin
- Manajemen terintegrasi bagi host, storage, dan konfigurasi network
- Live Migration bagi virtual machine dan disk antar host dan storage
- High availability bagi virtual machine
Prerequisites
Metode
Kita dapat melakukan instalasi file ISO oVirt Node ke komputer fisik (baremetal) pada datacenter, namun karena keterbatasan resource saya akan melakukannya dalam VM di komputer supaya lebih fleksibel. Ada beberapa macam jenis instalasi yang bisa kita lakukan, kurang lebihnya seperti:
Self-hosted Engine. Cara inilah yang akan kita terapkan, karena cenderung lebih simple. Pertama kita lakukan instalasi file ISO oVirt Node, lalu dalam OS tersebut kita deploy sebuah VM yang bertugas sebagai Engine atau Manager.
Standalone Manager. Menurut saya cara ini lebih rumit, namun akan cocok jika ingin mencapai performa yang lebih baik. Karena satu mesin tersebut hanya didedikasikan untuk fokus menjalankan satu OS sebagai Engine atau Manager.
Host
Sebuah Host dalam oVirt mirip seperti Worker Node pada klaster Kubernetes. Jika Worker Node di Kubernetes menjalankan Pod, maka Host di oVirt akan menjalankan VM. Terlalu menyederhanakan, tapi kurang lebih bagi saya memang seperti itu tugasnya. Ibarat sebuah Pod, kelak VM dalam Host bisa di-migrate ke Host lain.
Saya akan menggunakan dua VM sebagai Host oVirt. VM ini berjalan di atas komputer saya menggunakan KVM
dengan bantuan virsh
. Kedua VM akan saya sebut sebagai host dan kita install ISO oVirt Node. Nantinya salah satu dari host ini akan menjalankan sebuah VM di dalamnya yang dijuluki Self-hosted Engine sebagai Manager dari keseluruhan oVirt. Manager tersebut akan kita pakai untuk mengelola klaster oVirt. Jika digambarkan kurang lebih akan terlihat seperti berikut.
Untuk proses instalasi ISO oVirt Node pada masing-masing host terbilang relatif mudah, karenanya saya anggap tidak perlu dijelaskan pada artikel ini.
Network
Saya tidak ingin IP kedua host tersebut berubah, maka kita perlu menyesuaikan konfigurasi virtual network KVM pada komputer menggunakan virsh
seperti berikut.
|
|
Masukkan masing-masing MAC address dari virtual NIC kedua VM host, misalnya seperti berikut.
|
|
Artinya virtual network KVM pada komputer kita hanya akan memulai alokasi DHCP dari 192.168.122.50
sampai 192.168.122.159
, sementara kedua MAC yang kita masukkan tidak berubah karena dijadikan static, dengan IP 192.168.122.20
untuk host1.ovirt.local
dan IP 192.168.122.21
untuk host2.ovirt.local
.
Karena deployment hosted-engine nantinya akan melakukan lookup hostname dan kita tidak menggunakan server DNS pada artikel ini, maka selanjutnya kita perlu menambahkan konfigurasi pada /etc/hosts
di komputer, kedua host, serta VM Self-hosted Engine seperti berikut.
|
|
Spesifikasi Host
Karena hanya untuk keperluan belajar, saya meminimalisir penggunakan resource agar efisien. Kedua host yang sudah saya persiapkan menggunakan spesifikasi seperti berikut.
Host | vCPU cores | Memory | Disk | Additional Disk |
---|---|---|---|---|
host1.ovirt.local | 1 | 8 GB | 65 GB | 65 GB |
host2.ovirt.local | 1 | 2 GB | 65 GB | - |
host1.ovirt.local
diperlukan tambahan disk yang nantinya dijadikan sebagai NFS server. Setelah instalasi VM Self-hosted Engine selesai, memori pada host ini juga dapat kita resize sesuai kebutuhan, misalnya kita turunkan menjadi 5 GB. Jumlah memori awal sebesar 8 GB hanyalah untuk mencegah terjadinya kegagalan ketika proses deployment yang disebabkan oleh minimnya ketersediaan memori.NFS Server
Setidaknya sebuah Storage Domain dibutuhkan dalam Datacenter oVirt, dan kita dapat menambahkan beberapa jenis storage seperti misalnya NFS server. Pada sebelumnya kita telah menambahkan disk tambahan pada host1.ovirt.local
anggaplah terbaca sebagai /dev/vdb
dan akan kita gunakan sebagai filesystem bagi NFS. Supaya lebih efisien, dalam artikel ini NFS server akan saya bangun juga pada host1.ovirt.local
.
|
|
Tambahkan partisi tersebut ke dalam konfigurasi /etc/fstab
.
|
|
Kemudian refresh partition table dengan udevadm
dan format partisi dengan mkfs
lalu buat direktori untuk mountpoint pada /mnt/storage1
, jangan lupa lakukan mount.
|
|
Jika mount partition berhasil, akan muncul output seperti berikut.
|
|
Tambahkan mountpoint tersebut ke dalam konfigurasi NFS server, lakukan export dengan exportfs
dan jalankan service nfs-server
dengan systemd.
|
|
Sesuaikan service yang diperbolehkan oleh firewalld
, cukup lakukan ini di sisi host1.ovirt.local
saja.
|
|
Sekarang cek dari kedua sisi host apakah NFS server sudah terdeteksi.
|
|
Self-hosted Engine
VM Settings
Buka cockpit
lewat web browser dengan URL https://host1.ovirt.local:9090/ovirt-dashboard#/he untuk deploy VM Self-hosted Engine. Gunakan username root
dan kata sandi yang telah dibuat ketika instalasi oVirt Node. Setelah berhasil login, klik Start pada Hosted Engine.
Sesuaikan Engine VM FQDN dan VM IP Address dengan konfigurasi yang sudah dibuat pada /etc/hosts
. Resize Memory Size (MiB) ke batas terendah (4096) serta Number of Virtual CPUs menjadi 1 saja, namun hal ini dapat disesuaikan dengan spesifikasi host yang kita hendaki.
Deployment Progress
Jika kita lihat dari output log, deployment dijalankan oleh Ansible. Durasi yang diperlukan untuk deployment sangat bergantung pada kecepatan koneksi jaringan internet, spesifikasi VM host, serta hardware komputer yang kita miliki. Dalam kasus saya, internet berkecepatan sekitar 5MB/s dengan spesifikasi host pada artikel ini, memakan waktu hingga sekitar 1 jam.
Storage Domain
Seusai VM Self-hosted Engine sudah berhasil dinyalakan, kita lanjutkan dengan membuat Storage Domain. Fungsinya nanti adalah untuk menampung berbagai images baik file ISO Installer maupun virtual disk bagi VM yang akan dibuat. Karena sebelumnya kita sudah membuat NFS server, maka seharusnya sekarang tinggal kita hubungkan saja seperti berikut.
Healthcheck Hosted Engine
Masuk ke shell untuk user root
pada host1.ovirt.local
misalnya dengan SSH, dan periksa apakah VM Self-hosted Enginer dalam keadaan baik.
|
|
host1.ovirt.local
coba untuk SSH ke hosted-engine.ovirt.local
dan lakukan konfigurasi file /etc/hosts
sesuai dengan yang sebelumnya telah kita bahas di bagian Network. Login SSH menggunakan user root
dan kata sandi yang telah dibuat sebelumnya.oVirt Webmanager
Jika VM Self-hosted Engine dalam keadaan baik, kita dapat membuka Web Manager untuk mengelola oVirt lewat web browser dengan alamat https://hosted-engine.ovirt.local menggunakan username admin
dan kata sandi yang telah kita buat sebelumnya pada saat melakukan konfigurasi VM Settings.
Add Host
Tambahkan host2.ovirt.local
ke datacenter oVirt yang berhasil kita deploy. Caranya adalah dengan masuk ke menu Hosts pada oVirt Webmanager Web Portal. Lalu pilih New dan masukkan hostname serta kata sandi dari user root
. Tunggu beberapa saat, sampai host baru reboot dan berhasil join ke datacenter oVirt.
Bila berhasil, nantinya host2.ovirt.local
akan muncul di oVirt Webmanager, total jumlah Host akan bertambah, dan ada alert seperti berikut.
Upload ISO
Sayangnya untuk mengunggah file installer ISO ke oVirt tidak terasa begitu ramah pengguna, kita perlu melakukannya secara manual seperti berikut.
Mountpoint ISO
Buat sebuah direktori baru bernama nfs-iso
dalam mountpoint NFS untuk Storage Domain khusus bagi ISO.
|
|
New Storage Domain
Pada oVirt Webmanager pilih masuk ke bagian Storage Domains, kemudian klik New Domains.
Enable User
Kita ubah shell milik user vdsm
dari yang sebelumnya /sbin/nologin
menjadi /bin/bash
lalu login ke dalam user tersebut.
|
|
Lokasi Direktori
|
|
Setelah menjalankan perintah di atas, perhatikan output dari perintah tree
dengan teliti karena kita akan membutuhkan letak full path dari sebuah direktori bernama 11111111-1111-1111-1111-111111111111
.
|
|
Rsync File
Masih di dalam user vdsm
kita dapat menyalin file dari komputer lain dengan rsync
atau scp
melalui SSH.
|
|
192.168.122.1
adalah komputer saya dengan username pwn3r
, sesuaikan dengan environment kalian masing - masing. Dari sini saya menyalin file ISO Ubuntu Server dari komputer saya menuju ke Storage Domain di dalam oVirt.Disable User
Jika sudah, jangan lupa untuk logout dari user vdsm
dan mematikan akses shell.
|
|
Check ISO File
Coba lihat dari sisi oVirt Webmanager apakah file ISO sudah muncul seberti berikut ini.
Create VM
New VM
Buka menu Virtual Machines pada oVirt Webmanager lalu pilih New.
Silahkan buat disk baru yang akan digunakan oleh VM baru.
Sesuaikan resource memori dan CPU yang akan dialokasikan untuk VM.
Install OS on VM with ISO
Saat pertamakali membuat, VM akan dalam keadaan Powered Off, pilih Run Once dan attach file ISO yang telah kita upload sebelumnya.
Untuk melakukan remote menggunakan protokol SPICE
, klik VM yang kita nyalakan dan pilih Console. Web Browser akan mengunduh sebuah file bernama console.vv
yang dapat kita buka menggunakan tool bernama virt-viewer
. Jika belum ada, silahkan install terlebih dahulu pada komputer kalian.
|
|
pacman
. Silahkan sesuaikan dengan distro yang kalian gunakan.Berikut ini adalah tampilan dari VM yang berjalan di atas oVirt, sedang menjalankan instalasi Ubuntu Server menggunakan ISO yang telah kita upload ke Storage Domain lewat NFS.
Eject ISO
Ketika proses instalasi telah selesai, Ubuntu akan meminta reboot VM. Jangan lupa untuk eject ISO terlebih dahulu agar VM booting menggunakan disk.
Uji Coba
Instalasi OS telah berhasil dilakukan pada VM di atas, jika dilihat pada sisi oVirt Webmanager akan terlihat statusnya Up yang menandakan VM telah berjalan. VM juga sudah dapat mengakses internet
Sementara berikut ini adalah Overview dari oVirt Webmanager, terlihat bahwa dua VM sedang berjalan dan resource berkurang karena digunakan oleh VM baru.
Kesimpulan
Tentunya di production grade RHV lebih banyak diminati karena tersedianya support, dan oVirt menjadi alternatif jika ingin merasakan teknologi virtualisasi ini tanpa perlu biaya subscription. Harap dicatat bahwa dibutuhkan effort lebih untuk produk community yang dapat dipakai secara bebas tanpa biaya langganan jika misalnya kita mendapati masalah atau issue. Selain RHV dan oVirt, masih ada banyak teknologi di level hypervisor yang dapat kita jadikan referensi seperti misalnya vSphere, Proxmox, ESXi, hingga OpenStack. Dari segi fitur, lumayan banyak yang bisa kita manfaatkan di oVirt dan RHV. Namun untuk Web Interface saya rasa masih kurang user friendly jika dibandingkan kompetitornya.
Referensi
- ovirt.org/documentation/installing_ovirt_as_a_self-hosted_engine_using_the_command_line/index.html
- ovirt.org/develop/architecture/architecture.html
- www.linux-kvm.org/page/FAQ
- wiki.archlinux.org/title/libvirt
- wiki.archlinux.org/title/QEMU
- wiki.archlinux.org/title/KVM
- www.desktop-virtualization.com/2008/05/01/qumranet-solid-ice
- www.desktop-virtualization.com/2008/09/09/redhat-acquires-qumranet-for-107m
- access.redhat.com/documentation/en-us/red_hat_virtualization/4.4/html-single/administration_guide/index#Copy_ISO_to_ISO_domain-storage_tasks
- access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/html/deploying_different_types_of_servers/exporting-nfs-shares_deploying-different-types-of-servers
- ubuntu.com/tutorials/install-ubuntu-server