จากตอนที่แล้วเราได้ทำความรู้จักกับ 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 ของเราครับ

Comments are closed.