Contents

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:

  1. 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.

  2. 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.

/virtualisasi-infrastruktur-dengan-ovirt/self-hosted-engine.png
Self-hosted Engine

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.

1
sudo virsh net-edit default

Masukkan masing-masing MAC address dari virtual NIC kedua VM host, misalnya seperti berikut.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
<network>
  <name>default</name>
  <uuid>85633c91-ef79-4ab7-8835-295b046c7xxx</uuid>
  <forward mode='nat'/>
  <bridge name='virbr0' stp='on' delay='0'/>
  <mac address='52:54:00:bn:6f:15'/>
  <ip address='192.168.122.1' netmask='255.255.255.0'>
    <dhcp>
      <range start='192.168.122.50' end='192.168.122.159'/>
      <host mac='52:54:00:b8:77:94' name='host1.ovirt.local' ip='192.168.122.20'/>
      <host mac='52:54:00:fa:df:2d' name='host2.ovirt.local' ip='192.168.122.21'/>
    </dhcp>
  </ip>
</network>

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.

1
2
3
192.168.122.20  host1.ovirt.local
192.168.122.21  host2.ovirt.local
192.168.122.15  hosted-engine.ovirt.local

Spesifikasi Host

Karena hanya untuk keperluan belajar, saya meminimalisir penggunakan resource agar efisien. Kedua host yang sudah saya persiapkan menggunakan spesifikasi seperti berikut.

HostvCPU coresMemoryDiskAdditional Disk
host1.ovirt.local18 GB65 GB65 GB
host2.ovirt.local12 GB65 GB-
Tips
Pada 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.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
[[email protected] ~]# parted /dev/vdb
GNU Parted 3.2
Using /dev/vdb
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) mklabel msdos
Warning: The existing disk label on /dev/vdb will be destroyed and all data on this disk will be lost.
Do you want to continue?
Yes/No? Yes                                                               
(parted) mkpart                                                           
Partition type?  primary/extended? primary                                
File system type?  [ext2]? xfs                                            
Start? 0%                                                                 
End? 100%                                                                 
(parted) print                                                            
Model: Virtio Block Device (virtblk)
Disk /dev/vdb: 69.8GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags: 

Number  Start   End     Size    Type     File system  Flags
 1      1049kB  69.8GB  69.8GB  primary  xfs          lba

(parted) quit                                                             
Information: You may need to update /etc/fstab.

Tambahkan partisi tersebut ke dalam konfigurasi /etc/fstab.

1
2
# Mount partition for NFS server
/dev/vdb1        /mnt/storage1   xfs     defaults        0 0 

Kemudian refresh partition table dengan udevadm dan format partisi dengan mkfs lalu buat direktori untuk mountpoint pada /mnt/storage1, jangan lupa lakukan mount.

1
2
3
4
5
udevadm settle
mkfs.xfs /dev/vdb1
mkdir -p /mnt/storage1
mount -av
chmod 777 -R /mnt/storage1

Jika mount partition berhasil, akan muncul output seperti berikut.

1
2
3
4
5
6
mount: /mnt/storage1 does not contain SELinux labels.
       You just mounted an file system that supports labels which does not
       contain labels, onto an SELinux box. It is likely that confined
       applications will generate AVC messages and not be allowed access to
       this file system.  For more details see restorecon(8) and mount(8).
/mnt/storage1            : successfully mounted

Tambahkan mountpoint tersebut ke dalam konfigurasi NFS server, lakukan export dengan exportfs dan jalankan service nfs-server dengan systemd.

1
2
3
4
echo "/mnt/storage1 *(rw,sync)" >> /etc/exports
exportfs -arv
systemctl enable --now nfs-server.service
systemctl status nfs-server.service

Sesuaikan service yang diperbolehkan oleh firewalld, cukup lakukan ini di sisi host1.ovirt.local saja.

1
2
3
4
firewall-cmd --permanent --add-service=nfs
firewall-cmd --permanent --add-service=mountd
firewall-cmd --permanent --add-service=rpc-bind
firewall-cmd --reload

Sekarang cek dari kedua sisi host apakah NFS server sudah terdeteksi.

1
for i in host{1..2}.ovirt.local; do ssh [email protected]$i "showmount -e host1.ovirt.local"; done 

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.

/virtualisasi-infrastruktur-dengan-ovirt/deploy-hosted-engine.png
Deploy Self-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.

/virtualisasi-infrastruktur-dengan-ovirt/self-hosted-engine-configuration.png
Self-hosted Engine Configuration
/virtualisasi-infrastruktur-dengan-ovirt/prepare-self-hosted-engine-vm.png
Prepare Self-hosted Engine VM

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.

/virtualisasi-infrastruktur-dengan-ovirt/self-hosted-engine-deployment-progess.png
Self-hosted Engine Deployment Progess

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.

/virtualisasi-infrastruktur-dengan-ovirt/add-nfs-as-storage-domain.png
Add NFS as Storage Domain

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.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
[[email protected] ~]# hosted-engine --vm-status


