หากนับระยะเวลามากกว่า 5 ปี ที่ผ่านมา โครงการ OpenNebula ได้มีการพัฒนาอย่างต่อเนื่อง และล่าสุดได้ออกรุ่น 4.0 Eagle มีคุณสมบัติที่เพิ่มเติมเข้ามาในรุ่นนี้มากขึ้น ทั้งการออกแบบ Sun Stone ใหม่ให้มีหน้าตาที่ใช้งานง่ายมากขึ้น สามารถปรับแต่ง GUI ให้เหมาะสมกับการใช้งานระดับผู้ใช้และกลุ่มผู้ใช้ เพิ่มการปรับแต่งให้กับ VM ให้มีความสามารถมากขึ้น ไม่ว่าจะเป็นการทำ disk snapshoting, capacity re-sizing, programable VM action และ รองรับ IPv6 นอกจากนี้ยังมี driver ใหม่ๆ อย่าง Ceph และการปรับปรุง driver เพื่อเชื่อมต่อกับ Virtualization Technology ของค่ายอื่นๆ เช่น VMware, KVM และ Xen

สำหรับการใช้งาน OpenNebula ผู้พัฒนาได้จัดทำวิดีโอสอนการใช้งานไว้อย่างครบถ้วน ตั้งแต่ OpenNebula 3.0-4.0 ผู้ที่สนใจสามารถเข้าไปศึกษาการใช้งานได้ที่ OpenNebula Screencast

ปีนี้ OpenNebula เตรียมตัวไปออกบูธที่งาน CeBIT ประจำปี 2013 งานเทคโนโลยีระดับโลกที่จะจัดขึ้นในวันที่ 5-9 มีนาคมนี้ ซึ่ง C12G Labs ได้บูธที่ Open Source Park Hall 6, Stand F16, 330 ท่านที่มีโอกาสไปงาน CeBIT ปีนี้ก็แนะนำให้ไปเยี่ยมบูธ OpenNebula ซึ่งในบูธจะมีการสาธิต OpenNebula 4.0 Sunstone ที่เป็น Web Interface ตัวใหม่ และคุณสมบัติใหม่ๆ อีกมากมาย ใครเป็นแฟน OpenNebula พลาดไม่ได้

ที่มา – OpenNebula

C12G บริษัทผู้พัฒนา OpenNebula Cloud Computing Toolkit ประกาศเปิดตัว OpenNebulaApps ซึ่งเป็นซอฟต์แวร์โอเพนซอร์สสำหรับบริหารจัดการ Cloud Platform ที่ช่วยให้ผู้ดูแลระบบสามารถติดตั้งและบริหารจัดการ Application บน OpenNebula ได้ง่ายขึ้น สามารถใช้ได้ทั้งบน Command Line และบน Web Interface OpenNebulaApps มีเครื่องมือที่จะช่วยติดตั้งและตั้งค่า Application และสามารถสั่งงานผ่าน Virtual machine ได้หลายตัวพร้อมกัน นอกจากนี้ยังมีบริการ Private Catalog (คล้ายกับ OpenNebula Marketplace) สำหรับเป็น Application Market เพื่อใช้งานในองค์กร

อ่านข้อมูลเพิ่มเติมเกี่ยวกกับ (OpenNebulaApp](http://docs.opennebula.pro/features) ที่หน้า OpenNebula Support Portal ดาวน์โหลด ได้ที่หน้าดาวน์โหลดจากเว็บไซต์โครงการ

นักพัฒนา OpenNebula ประกาศออกรุ่น 3.2 (Red Spider) สนับสนุน Hypervisor อย่าง KVM, Xen และ VMWare เพิ่มคุณสมบัติในการทำ Live Migration การจัดการ Image การจัดการ Network และการจัดการแบบอัตโนมัติผ่าน contextualisation ในรุ่นนี้รวบรวมงานพัฒนาของ C12G เข้ามารวมด้วยหลายตัว ซึ่งโดยปกติจะอยู่ในรุ่น Commercial Support อย่างเช่นสนับสนุน VMWare เป็นต้น สำหรับรุ่น 3.0 ที่ผ่านมาจะเห็นการพัฒนาอย่างรวดเร็ว เช่น การสนับสนุนในส่วน Management Console ผ่าน Sunstone, การจัดการ Virtual Datacenter ผ่าน OpenNebula Zone และโครงการล่าสุดคือ OpenNebula Self Service, การใช้งานเครื่องมือของ Amazon EC2 อย่าง Hybrid Fox ผ่านทาง EC2 query interface

มีหลายองค์กรใช้ OpenNebula 3.2 กันแล้วได้แก่ European Space Agency, KPMG, Fermilab, Logica, Chaina Mobile และ CERN สำหรับเครื่องมือที่ใช้งาน Ecosystem มีรายละเอียดอยู่ที่ OpenNebula Ecosystem Catalog สำหรับท่านที่ต้องการทดสอบสามารถดาวน์โหลดได้ที่เว็บ OpenNebular.org สำหรับท่านที่ใช้ Linux สามารถดาวน์โหลด package ในแต่ละ Distribution ได้ ไม่ว่าจะเป็น CentOS, Ubuntu, openSUSE และ Debian

จากตอนที่แล้วเราได้ทำความรู้จักกับ OpenNebula ไปแล้ว สำหรับในตอนที่ 2 นี้เราจะมาติดตั้ง OpenNebula กัน OpenNebula ออกแบบมาโดยใช้โครงสร้าง Cluster เดิมที่มีอยู่แล้วได้ ดังนั้นจาก Minimum Configuration เดิมซึ่งสามารถใช้งานได้เลย จากภาพเราจะมีเครื่อง Front End (Head Node) เพื่อทำหน้าที่จัดการ Image Repository, VMs, Scheduling ใน Cluster Node ที่เชื่อมต่ออยู่ จาก Minimun Configuration เครื่อง Front End จะมีการ์ดแลนอย่างน้อย 2 ใบ ใบหนึ่งเชื่อมต่อไปยังเครือข่ายภายนอก หรือ Internet ส่วนอีกใบหนึ่งจะเชื่อมต่อกับ Cluster Node ดังภาพ สำหรับเครื่อง Node มีการ์ดแลนอย่างน้อย 1 ใบ

เครื่อง Front End จะทำหน้าที่ควบคุม VM และ Image Repository ดังนั้นเครื่อง Front End จะเปิด Services NFS เพื่อให้เครื่อง Node ทั้งหมดเข้ามาเรียกใช้ VM Image จากเครื่อง Front End ได้ ดังนั้นในการขยายขนาด Stroage คุณสามารถเลือกใช้ Distributed Storage เพื่อเพิ่มจำนวน Node และ Storage ได้ในตัว (วิธีการนี้ไม่ขอพูดถึงในเนื้อหาครับ) สำหรับเครื่อง Cluster Node แนะนำให้เป็นเลขคู่ 2,4,6,8 เป็นต้น สำหรับ Cluster Node ที่เราจะติดตั้งมี 2 เครื่อง

การติดตั้ง OpenNebula ทำได้หลายวิธีตั้งแต่ติดตั้งจาก Source Code ไปจนถึงติดตั้ง Binary Package ของแต่ละ Linux Distribution ได้ สำหรับ Linux Distribution ที่เราจะมาติดตั้งกันวันนี้คือ Ubuntu Server 10.04 LTS ส่วนการติดตั้ง OpenNebula เราจะใช้ OpenNebula Express 2.0 เพื่อย่อยระยะเวลาและความยุ่งยากในการติดตั้ง มาลงมือกันเลย

ทำความเข้าใจก่อนลงมือ จากโครงสร้าง Cluster ข้างต้น เครื่อง Front End มี 2 NIC ขาหนึ่งต่อเครือข่ายภายนอก public network (eth0) ส่วนอีกใบหนึ่งจะเชื่อมต่อกับ Cluster Node (eth1) ที่เป็น private network ในเครือข่าย 192.168.2/24

เครื่อง Front End ติดตั้ง Ubuntu Server 10.04 LTS ในตอนที่ตัวติดตั้งถามชุดโปรแกรมที่ต้องการ ให้เลือกติดตั้งเฉพาะ OpenSSH server เมื่อติดตั้งเสร็จ ให้ Config NIC ใบที่ 2 เชื่อมต่อกับ Cluster Node ที่เป็น private network โดยใช้ IP Address 192.168.2.1 แก้ไขไฟล์ /etc/network/interfaces เพิ่มค่าลงไปดังนี้

auto eth1
iface eth1 inet static
address 192.168.2.1
netmask 255.255.255.0

เครื่อง Front End จะทำหน้าที่เป็น Router เพื่อ forward package จากเครื่องใน private network ออกไปภายนอกได้ ดังนั้นเราต้องตั้งค่าให้กับ Firewall เพื่อ forward package ดังนี้

แก้ไขค่า /etc/sysctl.conf กำหนดค่า ในส่วน net.ipv4.ip_forward ดังนี้

net.ipv4.ip_forward = 1

และทำ IP masquerading ทุกครั้งที่ boot ในไฟล์ /etc/rc.local:

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

ที่เครื่อง Node ติดตั้ง Ubuntu Server 10.04 LTS ในตอนที่ตัวติดตั้งถามชุดโปรแกรมที่ต้องการ ให้เลือกติดตั้ง OpenSSH server และ Virtual Machine host เมื่อติดตั้งเสร็จ ให้ Config NIC ใบที่ 1 (eth0) เป็น IP Address ดังนี้ 192.168.2.2 และ Gateway เป็นเครื่อง Front End แก้ไขไฟล์ /etc/network/interfaces เพิ่มค่าลงไปดังนี้

auto eth0
iface eth0 inet static
address 192.168.2.2
netmask 255.255.255.0
gateway 192.168.2.1

กลับไปที่เครื่อง Front End ให้ติดตั้ง OpenNebula โดยติดตั้งจาก OpenNebula Express ดังนี้

wget http://dev.opennebula.org/attachments/download/244/opennebula_express-2.0.tar.gz
tar zxvf opennebula_express-2.0.tar.gz
cd opennebula_express-2.0
./install

ตัวโปรแกรมจะให้เลือกการติดตั้งดังนี้

Select deployment type (press '0' to exit):
1) Ubuntu 10.04 - KVM - NFS
2) Ubuntu 10.04 - KVM - SSH
3) CentOS 5.5 - Xen - NFS
4) CentOS 5.5 - Xen - SSH

เลือกข้อ 1 เพื่อติดตั้ง OpenNebula โดยใช้ Ubuntu Server 10.04 LTS และใช้ KVM เป็น Hypervisor จากนั้นโปรแกรมจะถาม Network Address เพื่อกำหนดให้เครือข่ายใดเชื่อมต่อกับ NFS Server ได้ ให้ใส่ 192.168.2.0/24 จากนั้นรอติดตั้งจนเสร็จ

user@frontend:~$ sudo -iu oneadmin
oneadmin@frontend:~$ onevm list
ID USER NAME STAT CPU MEM HOSTNAME TIME

oneadmin@frontend:~$ onehost list
ID NAME RVM TCPU FCPU ACPU TMEM FMEM STAT

ถ้าได้ผลลัพท์ข้างต้น ถือว่าใช้ได้ครับ ;) ทีนี้ให้คัดลอกไฟล์ node-install.sh ไปยังเครื่อง Node แล้วสั่ง

./node-install.sh

เมื่อติดตั้งเสร็จ เครื่อง Node จะ mount ไปยัง NFS Server ที่เครื่อง Front-End ทีนี้ให้ Config Network Bridge ไปยัง eth0

แก้ไขไฟล์ /etc/network/interfaces แก้ไขในส่วน eth0 ให้เป็นดังนี้

# The primary network interface
auto eth0
iface eth0 inet manual

auto br0
iface br0 inet static
address 192.168.2.2
netmask 255.255.255.0
network 192.168.2.0
broadcast 192.168.2.255
gateway 192.168.2.1
bridge_ports eth0
bridge_fd 9
bridge_hello 2
bridge_maxage 12
bridge_stp off

ตอนนี้เราได้เครื่อง Node มาแล้ว 1 เครื่องสำหรับ Private Cloud ของเราแล้ว ทีนี้ให้คุณ copy ไฟล์ node-install.sh ไปยังเครื่อง Node เครื่องอื่นๆ และตั้งค่า Bridge ให้เรียบร้อย เมื่อได้เครื่อง Node ครบแล้ว ให้เพิ่ม Node ทั้งหมดลงใน Front End ดังนี้

oneadmin@frontend:~$ onehost create node01 im_kvm vmm_kvm tm_nfs
oneadmin@frontend:~$ onehost create node02 im_kvm vmm_kvm tm_nfs
oneadmin@frontend:~$ onehost create node03 im_kvm vmm_kvm tm_nfs
oneadmin@frontend:~$ onehost create node04 im_kvm vmm_kvm tm_nfs
oneadmin@frontend:~$ onehost list
ID NAME CLUSTER RVM TCPU FCPU ACPU TMEM FMEM STAT
0 node01 default 0 800 800 800 4057060 3916772 on
1 node02 default 0 800 775 700 4057060 3893936 on
2 node03 default 0 800 778 700 4057060 3893936 on
3 node04 default 0 800 800 800 4057060 3916772 on

ตอนนี้เราได้ Node เพื่อรองรับการ provisioning แล้ว แต่ตอนนี้ยังทำไม่ได้ครับ เราต้องเพิ่ม Virtual Network และ VM image กันก่อน เพื่อความสะดวกให้เอาไฟล์ตัวอย่าง ซึ่งเป็น ttylinux มาทดสอบดังนี้ ที่เครื่อง Front End ให้ download ttylinux มาดังนี้

mkdir -p templates/ttylinux
cd templates/ttylinux/
wget http://dev.opennebula.org/attachments/download/170/ttylinux.tar.gz
tar xvzf ttylinux.tar.gz

ให้คุณสร้างไฟล์ template ชื่อ vmlan.net สำหรับ VMs ดังนี้

NAME = "VM LAN"
TYPE = RANGED
BRIDGE = br0
NETWORK_ADDRESS = 192.168.2.128
NETWORK_SIZE = 126
NETMASK = 255.255.255.0
GATEWAY = 192.168.2.1
NS = x.x.x.x

ตรง NS ให้กำหนด IP Name Server ที่คุณต้องการใช้ จากนั้น register virtual network ดังนี้

oneadmin@frontend:~$ onevnet create vmlan.net
oneadmin@frontend:~$ onevnet list
ID USER NAME TYPE BRIDGE P #LEASES
0 username VM LAN Ranged br0 N 0

เมื่อลงทะเบียน VM LAN แล้วให้คุณสร้างไฟล์ template ชื่อ ttylinux.one สำหรับ Virtual Machine ดังนี้

NAME = ttylinux
CPU = 1
MEMORY = 128

DISK = [
source = "/home/oneadmin/templates/ttylinux/ttylinux.img",
target = "hda",
readonly = "no" ]

NIC = [ NETWORK = "VM LAN" ]

FEATURES=[ acpi="no" ]

GRAPHICS = [
type = "vnc",
listen = "0.0.0.0",
port = "5902" ]

เมื่อได้ไฟล์ template แล้วคุณสามารถสั่ง start vm ได้เลย ด้วยคำสั่ง

oneadmin@frontend:~$ onevm create ttylinux.one

เมื่อสั่ง start vm แล้วให้ดูสถานะของ VM ด้วยคำสั่ง onevm list ดังนี้

oneadmin@frontend:~$ onevm list

ID USER NAME STAT CPU MEM HOSTNAME TIME
0 oneadmin ttylinux runn 0 0 node04 00 00:00:19

จากข้อมูลข้างต้น VM ชื่อ ttylinux มีสถานะกำลัง running และใช้ เครื่อง Node เครื่องที่ 4 (node04) เป็นตัวประมวลผลอยู่ คุณอาจสงสัยว่าทำไม OpenNebula เลือกเครื่อง Node04 แทนที่จะเป็น Node01 ที่เป็นเครื่องแรก ก็เพราะว่า OpenNebula จะเลือก Node ที่มี resource เหลือมากที่สุดในขณะนั้นก่อน นั่นหมายความว่าคุณไม่จำเป็นต้องกำหนด Node ที่ต้องการ deploy VM เลย เพราะ OpenNebula จะเป็นผู้เลือกให้นั่นเอง

หากคุณต้องการเข้าใช้เครื่องให้คุณใช้ vncviewer ดังนี้

vncviewer node04:5902

สำหรับการติดตั้ง OpenNebula และการตั้งค่าพื้นฐานมีเพียงเท่านี้ ในตอนต่อไปจะเป็นการสร้าง VM Image เพื่อใช้งานใน Private Cloud ของเราครับ

สร้าง Cloud Infrastructure ด้วย OpenNebula มาถึงตอนที่ 3 แล้วหลังจากเราสร้าง Cluster ของ Private Cloud กันไปในตอนที่แล้ว ตอนนี้จะกล่าวถึงการสร้าง Services Image ให้กับ OpenNebula กันครับ OpenNebula ใช้เทคโนโลยีที่มีอยู่เข้ามาปรับใช้ได้อย่างลงตัว ไม่ว่าจะเป็นการใช้งาน Virtualization อย่าง Xen, KVM หรือ แม้กระทั่ง VMWare ผ่าน OpenNebula Driver การจัดการ Disk Image หรือ Service Image เราสามารถใช้ Image ได้หลากหลาย ไม่ว่าจะเป็น raw, qcow, qcow2, VirtualBox, หรือแม้กระทั่ง VMWare ได้เช่นกัน

ในตอนนี้เรามาสร้าง Service Images ด้วยวิธีง่ายๆ ที่คุณหรือใครๆ ก็ทำได้ผ่านทางโปรแกรม GUI โดยไม่ต้องจิ้มคำสั่งกันแล้ว ผมพยายามหาวิธีง่ายๆ ให้น่ะครับ :) วิธีนี้คือการใช้ Virt-Manager ครับ ท่านที่ใช้ Ubuntu Desktop ก็สั่งติดตั้ง Virt-Manager ผ่านทาง Software Center กันได้เลย

