ติดตั้ง OpenNebula KVM Node บน ubuntu 18.04 server

จาก Wiki Opensource

บันทึกนี้ปรับปรุงล่าสุดเมื่อวันที่ 27-11-2561
ดูแลโดย WIBOON

บอกต่อ

  • KVM (Kernel-based Virtual Machine) is an open source hypervisor for OpenNebula’s open cloud architecture.
  • KVM is a complete virtualization software for Linux where each virtual machine interacts with its own virtualized hardware.
  • KVM Nodes (physical hosts) should have CPU with Intel VT or AMD’s AMD-V features, in order to support virtualization.
    grep 'vmx\|svm' /proc/cpuinfo
  • OpenNebula Front-end connects to the hypervisor hosts using SSH

สภาพแวดล้อม

  • เครื่องที่นำมาทำเป็น KVM Node เราจะตั้งชื่อ hostname ให้ไม่ซ้ำกัน คือ node01, node02 เพื่อให้ไม่หลงเวลาทำงาน ตรวจดู/แก้ไขที่ไฟล์ /etc/hostname และ /etc/hosts
  • เครื่อง KVM Node จะตั้งค่า network interface เป็น bridge
  • netplan version 0.36.3 ขึ้นไป จะทำเรื่องตั้งชื่อ network interface ได้


ขั้นตอน
1.ตั้งค่า network interface เป็น bridge

sudo apt install bridge-utils

ตั้งค่า static IP

sudo vi /etc/netplan/01-netcfg.yaml

ตัวอย่างดังนี้

network:
  version: 2
  renderer: networkd
  ethernets:
    vif1:
      match:
        macaddress: "44:55:33:85:91:08"
      set-name: vif1
      dhcp4: no
      dhcp6: no

  bridges:
    br0:
      dhcp4: no
      dhcp6: no
      interfaces:
        - vif1
      addresses: [ 192.168.6.17/25 ]
      gateway4: 192.168.6.1
      nameservers:
          addresses:
              - "192.100.77.10"

และรันคำสั่ง

sudo netplan apply

2.เพิ่ม OpenNebula repository

wget -q -O- https://downloads.opennebula.org/repo/repo.key | sudo apt-key add -
echo "deb https://downloads.opennebula.org/repo/5.6/Ubuntu/18.04 stable opennebula" | sudo tee /etc/apt/sources.list.d/opennebula.list

3.Install OpenNebula KVM packages

sudo apt-get update
sudo apt-get install opennebula-node

4. แก้ไขไฟล์ /etc/libvirt/libvirtd.conf

sudo vi /etc/libvirt/libvirtd.conf

ข้อมูลดังนี้

unix_sock_group = "oneadmin"
unix_sock_rw_perms = "0777"

5. restart libvirtd

sudo systemctl restart libvirtd.service libvirt-bin.service

6.ตั้ง password สำหรับ username oneadmin ให้เหมือนก้นกับทุก nodes เพื่อให้จดจำได้ง่าย

sudo passwd oneadmin

7.ให้ oneadmin อยู่ใน group libvirt

sudo gpasswd --add oneadmin libvirt

8.ตรวจสอบสิทธิของ user

su - oneadmin

คำสั่ง

id

ผลลัพธ์
uid=111(oneadmin) gid=116(oneadmin) groups=116(oneadmin),6(disk),115(kvm),118(libvirt)

หลังจากติดตั้ง hypervisor เสร็จแล้ว ขั้นตอนต่อไปจะเป็นการตั้งค่าสำหรับให้เครื่องที่เป็น front-end กับ KVM node ทำงานร่วมกันได้ด้วย ssh

ขั้นตอนนี้ทำที่เครื่อง front-end

1.เข้าเป็น user oneadmin

sudo su - oneadmin

2. ทำให้ ssh จดจำ SSH Host key verification ของ KVM node ไว้ใน known_hosts มิฉะนั้นตอนสร้าง VM จะไม่สำเร็จ จะมี Error ประมาณนี้

Command "scp -r one:/var/lib/one/datastores/1/deb07f5dc7b760c79f83a7e27f689331 node02:/var/lib/one/datastores/0/11/disk.0" failed: Host key verification failed. 
New VM state is FAILED 

เช่น front-end มี IP 192.168.6.18, KVM node 1 มี IP 192.168.6.17 และ KVM node 2 มี IP 192.168.6.19 เป็นต้น

ssh oneadmin@192.168.6.18

ถาม Yes/No ให้ตอบ Yes

ssh oneadmin@192.168.6.17

ถาม Yes/No ให้ตอบ Yes

ssh oneadmin@192.168.6.19

ถาม Yes/No ให้ตอบ Yes

3.Configure Passwordless SSH
เราจะรวบรวม server key และเก็บไว้ที่ home ของ user oneadmin ด้วยคำสั่ง scp เพื่อให้ทั้ง front-end และ KVM node สามารถติดต่อหรือส่ง image ด้วย ssh กันได้โดยไม่มีถาม password

ssh-keyscan 192.168.6.18 192.168.6.17 192.168.6.19 >> /var/lib/one/.ssh/known_hosts
scp -rp /var/lib/one/.ssh 192.168.6.17:/var/lib/one/
scp -rp /var/lib/one/.ssh 192.168.6.19:/var/lib/one/

4.ทดสอบ ssh จาก front-end ไปยัง KVM node, จะต้องไม่ถูกถาม password

ssh 192.168.6.17

และ

ssh 192.168.6.19

5.เพิ่ม KVM node ลงใน OpenNebula ด้วย CLI (ใช้คำสั่งง่ายดี)

onehost create 192.168.6.17 -i kvm -v kvm
onehost create 192.168.6.19 -i kvm -v kvm

หรือเพิ่มทางหน้าเว็บ opennebula-sunstone ก็ได้

ตรวจสอบ packages เหล่านี้ ต้องมีอยู่

dpkg -l | grep vlan
dpkg -l | grep ipset
dpkg -l | grep ruby

บางครั้ง หากยังไม่มี ipset ก็ให้ติดตั้งด้วย

sudo apt install ipset

ตอนนี้พร้อมใช้งานแล้ว เปิดเบราว์เซอร์เข้าทำงานผ่านทาง Sunstone UI
http://<frontend_address>:9869
ทำการตั้งค่า configuration ต่าง ๆ พร้อมแล้วจึง สร้าง VM ในลำดับต่อไป

References: