สร้างระบบ Private Cloud ด้วย Eucalyptus
กระแส cloud computing กำลังมาแรง วันนี้เลยแนะนำการสร้าง private cloud ด้วย Eucalyptus เพื่อให้ผู้สนใจได้ทดลองใช้งานกันบน Debian ครับ สำหรับ 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 ได้
อ้างอิง
- sdayu's blog
- Log in to post comments
![]() |
ลิขสิทธิ์ของบทความเป็นของเจ้าของบทความแต่ละชิ้น ผลงานนี้ ใช้สัญญาอนุญาตของครีเอทีฟคอมมอนส์แบบ แสดงที่มา-อนุญาตแบบเดียวกัน 3.0 ที่ยังไม่ได้ปรับแก้ |