เมื่อติดตั้งเสร็จแล้วก็สร้าง VM แล้วติด Linux อะไรก็ได้ลงไปก็ได้ ของผมเป็น Ubuntu Server เลือกติด OpenSSH Server ลงไปด้วยนะครับ

เมื่อติดตั้งเสร็จแล้ว ให้ Stop VM แล้วใช้ Nautilus เข้าไปที่ /var/lib/libvirt/images คุณจะเห็นรายชื่อ Image ที่คุณสร้าง VM ไว้

ให้คุณคัดลอก Image ที่ได้ไปไว้ที่เครื่อง Front End แล้วสร้าง VM Template

NAME = ubuntu-server
CPU = 1
MEMORY = 128

DISK = [
source = "/home/oneadmin/templates/ubuntu/ubuntu.img",
target = "sda",
readonly = "no" ]

NIC = [ NETWORK = "VM LAN" ]

FEATURES=[ acpi="no" ]

GRAPHICS = [
type = "vnc",
listen = "0.0.0.0",
port = "5903" ]

จากนั้นสั่ง Create VM กันได้เลย

oneadmin@frontend:~$ onevm create ubuntu.one

เมื่อสั่ง onevm list คุณจะพบว่า VM รันขึ้นมาแล้วครับ ;) ใช้ vncviewer เข้าไปดูได้เช่นเดิม การสร้าง Service Image นี้เป็นวิธีง่ายๆ แต่ OpenNebula สามารถสอดแทรกอะไรที่มากกว่านี้เข้าไปที่ Image ขณะ Boot ได้ เช่น ssh key, ตั้งค่า IP Address อัตโนมัติ หรือแม้กระทั่งสั่งติดตั้งโปรแกรมเพิ่มเติมคุณก็สามารถทำได้ วิธีนี้เราเรียกว่าการแทรก Context ตัว Context จะเป็น config ที่เพิ่มเข้าไปใน VM template แต่ context จะถูกสร้างเป็น Disk Image ขณะ Start VM และกำหนดเป็น Drive CDROM รอการใช้งาน เมื่อ VM Boot ขึ้นมาเราสามารถหยิบเอาของจาก Context มาใช้ได้ผ่าน script ใน rc ขณะ boot ได้ เราเรียกว่า rc.context สำหรับ ท่านที่คุ้นเคยกับ Linux อยู่แล้ว คุณอาจจับ script context นี้ ใส่ลงใน rc.local ได้เลย มาแก้ไข VM template ของเรากันก่อนครับ เพิ่มส่วน context ลงไปดังนี้

CONTEXT = [
hostname = "$NAME",
ip_private = "$NIC[IP, NETWORK="VM LAN"]",
ip_public = "192.168.2.210",
files = "/home/oneadmin/templates/ubuntu/init.sh /home/oneadmin/templates/ubuntu/id_dsa.pub",
target = "sdc",
root_pubkey = "id_dsa.pub",
username = "ubuntu",
user_pubkey = "id_dsa.pub"
]

เขียน script สำหรับ init.sh ดังนี้

#!/bin/bash

if [ -f /mnt/context/context.sh ]
then
./mnt/context/context.sh
fi

if [ -n "$HOSTNAME" ]; then
echo $HOSTNAME > /etc/hostname
hostname $HOSTNAME
fi

if [ -n "$IP_PRIVATE" ]; then
ifconfig eth0 $IP_PRIVATE
fi

if [ -n "$IP_PUBLIC" ]; then
ifconfig eth0:1 $IP_PUBLIC
fi

if [ -n "$NETMASK" ]; then
ifconfig eth0 netmask $NETMASK
fi

if [ -f /mnt/context/$ROOT_PUBKEY ]; then
cat /mnt/context/$ROOT_PUBKEY >> /root/.ssh/authorized_keys
fi

if [ -n "$USERNAME" ]; then
useradd --create-home --shell /bin/bash --group admin $USERNAME
if [ -f /mnt/context/$USER_PUBKEY ]; then
mkdir -p /home/$USERNAME/.ssh/
cat /mnt/context/$USER_PUBKEY >> /home/$USERNAME/.ssh/authorized_keys
chown -R $USERNAME /home/$USERNAME/.ssh
chmod -R 600 /home/$USERNAME/.ssh
fi
fi

แล้วเอา script context ใส่ลงใน rc.local ของ Service Image ครับ

