A Testing Virtual Data Center with OpenNebula miniONE on KVM

โน้ตบุ๊ค HP รุ่น 6450b มีหน่วยความจำ 4 GB ผมเอามาทำเป็นเซิร์ฟเวอร์สำหรับรัน Virtual Machine (VM) ผมใช้ทดสอบติดตั้ง server หรือ services ต่าง ๆ เช่น Ubuntu server ทำงานเป็น web server เป็นต้น ผมอยากจะเรียกว่า Mobile Virtual Data Center ครับ โดยที่ผมนำซอฟต์แวร์ที่ชื่อว่า OpenNebula มาใช้ ตัวนี้ใช้ทำเป็น Virtual Data Center ขนาดใหญ่ได้เลยหากมี Hardware สเปคสูง ๆ สร้าง VM ให้บริการได้จริง เค้ามีซอฟต์แวร์สำหรับเครื่องเดียว (Test Drive) เรียกว่า OpenNebula miniONE ให้ใช้ น่าจะนำมาลงโน้ตบุ๊คได้ จึงได้ทดลองดู พบว่าใช้ได้จริง

สิ่งที่ทำมีดังนี้

  1. เตรียม USB Drive ที่ Boot เป็น Ubuntu Desktop สำหรับติดตั้ง 
    • ดาวน์โหลดรุ่น LTS 20.04  ไฟล์นี้ ubuntu-20.04.1-desktop-amd64.iso
    • นำมาเขียนลง USB Drive ด้วยโปรแกรม Rufus for Windows

(สร้าง Bootable USB Drive ด้วยโปรแกรม Rufus for Windows)

  1. นำ USB Drive ไป Boot ที่โน้ตบุ๊ค และ ติดตั้ง Ubuntu Desktop 

(ติดตั้ง Ubuntu Desktop 20.04)

  1. Boot Ubuntu Desktop ที่โน้ตบุ๊ค และเข้าใช้งาน
    ติดตั้ง OpenSSH server
    • คำสั่ง sudo apt install openssh-server
  2. ติดตั้งเซิร์ฟเวอร์สำหรับสร้าง VM 
    • ติดตั้ง OpenNebula miniONE on KVM
    • แก้ไขเล็กน้อย
      • เตรียมไว้ว่าต่อไปจะใช้ TCP Port 80 สำหรับ web server ที่เป็น VM จึงต้องแก้ไข default port จาก 80 เป็นอย่างอื่น ตั้งค่า :port: 8080 แก้ไขที่ไฟล์ /etc/one/sunstone-server.conf
      • รันคำสั่ง sudo systemctl restart opennebula-sunstone.service
      • หลังจากติดตั้ง miniONE จะมีการจัดการค่าทาง network ใหม่ เราต้องแก้ไขให้ Ubuntu Desktop ได้รับ DHCP IP ดังนี้ ตั้งค่า renderer: networkd ตั้งชื่อ ethernets ที่ใช้ และ dhcp4: yes แก้ไขที่ไฟล์ /etc/netplan/01-network-manager-all.yaml
      • รันคำสั่ง sudo netplan apply
      • รันคำสั่ง ip addr
    • เข้า Browser ไปที่ URL http://NOTEBOOK_IP:8080 และ Login เข้าใช้ด้วย username คือ oneadmin และ password ที่ได้รับ
    • ปรับแต่งให้ Ubuntu Desktop ทำ enable packet forwarding for IPv4 เข้าออก VM ได้
      • ตั้งค่า net.ipv4.ip_forward=1 แก้ไขที่ไฟล์ /etc/sysctl.conf
      • รันคำสั่ง sudo sysctl -p

(ติดตั้ง OpenNebula miniONE on KVM)

  1. สร้าง VM 
    • สร้าง VM Template ชื่อ Install new ubuntu และระบุว่าจะใช้ ubuntu-20.04.1-live-server-amd64.iso ในขั้นตอนติดตั้ง
    • สร้าง VM จาก VM Template ที่สร้างในข้อที่แล้ว
    • เปิด VM และ เข้าไปทำงานทางหน้า Web console จากนั้น login เข้าใช้งาน
    • ติดตั้ง Ubuntu Server (ติดตั้ง Ubuntu Server 20.04 ใน VM ของ miniONE KVM)
    • ติดตั้ง apache2 web server (เปิด port 80) พร้อม php และลงซอฟต์แวร์ชื่อ CMSimple version 5.3 สำหรับทำเป็น CMS Web Server อย่างง่าย ไม่มี database (แตกไฟล์ CMSimple_5-3.zip ไว้ใน /var/www/html/cms/)
      (ติดตั้ง CMSimple version 5.3 ใน VM ของ miniONE KVM)
    • ทดสอบการเข้าใช้งานจาก Ubuntu Desktop ที่โน้ตบุ๊ค เพราะว่าในตอนนี้ OpenNebula miniONE จะสร้าง network ชื่อ vnet บน Interface ชื่อ minionebr ทำให้เข้าถึง http://VM_IP/cms/ ได้เฉพาะจากเครื่องโน้ตบุ๊คนี้เท่านั้น

(สร้าง VM OpenNebula miniONE on KVM)

  1. ปรับแต่งให้ Ubuntu Desktop ทำหน้าที่เป็น proxy web server
    • ติดตั้ง haproxy
    • ตั้งค่า haproxy.conf ให้ชี้ไปที่ VM web server ที่ถูกต้อง ตามค่า URL path คือ /cms/  

(ติดตั้ง haproxy บน Ubuntu Desktop)

  1. ทดสอบใช้งาน http://NOTEBOOK_IP/cms/ จากเครื่องอื่นใน LAN