--== Host host1.ovirt.local (id: 1) status ==--

Host ID                            : 1
Host timestamp                     : 10187
Score                              : 3400
Engine status                      : {"vm": "up", "health": "good", "detail": "Up"}
Hostname                           : host1.ovirt.local
Local maintenance                  : False
stopped                            : False
crc32                              : a1c1f3b9
conf_on_shared_storage             : True
local_conf_timestamp               : 10187
Status up-to-date                  : True
Extra metadata (valid at timestamp):
	metadata_parse_version=1
	metadata_feature_version=1
	timestamp=10187 (Tue Nov 30 08:55:06 2021)
	host-id=1
	score=3400
	vm_conf_refresh_time=10187 (Tue Nov 30 08:55:06 2021)
	conf_on_shared_storage=True
	maintenance=False
	state=EngineUp
	stopped=False
Tips
Selagi masih dalam shell 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.

/virtualisasi-infrastruktur-dengan-ovirt/ovirt-manager-web-portal.png
oVirt Manager Web Portal


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.

/virtualisasi-infrastruktur-dengan-ovirt/add-host.png
Add Host

Bila berhasil, nantinya host2.ovirt.local akan muncul di oVirt Webmanager, total jumlah Host akan bertambah, dan ada alert seperti berikut.

/virtualisasi-infrastruktur-dengan-ovirt/add-host-success.png
Add Host Success
/virtualisasi-infrastruktur-dengan-ovirt/tasks-success.png
Tasks Success


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.

1
2
mkdir -p /mnt/storage1/nfs-iso
chmod 777 /mnt/storage1/nfs-iso

New Storage Domain

Pada oVirt Webmanager pilih masuk ke bagian Storage Domains, kemudian klik New Domains.

/virtualisasi-infrastruktur-dengan-ovirt/new-storage-domain.png
New Storage Domain
/virtualisasi-infrastruktur-dengan-ovirt/new-storage-domain-success.png
New Storage Domain Successfully Created

Enable User

Kita ubah shell milik user vdsm dari yang sebelumnya /sbin/nologin menjadi /bin/bash lalu login ke dalam user tersebut.

1
2
usermod -s /bin/bash vdsm
su - vdsm

Lokasi Direktori

1
tree /rhev/data-center/mnt

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.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
/rhev/data-center/mnt
└── host1.ovirt.local:_mnt_storage1_nfs-iso
    └── 7818ab21-eb15-4421-bd17-68d1f3a772b4
        ├── dom_md
        │   ├── ids
        │   ├── inbox
        │   ├── leases
        │   ├── metadata
        │   └── outbox
        └── images
            └── 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.

1
rsync -aPv [email protected]:/run/media/pwn3r/DATA/ISOs/ubuntu-18.04.6-live-server-amd64.iso /rhev/data-center/mnt/host1.ovirt.local\:_mnt_storage1_nfs-iso/7818ab21-eb15-4421-bd17-68d1f3a772b4/images/11111111-1111-1111-1111-111111111111/
Perhatian
Pemilik IP 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.

1
2
logout
usermod -s /sbin/nologin vdsm

Check ISO File

Coba lihat dari sisi oVirt Webmanager apakah file ISO sudah muncul seberti berikut ini.

/virtualisasi-infrastruktur-dengan-ovirt/uploaded-iso.png
Uploaded ISO


Create VM

New VM

Buka menu Virtual Machines pada oVirt Webmanager lalu pilih New.

/virtualisasi-infrastruktur-dengan-ovirt/create-new-vm.png
Create New VM

Silahkan buat disk baru yang akan digunakan oleh VM baru.

/virtualisasi-infrastruktur-dengan-ovirt/create-disk-for-new-vm.png
Create Disk for New VM

Sesuaikan resource memori dan CPU yang akan dialokasikan untuk VM.

/virtualisasi-infrastruktur-dengan-ovirt/resource-limit-for-new-vm.png
Resource Limit for New 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.

/virtualisasi-infrastruktur-dengan-ovirt/run-once-for-os-installation.png
Run Once For OS Installation

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.

1
sudo pacman -Sy virt-viewer
Info
Komputer saya menjalankan distro Artix Linux sehingga menggunakan package manager 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.

/virtualisasi-infrastruktur-dengan-ovirt/installing-ubuntu-server.png
Installing Ubuntu Server

Eject ISO

Ketika proses instalasi telah selesai, Ubuntu akan meminta reboot VM. Jangan lupa untuk eject ISO terlebih dahulu agar VM booting menggunakan disk.

/virtualisasi-infrastruktur-dengan-ovirt/eject-iso.png
Eject ISO

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

/virtualisasi-infrastruktur-dengan-ovirt/vm-running.png
VM Running

Sementara berikut ini adalah Overview dari oVirt Webmanager, terlihat bahwa dua VM sedang berjalan dan resource berkurang karena digunakan oleh VM baru.

/virtualisasi-infrastruktur-dengan-ovirt/ovirt-overview.png
oVirt Overview


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