#!/bin/sh -e

mount -t iso9660 /dev/sdc /mnt

if [ -f /mnt/context.sh ]; then
./mnt/init.sh
fi
umount /mnt

exit 0

จากนั้นก็ลอง Create VM กันอีกรอบ เมื่อ VM เข้าสถานะ running แล้วให้ใช้ ssh remote เข้าไปดูครับ ถ้านึกไม่ออกว่า VM ได้ IP Address อะไรใช้คำสั่ง one show <ชื่อ VM ที่ต้องการ> หัวใจสำคัญอยู่ที่ init.sh ว่าเราจะให้ VM สร้างอะไรที่แตกต่าง อยากได้อะไรก็ใส่เข้าไปได้เลยครับ การเพิ่ม Context ดีกว่าสร้าง VM Image ขึ้นมาทึ่มๆ จริงมั๊ยครับ ;)

OpenNebula เป็นโครงการ Cloud Open Source ที่ได้รับความนิยมมากตัวหนึ่งเพราะความยืดหยุ่นและการใช้งานร่วมกับระบบอื่นๆ ได้ (ecosystem) นั่นหมายความว่าคุณสามารถติดตั้งให้ OpenNebula เป็น Cloud แบบใดก็ได้ ไม่ว่าจะเป็น Private Cloud, Public Cloud หรือ แม้กระทั่ง Hybridge Cloud การเชื่อมต่อ OpenNebula Cloud เราสามารถขยายขนาดออกไปได้เรื่อยๆ ไม่ได้ยึดติดว่าจะต้องเป็น Cloud Infra ที่ใช้ OpenNebula เหมือนกัน ในตอนนี้จะเป็นตอนสุดท้ายของเราครับ ในตอนสุดท้ายนี้คงไม่มีอะไรเป็นพิเศษ เพียงแต่อยากฝาก link ที่คุณสามารถใช้อ้างอิง เพื่อประยุกต์ใช้ OpenNebula ในการสร้างและจัดการ Cloud Infra ในรูปแบบ ที่คุณต้องการได้ โดยเข้าไปที่ OpenNebula Documentation ได้เลยครับ หน้าเดียวจบ ครบทุกอย่าง สำหรับ Web management console สำหรับ OpenNebula 2.0.x ยังไม่เรียบร้อยท่านที่สนใจช่วยทางทีม SARA พัฒนาเพิ่มเติมก็ร่วม contribute ได้ที่ Ecosystem ส่วน Management Console และ ท่านที่ใช้ Delta Cloud ห้ามพลาด OpenNebula Add-on ครับ

OpenNebula เป็นโครงการโอเพนซอร์สมีจุดประสงค์เพื่อสร้างเครื่องมือบริหารจัดการ Cloud Computing ที่มีความยืดหยุ่นในการขยายขนาด Data Center infrastructure ได้ง่าย ซึ่งมีการพัฒนามาจนถึงรุ่นที่ 2.0.1 แล้ว หลังจากโครงการนี้เดินมาในรูปแบบโอเพนซอร์สได้ระยะหนึ่งซึ่งผลงานของชุมชน OpenNebula.org และ C12G Lab ที่ช่วยกันพัฒนา เครื่องมือในการบริหารจัดการ Cloud Infra แบบ Open Source ก็ได้รับการตอบรับอย่างดี ไม่ว่าจะเป็น CERN, Chaina Mobile, ESAC, Nikhef, SARA และยังมีผู้พัฒนาต่อยอดจากโครงการนี้อีกมากเช่น StratusLab, Bon Fire, Reservoir, OCCI, D-Grid, 4 CaaSt เป็นต้น

OpenNebula ออกแบบมาเพื่อรองรับการใช้งานบน Infrastructure เดิมให้มากที่สุดซึ่งการออกแบบเน้นการเพิ่มหรือขยาย Infra ได้ยืดหยุ่น ซึ่งคล้ายคลึงกับการวางโครงสร้างในระบบคลัสเตอร์ทั่วไป จากความยืดหยุ่นคุณสมารถประยุกต์ OpenNebula เพื่อใช้จัดการ Cloud Infrastructure ในรูปแบบต่างๆ ได้ ไม่ว่าจะเป็น Private Cloud, Hybridge Cloud และ Public Cloud ในบทความนี้จะครอบคลุมเพียง Private Cloud เท่านั้น คุณสามารถอ่านเพิ่มเติมได้จากเว็บไซต์โครงการครับ

