หน้าแรก > คุย Linux > สร้างระบบ Private Cloud ด้วย Eucalyptus

สร้างระบบ Private Cloud ด้วย Eucalyptus

กระแส cloud computing กำลังมาแรง วันนี้เลยแนะนำการสร้าง private cloud ด้วย Eucalyptus เพื่อให้ผู้สนใจได้ทดลองใช้งานกันบน Debian ครับ(http://debianclub.org/node/575)

สำหรับ Eucalyptus แบ่งการทำงานออกเป็น 4 ส่วนหลักคือ

Cloud Controller (CLC) มีลักษณะเป็นเว็บเซอร์วิส เขียนด้วย Java เป็นส่วนที่มีไว้เพื่อติดต่อกับผู้ใช้งานระบบ และควบคุมการทำงานของคอมโพเนนท์อื่นๆ ติดต่อใช้งานผ่าน https พอร์ท 8443

Cluster Controller (CC) มีลักษณะการทำงานเป็นเซอร์วิส ทำงานที่พอร์ต 8774 ทำหน้าที่ควบคุมการทำงานของ Node Controller

Node Controller (NC) ควบคุมการทำงานของ Virtual Matchine (VM) ในแต่ละคอมพิวเตอร์ ที่งานที่พอร์ต 8775
Storage Controller (SC) เป็นส่วนเก็บข้อมูลของระบบใช้ Walrus เป็นหลัก
สำหรับวิธีการติดตั้งนี้จะแยกเครื่องคอมพิวเตอร์ที่ใช้ติดตั้งออกเป็นสองส่วนคือส่วนที่เป็น front-end และส่วนที่เป็น compute-node โดยที่เครื่องที่ทำหน้าที่เป็น front-end จะติดตั้ง CLC CC และ SC เอาไว้ และส่วนที่เป็น compute-node จะติดตั้ง NC สำหรับการติดตั้งนี้เน้นการติดตั้งตามเพกเกจที่มีอยู่ในคลังของเดเบียนเท่านั้น ทดสอบติดตั้งบน sid แต่ในขณะที่เขียนนี้เพกเกจ libhibernate3 ในคลัง sid ใช้การไม่ได้จึงเลี่ยงไปใช้ libhibernate3 ในคลังของ testing แทน เพกเกจกับคอมโพเนนท์สามารถจับคู่ได้ดังนี้
CLC คือ eucalyptus-cloud
SC คือ eucalyptus-sc และ eucalyptus-walrus
CC คือ eucalyptus-cc
NC คือ eucalyptus-nc
แนะนำให้ติดตั้งเครื่องสำหรับ compute-node ก่อน แล้วจะได้ติดตั้งและปรับแต่งเครื่อง front-end ในครั้งเดียว สำหรับเครื่อง compute-node สามารถติดตั้ง hipervisor ได้สองตัวคือ xen กับ kvm แต่ในที่นี้จะติดตั้งบน xen
การติดตั้งบนเครื่อง compute-node

# aptitude install xen-linux-system-kernel-xen-architechture xen-utils xen-utils xen-tools
# aptitude install eucalyptus-nc

สำหรับการติดตั้ง xen ให้เลือก kernel ตามที่ต้องการติดตั้ง และ architechture เป็น amd64 หรือ 686 หากติดตั้งตามที่แนะนำไว้ระบบจะติดตั้ง xen เวอร์ชัน 4 มาให้และการปรับแต่งค่าอาจแตกต่างกับที่เอกสาร Eucalyptus แนะนำบ้าง เมื่อติดตั้งเรียบร้อยแล้วให้ปรับแต่งค่าที่ไฟล์ /etc/xen/xend-config.sxp ให้ uncomment ตามที่ระบุไว้
(xend-http-server yes)
(xend-unix-server yes)
(xend-unix-path /var/lib/xend/xend-socket)
(xend-address localhost)
(network-script network-bridge)
(vif-script vif-bridge)
(dom0-min-mem 196)
(dom0-cpus 0)
(vncpasswd ”)

ส่วนสำคัญต่อมาที่ต้องปรับแต่งคือระบบเครือข่าย ในการติดตั้งนี้เลือกการปรับแต่แบบ SYSTEM Mode นั้นคือจะให้ทั้งเครื่อง front-end และเครื่อง compute-node ได้ dhcp จากระบบ ไม่มีการปรับแต่ง dhcp เอง ดังนั้นจึงต้องปรับแต่ง Eucalyptus ที่ไฟล์ /etc/eucalyptus/eucalyptus.conf ดังต่อไปนี้

HYPERVISOR=”xen” เลือกใช้งาน xen
VNET_BRIDGE=”eth0″
VNET_MODE=”SYSTEM”
ปรับแต่ง Axis2c ให้พร้อมใช้งานที่ไฟล์ /etc/axis2.xml ในส่วนนี้จะต้องทำทั้ง front-end และ compute-node ดังต่อไปนี้

ในส่วน ‘inflow’
 <!–phase name=”Security”/– >
เป็น
 <phase name=”Security”/>
 <phase name=”Rahas”/>

ในส่วนของ ‘outflow’ หากยังคอมเมนท์อยู่ให้เอาออก
 <!–phase name=”Security”/–>
เป็น
 <phase name=”Security”/>

หลังจากนั้นใหัรีบูตเขาสู่ debian ในโหมดของ xen สังเกตที่ bootloader เช่น Debian GNU/Linux, with Linux 2.6.32-5-xen-amd64 and XEN 4.0-amd64 เป็นต้น
รอจนบูตเรียบร้อยจากนั้นทดสอบดูว่า xen ทำงานเรียบร้อยดีหรือไม่
# virsh list
 Id Name                 State
———————————-
  0 Domain-0             running

ถ้าขึ้นอย่างขั้นต้นแสดงว่า xen ทำงานเรียบร้อยดี ต่อไปตรวจสอบ bridge interface ที่ xen สร้างขึ้น
# brctl show
bridge name   bridge id      STP enabled   interfaces
eth0      8000.080027bbd243   no      peth0

แสดงว่า bridge ไม่มีปัญหา ส่วนสุดท้ายตรวจสอบว่า NC ทำงานหรือไม่
$ ps aux | grep eucalyptus
root      1776  0.0  0.0  54624  1548 ?        Ss   17:26   0:00 /usr/sbin/apache2 -f //etc/eucalyptus/httpd-nc.conf
107       1795  0.4  2.4 269040 41956 ?        Sl   17:26   0:02 /usr/sbin/apache2 -f //etc/eucalyptus/httpd-nc.conf

หากปรากฎข้อความอย่างข้างต้นแสดงว่าน่าจะไม่มีปัญหาในการติดตั้ง เพื่อให้แน่ใจทดสอบตรวจสอบพอร์ตที่ใช้ติดต่อ NC ที่พอร์ต 8775
# netstat -an | grep 8775
tcp       0      0 :::8775                 :::*                    LISTEN
ขั้นสุดท้ายให้ตรวจสอบ log ที่ /var/log/eucalyptus/ สามไฟล์ คือ axis2c.log euca_test_nc.log และ httd-nc_error_log ว่ามีข้อผิดพลาดอะไรหรือไม่ ถ้าไม่มีแสดงว่าน่าจะใช้งานได้แล้วครับ

สำหรับขั้นตอนการติดตั้ง front-end นั้นไม่ยุ่งยากเหมือน NC แต่ต้องเข้าใจในทุกๆ คอมโพเนนท์ของ Eucalyptus เสียก่อน มีปัญหาเพียงส่วนเดียวคือ libhibernate3 ที่ไม่สามารถติดตั้งได้แต่ libhibernate3 จำเป็นสำหรับการติดตั้ง eucalyptus-cloud eucalyptus-sc eucalyptus-walrus ซึ่งเป็นส่วนสำคัญจึงแนนำให้เพิ่มคลังเก็บเพกเกจของ testing หรือ squeeze เข้าไปด้วย (สามารถอ่านเพิ่มเติมได้ที่ เรื่องของ repository) ให้ทดลองติดตั้งระบบโดยรวมก่อนเพราะ ณ วันที่ติดตั้งทาง debian อาจแก้ไขให้แล้ว

 aptitude install eucalyptus-cloud eucalyptus-sc eucalyptus-walrus eucalyptus-cc
หากติดตั้งไม่ได้ให้ตรวจสอบดูว่ามีปัญหาที่ libhibernate3 ใช้หรือไม่ถ้าใช้ให้ติดตั้ง libhibernate3 จาก testing

# aptitude install libhibernate3/testing
รอให้ระบบติดตั้งให้เรียบร้อย จากนั้นปรับแต่งคอนฟิกของ Axis2c แบบเดียวกับที่ปรับแต่งไว้ที่ compute-node แล้วสั่งให้ eucalyptus ทำงานคอมโพเนนท์อะไรบ้าง

# euca_conf –enable cloud –enable walrus –enable sc

เริ่มต้นการทำงานของเซอร์วิสต่างๆ
# /etc/init.d/eucalyptus-cloud restart
# /etc/init.d/eucalyptus-cc restart

ตรวจสอบว่าสามารถทำงานได้หรือไม่
$ ps aux | grep eucalyptus
root      1114  0.0  0.1  54888  1272 ?        Ss   09:07   0:05 /usr/sbin/apache2 -f //etc/eucalyptus/httpd-cc.conf
104       1117  0.3  4.3 1244704 44660 ?       Sl   09:07   2:31 /usr/sbin/apache2 -f //etc/eucalyptus/httpd-cc.conf

root      1191  0.0  0.0  16524   196 ?        Ss   09:07   0:00 eucalyptus-cloud –remote-dns –disable-iscsi -h / -u eucalyptus –pidfile //var/run/eucalyptus/eucalyptus-cloud.pid -f -L console-log
104       1192  3.0 70.2 1260572 721444 ?      Sl   09:07  21:03 eucalyptus-cloud –remote-dns –disable-iscsi -h / -u eucalyptus –pidfile //var/run/eucalyptus/eucalyptus-cloud.pid -f -L console-log
:
หากปรากฎ eucalyptus-cloud –remote-dns… และ apache2 -f //etc/eucalyptus/httpd-cc.conf แสดงว่า CLC และ CC ทำงานแล้ว แต่จากการติดตั้งในครั้งแรกจะไม่สามารถเริ่มการทำงานของ eucalyptus-cloud ได้ และไม่แสดงข้อผิดพลาดใน error log เนื่องจาก groovy.jar ที่อยูในไดเร็กทอรี /usr/share/eucalyptus ทำ symbolic link ผิดคือ groovy.jar -> ../groovy/embeddable/groovy-all*.jar ให้แก้ตามนี้ #589815
# mv /usr/share/eucalyptus/groovy.jar /usr/share/eucalyptus/groovy.jar.bkup
# ln -s /usr/share/java/groovy-all.jar /usr/share/eucalyptus/groovy.jar
# /etc/init.d/eucalyptus-cloud restart

ตรวจดูด้วยวิธีเดิมอีกครั้งว่าสามารถใช้งานได้หรือไม่ แล้วตรวจดูพอร์ตหรือ log ที่ /var/log/eucalyptus อีกครั้งเพื่อให้มั่นใจ
$ netstat -an | grep “8774”
tcp       0      0 :::8774                 :::*                    LISTEN     
$ netstat -an | grep “8443”
tcp        0      0 0.0.0.0:8443            0.0.0.0:*               LISTEN

ทดลอง register คอมโพเนนท์ต่างๆเพื่อให้สามารถใช้งานได้
# euca_conf –register-walrus {front end IP address}
# euca_conf –register-cluster {clustername} {front end IP address}
# euca_conf –register-sc {clustername} {front end IP address}
{front end IP address} เป็น IP Address ของงเครื่อง front-end
{clustername} ตั้งชื่อให้กับ cluster ซึ่งการที่เอา NC หลายๆ NC มาต่อกับ CC เราเรียกว่า cluster
ทุกขั้นตอนจะมีการถาม password ของ root เพื่อเป็นการยืนยันสิทธิ์และอนุญาตให้สร้าง key ที่ใช้สำหรับติดต่อกัน
ขั้นสุดท้ายคือการ register NC หากมีการแยก CC ออกจาก front-end ให้ใช้คำสั่งนี้ที่เครื่องที่ทำหน้าที่เป็น CC เท่านั้น
# euca_conf –register-nodes “{Node 0 IP address} {Node 1 IP address} … {Node N IP address}”

รีสตาร์ทเซอร์วิสต่างๆ อีกครั้งหลังจากลงทะเบียนคอมโพเนนท์ต่างๆ
# /etc/init.d/eucalyptus-cloud restart
# /etc/init.d/eucalyptus-cc restart
จากนั้นให้ทดสอบเปิดเว็บ https://front-end-ip:8443 เช่น https://172.30.143.162:8443 ขึ้นมาดูหากปรากฎหน้าเว็บแสดงว่า eucalyptus ทำงานแล้ว จากนั้นให้ log in ในชื่อ admin รหัสผ่าน admin เพื่อเข้าสู่การตั้งค่าครั้งแรก สามารถอ่านรายระเอียดเพิ่มเติมได้ที่ First-time Setup หากต้องการใช้งาน euca2ools เพื่อใช้งานระบบ cloud ให้ติดตั้งเพกเกจที่เครื่องคอมพิวเตอร์ที่เราใช้งาน ไม่จำเป็นต้องเป็นเครื่อง front-end

# aptitude install euca2ools
กลับไปที่เว็บเลือกแท็บ Credentials จากนั้นดาวน์โหลด Credentials ZIP-file ลงมาที่เรื่องคอมพิวเตอร์ ติดตั้ง certificates กับระบบ cloud
$ mkdir $HOME/.euca
$ unzip euca2-admin-x509.zip -d $HOME/.euca

ก่อนเริ่มใช้งานทุกครั้งให้พิมพ์ . $HOME/.euca/eucarc ก่อน แต่พิมพ์แค่ครั้งเดียวจากนั้นจะใช้คำสั่งอะไรที่ติต่อกับ cloud ก็ไม่ต้องพิมพ์อีก ยกเว้นว่าเปิดเทอร์มินัลใหม่
$ . $HOME/.euca/eucarc
$ euca-describe-availability-zones verbose

AVAILABILITYZONE   cc01   172.30.143.162
AVAILABILITYZONE   |- vm types   free / max   cpu   ram  disk
AVAILABILITYZONE   |- m1.small   0002 / 0002   1    128     2
AVAILABILITYZONE   |- c1.medium   0002 / 0002   1    256     5
AVAILABILITYZONE   |- m1.large   0001 / 0001   2    512    10
AVAILABILITYZONE   |- m1.xlarge   0001 / 0001   2   1024    20
AVAILABILITYZONE   |- c1.xlarge   0000 / 0000   4   2048    20

หากปรากฎข้อความดังข้างต้นแสดงว่าสามารถใช้งานได้แล้ว เนื่องจากระบบสามารตรวจสอบทรัพยากรของ cloud ได้แล้ว เราสามารถสร้าง VM แล้วทดลองสั่งให้ทำงานบนระบบ cloud ที่สร้างขึ้นได้ทันที

หมายเหตุ
คำแนะนำการติดตั้งนี้ทดสอบอยู่บน Virtualbox 3.2.6 โดยใช้ brigde interface
ติดตั้งโดยใช้ debian sid และเพกเกจจาก testing
การติดตั้ง network ของ eucalyptus ใช้ SYSTEM Mode หากต้องการติดตั้งในลักษณะอื่นสามารถอ่านได้ที่ Eucalyptus Network Configuration
xen ติดตั้งเวอร์ชัน 4 และต้องบูตตามที่แนะนำไว้เท่านั้น มิฉะนั้นจะไม่สามารถเริ่มการทำงานของ NC ได้
อ้างอิง
Eucalyptus Administrator’s Guide (1.6)
Eucalyptus User’s Guide (1.6)
Setting up Eucalyptus 1.6.2 with ORCA 2.x
sdayu’s blog

หมวดหมู่:คุย Linux
  1. ยังไม่มีความเห็น
  1. No trackbacks yet.

ใส่ความเห็น

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / เปลี่ยนแปลง )

Twitter picture

You are commenting using your Twitter account. Log Out / เปลี่ยนแปลง )

Facebook photo

You are commenting using your Facebook account. Log Out / เปลี่ยนแปลง )

Google+ photo

You are commenting using your Google+ account. Log Out / เปลี่ยนแปลง )

Connecting to %s

%d bloggers like this: