Openstack adalah platform cloud operating sistem yang sangat poluler untuk saat ini, bahkan cloud provider yang semula mengunakan platform vmware, xen cintrix, on App dan yang lainya sudah mulai mengimplementasikan openstack pada platform cloudnya. Tentu ini disebabkan selain openstack itu free dan open source, karena yang support openstack hampir semua vendor networking dan virtualisasi.
Okee, masuk ke inti pembahasan yaitu migrasi vm dari xenserver 6.5 ke openstack. jadi ceritanya gini broooo
Pada dasarnya skenario yang saya lakukan hanya mengambil virtual hardisk dari xen server kemudian diconvert mengunakan qemu-img (karena hypervisor openstack mengunakan kvm), setelah itu di push ke openstack 😀
Xen Server 6.5
Pada dasarnya xenserver itu gratis namun untuk memanage xen server kita butuh Citrix xen Center (kalo ini ada licensenya)
sebelumnya saya sudah membuat vm di xenserver (cuma satu aja, kan cuma sample :P), didalamnya saya isi centos dan ada nginx diatasnya sudah ditest jalan normal. tahap selanjutnya adalah mengconvert vm tersebut menjadi virtual disk yang bisa dikenali oleh qemu-img. Sebenarnya kita bisa mengkexport langsung dari xen center namun formatnya adalah ovf/ova atau xva, seperti dibawah ini
namun tidak sesederhana itu, ternayata fitur convert di qemu-img tidak support untuk convert format extensi ovf, ova atau xva. jadi saya cari jalan lain untuk mengconvert virtual disk di xen server supaya dapat dikenali qemu-img.
- qemu-img format support
setelah di baca sana-sini dari dokumentasi cintrix dan xen server, ternyata xenserver dapat di convert menjadi vdi atau vhd, tapi untuk opsi ini kita harus coba diconsole xenserver tidak bisa melalui xen center.
Sebelumnya ssh dulu ke xenserver kemudian cek vdi nya , xe vdi-list
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 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
[root@xenserver ~]# xe vdi-list uuid ( RO) : c4415ba2-1436-4f5d-9101-bd7e23099a81 name-label ( RW): xs-tools.iso name-description ( RW): sr-uuid ( RO): 75068835-877f-d021-103c-6dbe1673c4c6 virtual-size ( RO): 119891968 sharable ( RO): false read-only ( RO): true uuid ( RO) : b11f1d94-369f-4296-a7b2-4f19cd225ef6 name-label ( RW): XenCenter.iso name-description ( RW): sr-uuid ( RO): 75068835-877f-d021-103c-6dbe1673c4c6 virtual-size ( RO): 58589184 sharable ( RO): false read-only ( RO): true uuid ( RO) : 2807f1d6-2345-44e1-8f41-15123efdec2b name-label ( RW): server 0 name-description ( RW): Created by template provisioner sr-uuid ( RO): f0abd311-19be-6b39-cedb-382e28df6285 virtual-size ( RO): 10737418240 sharable ( RO): false read-only ( RO): false uuid ( RO) : af7824cf-690a-430c-a78e-24569884c1a0 name-label ( RW): SCSI 1:0:1:0 name-description ( RW): QEMU model QEMU DVD-ROM rev 2.5+ type 5 sr-uuid ( RO): 525c21f7-4253-de05-bd2e-4486aa4790b3 virtual-size ( RO): 603744256 sharable ( RO): false read-only ( RO): true uuid ( RO) : 06484ba9-a20e-4ec3-9f4c-03e59033cd17 name-label ( RW): XenServer Transfer VM system disk name-description ( RW): sr-uuid ( RO): f0abd311-19be-6b39-cedb-382e28df6285 virtual-size ( RO): 8388608 sharable ( RO): false read-only ( RO): false |
setelah itu kita cari uuid pada server, kemudian langsung aja convert ke vhd (virtual hardisk), untuk cara convertnya sangat sederhana yaitu xe vdi-export uuid=<no_id_server> filename=nama-file.vhd format=vhd –progress
1 2 3 |
[root@xenserver ~]# xe vdi-export uuid=2807f1d6-2345-44e1-8f41-15123efdec2b filename=server.vhd format=vhd --progress [|] ######################################################> (100% ETA 00:00:00) Total time: 00:00:14 |
kalo proses convert sudah bermasil maka akan muncul proses convert dan total waktu yang dibutuhkan untuk convert. kalo udh dapat hasil convert file .vhd maka copy aja file tersebut ke openstack kemudian di convert jadi qcow2, langsung kita coba aja guyss 😀
1 |
[root@controller ~]# qemu-img convert -f vpc -O qcow2 server.vhd server.qcow2 |
setelah di convert menjadi qcow2, maka kita harus coba update template yang kita buat, untuk menyesuaikan file xml dari xenserver, misalnya pada xenserver tipe bus yang digunakan untuk virtual hardisk adalah ide dan nic nya e1000, namun secara default di openstack mengunakan virtio (karena base nya kvm), karena kalo tidak menyesuaikan maka virtual hardisk dari xenserver tidak bisa booting di openstack. sebelumnya saya sudah menyediakan image untuk “pancingan” saja wkwkw 😀
1 2 3 4 5 6 |
[root@controller ~(keystone_admin)]# openstack image list +--------------------------------------+--------+--------+ | ID | Name | Status | +--------------------------------------+--------+--------+ | 5e780f74-6cf7-4917-8257-cb1c69256a04 | cirros | active | +--------------------------------------+--------+--------+ |
kemudian coba update template imagenya
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
[root@controller ~(keystone_admin)]# glance image-update --property hw_disk_bus=ide --property hw_vif_model=e1000 5e780f74-6cf7-4917-8257-cb1c69256a04 +------------------+--------------------------------------+ | Property | Value | +------------------+--------------------------------------+ | checksum | f8ab98ff5e73ebab884d80c9dc9c7290 | | container_format | bare | | created_at | 2017-06-02T07:58:41Z | | description | | | disk_format | qcow2 | | hw_disk_bus | ide | | hw_vif_model | e1000 | | id | 5e780f74-6cf7-4917-8257-cb1c69256a04 | | min_disk | 0 | | min_ram | 0 | | name | cirros | | owner | 477d752d3071418fb2a71edc64f4c72e | | protected | False | | size | 13267968 | | status | active | | tags | [] | | updated_at | 2017-06-04T16:31:07Z | | virtual_size | None | | visibility | public | +------------------+--------------------------------------+ |
kemudian setelah itu kita membuat port dengan memberikan fix-ip pada port tersebut sehingga ketika port tersebut diassign ke instance maka instance tersebut akan mendapatkan fix-ip.
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 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
[root@controller ~(keystone_admin)]# neutron net-list +--------------------------------------+---------+------------------------------------------------------+ | id | name | subnets | +--------------------------------------+---------+------------------------------------------------------+ | a7c37605-befb-44e9-a699-b4ff2870706f | net-ext | 34d91db7-d73d-4440-93b5-6f95a5edb401 10.101.101.0/24 | +--------------------------------------+---------+------------------------------------------------------+ [root@controller ~(keystone_admin)]# neutron port-create --fixed-ip subnet_id=34d91db7-d73d-4440-93b5-6f95a5edb401,ip_address=10.101.101.160 --name server-rcn a7c37605-befb-44e9-a699-b4ff2870706f Created a new port: +-----------------------+---------------------------------------------------------------------------------------+ | Field | Value | +-----------------------+---------------------------------------------------------------------------------------+ | admin_state_up | True | | allowed_address_pairs | | | binding:host_id | | | binding:profile | {} | | binding:vif_details | {} | | binding:vif_type | unbound | | binding:vnic_type | normal | | created_at | 2017-06-04T16:44:51 | | description | | | device_id | | | device_owner | | | extra_dhcp_opts | | | fixed_ips | {"subnet_id": "34d91db7-d73d-4440-93b5-6f95a5edb401", "ip_address": "10.101.101.160"} | | id | 87f10afd-6d99-499c-82b4-05176228e0ea | | mac_address | fa:16:3e:dc:38:fa | | name | server-rcn | | network_id | a7c37605-befb-44e9-a699-b4ff2870706f | | security_groups | 13fd26e3-7000-4630-b13d-779c01ffd235 | | status | DOWN | | tenant_id | 477d752d3071418fb2a71edc64f4c72e | | updated_at | 2017-06-04T16:44:51 | +-----------------------+---------------------------------------------------------------------------------------+ [root@controller ~(keystone_admin)]# neutron port-list +--------------------------------------+------------+-------------------+---------------------------------------------------------+ | id | name | mac_address | fixed_ips | +--------------------------------------+------------+-------------------+---------------------------------------------------------+ | 74318af2-8171-49dd-87b9-5cbd2f4d52a5 | | fa:16:3e:05:fd:03 | {"subnet_id": "34d91db7-d73d-4440-93b5-6f95a5edb401", | | | | | "ip_address": "10.101.101.100"} | | 87f10afd-6d99-499c-82b4-05176228e0ea | server-rcn | fa:16:3e:dc:38:fa | {"subnet_id": "34d91db7-d73d-4440-93b5-6f95a5edb401", | | | | | "ip_address": "10.101.101.160"} | +--------------------------------------+------------+-------------------+---------------------------------------------------------+ |
nantinya ketika kita create vm, maka ketika memilih port tinggal comot aja port yang sudah kita buat ckck, “singkat cerita kita sudah create ‘vm-pancingan’ dengan mengunakan port yang sudah kita buat”
*Note = kalo sudah pilih port tidak usah pilih network lagi waktu create instance “pancingan”
ini adalah instance “pancingan” sudah sudah ter-create dan vm tersebut ada di compute0, setelah itu copy file server.qcow2 ke compute0 kemudian overwrite file tersebut ke direktory /var/lib/nova/instances/id_instance/
1 |
[root@controller ~(keystone_admin)]# scp server.qcow2 compute0:/root |
kemudian, ssh ke compute0, dan overwrite disk di instance yang dijadiin “pancingan”, kalo mau overwrite maka vm-pacingan harus matiin dulu 😀
1 |
# mv server.qcow2 /var/lib/nova/instances/4f3b5b15-6ea5-4fe9-9f23-fcb3b476d72a/disk |
setelah itu coba aktifkan kembali vmnya.
okee, migrasi vm dari xen server ke openstack (hypervisornya kvm) sudah berhasil dengan cara “pacingan” 😀
Quote : “terkadang dalam dunia per-server-an kita tidak harus sesuai manual book untuk menyelesaikan masalah, bahkan kita membutuhkan cara ‘pacingan’ untuk menyelesaikan masalah” 😀
Mungkin ini bukan cara best-practice, namun jika teman-teman punya cara lebih baik bisa komen dibawah ini 😀
See you, semoga puasanya lancar dan diberi keberkahan 🙂
wassalamualaikum
System Engineer
Komentar