การติดตั้ง OpenNebula เพื่อสร้าง Private Cloud โครงสร้างการเชื่อมต่อจะใช้โครงสร้างเดิมเหมือนกับการเชื่อมต่อแบบคลัสเตอร์ทั่วไป ซึ่งมีเครื่อง front-end และเครื่อง node ที่จะให้ VM ไปทำงานบนนั้น ซึ่งเครื่อง node มีการเชื่อมต่อกับ front-end อย่างน้อย 1 เส้นดังภาพ

โครงสร้างอย่างง่ายสำหรับ OpenNebula มีดังนี้

  • Front-end สำหรับ run OpenNebula และ Cluster Services
  • Nodes เอาไว้ povision virtual machine ต้องสนับสนุน Hypervisor
  • Image repository เป็น storage แบบใดก็ได้เอาไว้เก็บ image ของ VM
  • OpenNebula daemon เป็น service หลักของระบบซึ่งจะจัดการ life-cycle ของ VMs และจัดการระบบอื่นๆ ใน Cluster เช่น network, stroage และ hypervisor เป็นต้น
  • Driver เป็นโปรแกรมที่ใช้เชื่อมต่อกับ cluster subsystem ในรูปแบบพิเศษเช่น hypervisor หรือ storage file system เป็นต้น
  • oneadmin ผู้ดูแลระบบ private cloud ซึ่งจะเป็นผู้จัดการ VM, Virtual Network, node และ users ในระบบ
  • Users ผู้ใช้ในระบบ OpenNebula สร้างและจัดการ virtual machine, virtual network ของตนเอง

ความต้องการของระบบ

Cluster Front-End

จะเป็นเครื่องที่เข้าถึง image repository ซึ่งควรจะมี storage ขนาดใหญ่เพื่อรองรับ VM images สำหรับ Private Cloud โดยทั่วไปจะเก็บ master image ซึ่งอาจจะ clone เมื่อสั่ง start VM เครื่อง front-end ควรวางแผนในเรื่องการจัดการ storge ด้วยซึ่งจะมากน้อยขึ้นอยู่กับจำนวน VM ที่ run อยู่บน cluster node สำหรับการติดตั้งเฉพาะ OpenNebula ใช้พื้นที่เพียง 10MB เท่านั้น

OpenNebula สามารถติดตั้วได้ 2 โหมด ดังนี้

  • system-wide : binary, log files และ configuration ทั้งหมดจะถูกติดตั้งและจัดการโดย root ซึ่งต้องใช้สิทธิ์ root ในการบริการจัดการ
  • self-contained : OpenNebula จะติดตั้งในที่ๆ กำหนดโดยระบบเอง ไม่จำเป็นต้องใช้สิทธิ์ root ในการบริหารจัดการ

Cluster Node

เครื่อง Node จะ run VMs ไม่ต้องการ storage เพิ่มเติมแต่อย่างใด ยกเว้นเครื่อง Node ไม่ได้ใช้ Share storage ร่วมกับ Node อื่นๆ ข้อมูล image จะเก็บไว้ที่เครื่อง Node แทน

Storage

เครื่อง front-end จะทำหน้าที่ export image repository ให้กับ cluster node ซึ่งขนาดของ storage ที่ใช้เก็บเป็นเรื่องสำคัญ ทั้งนี้ขึ้นอยู่กับจำนวน VM และขนาดของ image VM ด้วย ซึ่งการ start VM ตัว front-end จะ clone image ออกมาเพื่อใช้งานกับ VM ที่กำลังจะ start ดังนั้นคุณต้องมีพื้นที่เพียงพอที่ใช้เก็บ VM image ทั้งหมด

User Account

ผู้ดูแลระบบ OpenNebula จะใช้ชื่อบัญชีผู้ใช้ว่า oneadmin ซึ่งจะเป็นผู้จัดการ OpenNebula Services รวมถึงงานอื่นๆ ด้วย เช่น จัดการ VM, Virual Network, Image เป็นต้น คุณสามารถประยุกต์ใช้ NIS เข้ามาช่วยจัดการบัญชีผู้ใช้ของ OpenNebula ได้เช่นกัน

Network

สำหรับระบบเครือข่าย ไม่ได้มีอะไรเป็นพิเศษมากนัก หากต้องการได้ประสิทธิภาพให้กับ VM คุณควรจะมี NIC ที่มากกว่า 1 เชื่อมต่อไปที่ VM โดยการ bridge NIC เข้าไปที่ VM

Secure Shell Access

Front-End ทำงานกับ Node โดยผ่าน ssh โดยใช้ชื่อผู้ใช้ oneadmin ดังนั้นการเชื่อมต่อระหว่าง Front-End กับ Node ควรเชื่อมต่อแบบ ssh โดยใช้ ssh key ซึ่งการเชื่อมต่อแบบนี้ไม่จำเป็นต้องใช้ password อีกต่อไปแต่จะใช้ Key Authentication แทน

Hypervisor

เทคโนโลยี Virtualization จะต้องติดตั้งที่ cluster node ซึ่งบัญชีผู้ใช้ oneadmin ต้องสามารถควบคุมจัดการและติดตาม VM ได้ OpenNebula สามารถทำงานร่วมกับ Virtualization Technology ได้หลากหลาย เช่น Xen, KVM, VMWare เป็นต้น

เมื่อเข้าใจองค์ประกอบทั้งหมดแล้วเรามาเริ่มสร้าง Cloud Infrastructure แบบ Private Cloud กันในตอนถัดไป

Ignacio M. Llorente ออกมาให้ความคิดเห็นเกี่ยวกับการประกาศความร่วมมือในการพัฒนา OpenStack ซึ่งเป็น Cloud Platform แบบโอเพนซอร์สตัวใหม่ ที่เพิ่งประกาศเปิดตัวไปเมื่อไม่นานมานี้ ในฐานะทีม OpenNebula ออกมาแสดงความคิดเห็นว่า รู้สึกตื่นเต้นกับการพัฒนาของชุมชน Cloud Computing อย่างมาก และดีใจที่เห็นผู้ให้บริการรายใหญ่ เข้ามาร่วมมือในการพัฒนา อย่างไรก็ตามทีม OpenNebula เห็นด้วยกับความคิดเห็นในการพัฒนา OpenStack เพราะจะเป็นการเริ่มต้นในการกำหนดสถาปัตยกรรมเปิดสำหรับ Cloud Computing แบบ IaaS และเป็นโครงการโอเพนซอร์สอย่างแท้จริง ซึ่ง OpenStack ได้วิจารณ์โครงการโอเพนซอร์ส Cloud Computing ก่อนหน้าที่มักใช้โมเดลแบบ Open-Core ซึ่งเป็นการเริ่มต้นแบบปิด เนื่องจากบางโครงการมีการแบ่งรุ่น Enterprise และรุ่นโอเพนซอร์ส ซึ่งส่งผลให้ โครงการที่อยู่ในส่วนโอเพนซอร์สที่ไม่ใช่ Enterprise ขาดคุณสมบัติหลายอย่าง ทั้งในด้านการขยายขนาด การบริหารจัดการ Virtual Machine หลายพันเครื่องได้ การประกาศเปิดตัวของ OpenStack ทำให้ทีมงานของ OpenNebula ต้องมาประกาศจุดยืน เพื่อป้องกันไม่ให้เกิดความเข้าใจผิดของชุมชนผู้ใช้และการขยายตัวของชุมชนของ OpenNebula

ซึ่ง LLorente ชี้แจงว่า OpenNebula เป็นโครงการโอเพนซอร์ส Cloud Computing 100% ใช้สัญญาอนุญาติแบบ Apache-license OpenNebula ไม่ได้เป็น Open Core อย่างที่หลายคนเข้าใจ ถึงแม้ว่า C12GLabs จะเพิ่งก่อตั้งแต่หน้าที่เกี่ยวข้องทางด้านงานบริการทางด้าน syste integration และบริการด้านการซัพพอร์ททางด้านเทคนิคเป็นหลัก และ C12Gศฟิห ไม่ได้ให้บริการ OpenNebula รุ่น Enterprise แต่อย่างใด แต่ C12GLabs พัฒนาส่วนเพิ่มเติมและ patch OpenNebula ให้กับพาร์ทเนอร์และลูกค้าเท่านั้น และ patch ต่างๆ ได้ contribute กลับเข้ามาในโครงการ OpenNebula 100% ตามข้อกำหนดของสัญญาอนุญาติที่ผ่านการรับรองโดย OSI

OpenNebula ไม่ได้เป็นรุ่นที่มีคุณสมบัติแบบจำกัด ไม่แบ่งรุ่น Enterprise Edition C12Glabs เข้าร่วมพัฒนากับชุมชน OpenNebula อย่างต่อเนื่อง อีกทั้งยังสนับสนุน resource ให้กับทีมพัฒนาเพื่อให้งานพัฒนา Open Nebula เป็นเทคโนโลยีในการสร้าง Advance Cloud Infrastructure อย่างแท้จริง

และอีกหลายหลายประเด็น ที่ใดที่เป็นแฟน OpenNebula ติดตามเพิ่มเติมได้ที่ Ulitzer ครับ